| 您的位置:首页 > 文档 > 编程技术 > |
文章分类热门文章 |
mod_perl升级实验创建:2005-10-28 00:00:00 作者:Unlinux 来自: http://www.Unlinux.com 一.说明 0.实际环境是:在一台主机上承担700台的虚拟主机,由于cgi程序对资源消耗太大导致性能不好; 现在使用mod_perl代替. 1.用mod_perl代替perl可提高perl脚本执行效率;增加php4支持可增加对.php3,.php的支持。 可以修改配置文件,使得原有的perl脚本,php3程序不做任何修改,减少了升级的工作量。 2.在perl.apache.org上提到多种mod_perl的方案, 如果哪位朋友作了实验,能否告知?(zhaoch@hichina.com)我将不胜感激. 二.httpd编译 1.系统环境:BSDI 4.1/i386/1G内存/Pentium II (696.41 MHz) 2.下载 make-3.79.1.tar,mod_perl-1.24_01.tar.gz,php-4.0.0.tar,apache_1_3_12_tar并在/usr/local/解开 3.配置libperl.so: ln -s /usr/libdata/perl5/i386-bsdos/5.00402/CORE/libperl.so /usr/lib/libperl.so; ldconfig; 这时ldconfig -p |grep libperl.so应该有libperl.so这一项. 4.安装make-3.79.1: cd /usr/local/make-3.79.1;./configure;make;make install; 这样make工具将安装在/usr/local/bin下.必须确保/usr/local/bin/make是缺省的make工具,或者以新版本 make工具 覆盖原make工具: mv /usr/bin/make make.old;mv /usr/local/bin/make /usr/bin/ 5. cd /usr/local/apache_1.3.12/src/include;修改 httpd.h "HARD_SERVER_LIMIT"为 1024. 6. cd /usr/local/apache_1.3.12; ./configure; 7. 如果mysql库文件版本太低将失败 libmysqlclient.a 及libmysqlclient.so* 需更新 找个最新版本的mysql将/lib/mysql/拷贝至/usr/mysql/lib/mysql: 8.安装php4: cd /usr/local/php4.0.0 ./configure --with-mysql=/usr/mysql --with-apache=/usr/local/apache_1.3.12 --enable-track-var make;make install 9.安装mod-perl: cd /usr/loal/mod_perl perl Makefile.PL APACHE_PREFIX=/usr/local/apache APACHE_SRC=../apache_1.3.12/src DO_HTTPD=1 USE_APACI=1 EVERYTHING=1 APACI_ARGS=--activate-module=src/modules/php4/libphp4.a --enable-suexec --suexec-uidmin=1000 --suexec-gidmin=100 make make install 10.查看suexec是否有效,mod_perl及php4是否安装成功:/usr/local/apache/bin/httpd -l 应该出现 mod_perl.c mod_php4.c suexec enabled 3行. 11. OK 三. httpd.conf修改清单 在原httpd.conf的基础上修改如下: # 1.主web服务器修改如下: 1)修改参数): KeepAlive On ====> KeepAlive Off MinSpareServers ====>50 MaxSpareServers ====>50 StartServers ====>50 MaxClients ====>128 MaxRequestsPerChild ====>50 Maxclients 150 2) AddHandler cgi-script .cgi ====> AddHandler perl-script .cgi AddHandler perl-script .pl 3) 为支持php3到php4的升级,做如下修改: AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php AddType application/x-httpd-php3-source .phps 4)为优化内存使用,添加一行: PerlRequire /usr/local/apache/libexec/startup.pl 并保证startup.pl放在相应目录下,权限对 2.每一个虚拟主机部分做如下修改: 将每个虚拟主机配置部分中的ScriptAlias一行扩展为2部分: 使用Alias 替代ScriptAlias; 增加对该cgi目录设置. 例如: 修改前: ScriptAlias /cgi-bin/ /usr/home/u640a1/cgi-bin/ 修改后: Alias /cgi-bin/ "/usr/home/u64091/cgi-bin/" setHandler perl-script PerlHandler Apache::Registry Options ExecCGI allow from all PerlSendHeader On 四.httpd参数调整说明 1. KeepAlive: 该参数决定每个httpd在处理完MaxRequestsPerChild个请求后等待多长时间退出. 缺省为On,在大用户时<<必须>>设置为 Off. 2. MinSpareServers MaxSpareServers StartServers 此三项现均设置为50.由于httpd with mod_perl启动时需动态加载大量模块, 从启动到可服务需5秒以上,所以必须在启动时即创建适量后台. 3. MaxRequestsPerChild: 该项确定每个httpd进程在处理多少个请求后退出. 缺省值为0(即:无限) 现改为50,是为了防止单个httpd无休止地服务可能带来地内存泄陋问题 4. MaxClients: 该参数决定httpd在启动时提供服务地并发进程数 原来为600,现在改为128. 这项参数的数值与内存数量密切相关.计算公式为: Total_RAM + Shared__RAM_per_Child * MaxClients MaxClients = --------------------------------------------- Max_Process_Size - 1 在安装mod_perl后,由于原来的cgi程序改为在httpd内部执行, 使得每个httpd在执行时的大小15M左右.其中有一部分是属于共享的. 在测试时发现如果MaxClients 还用600,则在40分钟内系统濒临DOWN机 5. PerlRequire startup.pl 这是为了在httpd初启动时加载常用的PERL模块,这样这些模块在后续的不同httpd 之间可以共享,从而使得每个httpd真正占用的内存量显著减少. 五.附录: 1.startup.pl use strict; #return if Apache->define(syntax_check); # Extend @INC if needed use lib qw(/dir/foo /dir/bar); # Make sure we are in a sane environment. $ENV{MOD_PERL} or die "not running under mod_perl!"; # For things in the "/perl" URL use Apache::Registry; # Load Perl modules of your choice here # This code is interpreted *once* when the server starts use LWP::UserAgent (); #use Apache::DBI (); #use DBI (); # Tell me more about warnings use Carp (); $SIG{__WARN__} = &Carp::cluck; # Load CGI.pm and call its compile() method to precompile # (but not to import) its autoloaded methods. use CGI (); CGI->compile(:all); #####在我做升级时,必须加上底下这行,不知别人怎么样. return 1; 转载自:http://www.unlinux.com/doc/program/20051106/7952.html 【评论】 【加入收藏夹】 【大 中 小】 【打印】 【关闭】 ※ 相关链接
|