apache 2.0.47 安装笔记
cloud/2003.10.23
mail:flashc@21cn.com
欢迎转载,转载请保留以上信息,谢谢
个人水平有限,文中难有遗漏错误的地方,欢迎指出。笔记系后期整理,不能保证完全可用,主要是apache的conf文件,不知道是否有遗漏,请大家见谅。
解压软件
# tar zxvf httpd-2.0.47.tar.gz -C /setup
mod_limitipconn是一个限制同一IP连接次数的模块
# tar zxvf mod_limitipconn-0.22.tar.gz -C /setup
# cd /setup/httpd-2.0.47
给apache打补丁,支持同一ip连接的代理跟踪
# patch -p1 < ../mod_limitipconn/apachesrc.diff
# ./configure --prefix=/web/httpd \ 安装目录
--datadir=/www \ 发布网页目录
--enable-so \ 启用共享模块功能,安装php.mod_perl必需
--enable-deflate \ 启用压缩支持
--with-mpm=worker \ 启用线程和进程混合的多道处理模块worker,默认是prefock,即1.3里面的纯进程工作模式,注意,这里如果选择worker的话,那么后面编译PHP的时候是不能选择MM(使用内存来保存会话信息)的支持的! ZendPerformanceSuite只能工作在prefock工作模式!!!
--with-module=aaa:../mod_limitipconn-0.22/mod_limitipconn.c \ 静态编译mod_limitipconn模块到httpd内部(如果你想动态加载安装那就自己去看看README好了,很简单的)
--enable-forward 激活同一ip的代理连接跟踪,打的补丁也是针对这个的
# make
# make install
# cd /web/httpd
# bin/httpd -l
查看编译的模块,注意一下是否有mod_limitipconn的输出。
# tar zxvf mm-1.3.0.tar.gz -C /setup
# tar jxvf php-4.3.3.tar.bz -C /setup
# tar zxvf gd-2.0.15.tar.gz -C /setup
# tar zxvf jpeg-v6b.tar.gz -C /setup
# tar zxvf libpng-1.2.5.tar.gz -C /setup
# tar zxvf zlib-1.1.4.tar.gz -C /setup
# tar jxvf freetype-2.1.5.tar.bz2 -C /setup
# cd /setup/mm-1.3.0
# ./configure --prefix=/web/mm
# make && make install
# echo "/web/mm/lib" >> /etc/ld.so.conf
# ldconfig
# ldconfig -p | grep mm
查找mm库的输出
# cd ../libpng-1.2.5
# cp scripts/makefile.gcmmx makefile (makefile.gcmmx是针对MMX指令集优化的,具体看INSTALL文件)
# cd ../jpeg-6b
# mkdir /usr/local/man/man1
# make && make install && make install-lib
# cd ../gd-2.0.15
# ./configure
配置完成后,注意输出的信息是否如下:
Xpm库我总是安装不成功,不管它了,也很少用,一般PNG/JPEG/FREETYPE三个库打开支持就行了
** Configuration summary for gd 2.0.15:
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Xpm library: no
# make && make install
# cp gd.h /usr/local/lib \\编译PHP的时候会缺少这个文件出错
# cd ../zlib-1.1.4
# ./configure --shared \\shared生成zlib的共享库文件
# make && make install
# cd ../freetype-2.1.5.tar.bz2 -C /setup
# ./configure
# make && make install
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
# cd ../php-4.3.3
# # ./configure --with-apxs2=/web/httpd/bin/apxs
--enable-track-vars (打开变量跟踪功能)
--with-zlib-dir=/usr/local/lib
--with-gd=/usr/local/lib
--with-mm=/web/mm (如果你编译apache选择了worker的mpm模块,那么就不要加上mm的支持,mm是不支持线程工作的,否则编译的时候会出错的)
--enable-sysvmsg
--enable-sockets
--enable-sysvshm
--enable-sysvsem
--enable-gd-native-ttf
--with-ttf=/usr/lib
--disable-debug
--with-tiff-dir=/usr/lib
--with-jpeg-dir=/usr/local/lib
--with-png-dir=/usr/local/lib
--with-mysql=/web/mysql
--with-xml
--with-gdbm-dir=/usr/lib
--enable-ftp
--enable-inline-optimization
--with-gettext=/usr/lib
--enable-magic-quotes
--enable-safe-mode \\激活安全模式
--enable-bcmath \\打开bcmath函数支持
--enable-memory-limit=yes \\打开运行时内存限制
--enable-wddx \\wddx是一种网站间XML数据交换支持技术,原文意思大致如此
--enable-thread-safety \\配合apache的worker模块
--with-freetype-dir=/usr/local/lib \\打开freetype库支持
# make
# make install
# cp php.ini-recommended /usr/local/lib/php/php.ini
# vi php.ini \\适当的修改php.ini文件
safe_mode = Off \\是否使用安全模式
register_globals = Off \\是否允许注册全局变量
max_execution_time = 30 \\脚本最大执行时间
max_input_time = 60 \\脚本最大输出时间
memory_limit = 20M \\php使用的内存限制
post_max_size = 8M \\php最大传递数据
file_uploads = On \\是否允许http文件传输
upload_max_filesize = 2M \\http件传输文件大小限制
allow_url_fopen = On \\PHP的远程文件打开功能,如果服务器有多用户使用,最好关闭
session.save_handler = mm \\如果编译时加上了mm的共享内存支持,请修改成mm
error_reporting = E_ALL & ~E_NOTICE \\脚本出错报告格式,如果要加强安全,可修改成E_ALL
display_errors = On \\是否显示脚本执行错误
log_errors = On \\是否允许日志记录错误
error_log = /usr/local/apache/logs/php_error.log \\错误日志存放地址
disable_functions = phpinfo, get_cfg_var \\禁止phpinfo,get_cfg_var函数的使用,如果你的服务器就自己一个用就不需要了
# tar zxvf mod_perl-2.0-curent.tar.gz -C /setup
# cd /setup/mod_perl-1.99_10
# perl Makefile.PL MP_APXS=/web/httpd/bin/apxs
# make
# make install
# vi /web/httpd/conf/httpd.conf
\\修改apache配置文件
LoadModule php4_module modules/libphp4.so
LoadModule perl_module modules/mod_perl.so
AddDefaultCharset GB2312
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
PerlRequire "/web/httpd/conf/startup.pl"
AddType application/x-httpd-php .php
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
DirectoryIndex index.html index.cgi index.shtml index.php
<IfModule mod_deflate.c> \\压缩除图片以外的所有输出内容
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate
</IfModule>
ExtendedStatus On
<IfModule mod_limitipconn.c> \\mod_limitipconn模块的配置,适当的修改一下
<Location /somewhere>
MaxConnPerIP 3 \\最大ip并发连接数
NoIPLimit image/* \\对image目录下文件不限制
</Location>
<Location /mp3>
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video \\只对audio/mpeg类型文件限制
</Location>
</IfModule>
# vi startup.pl \\添加一个startup.pl文件预先加载perl模块
use Apache2 ();
# use lib qw(/home/httpd/perl);
# enable if the mod_perl 1.0 compatibility is needed
use Apache::compat ();
# preload all mp2 modules
# use ModPerl::MethodLookup;
# ModPerl::MethodLookup::preload_all_modules();
use ModPerl::Util ();
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Server ();
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use APR::Table ();
use ModPerl::Registry ();
use Apache::Const -compile => ':common';
use APR::Const -compile => ':common';
1;
还有就是zend optimizer和zend performance suite 的安装,很easy的,直接执行install就ok了, zend performance suite效果不错,使用他自带的测试程序测试加速很多,看上去感觉很舒服,虽然我不知道是否速度到底提升了多少,网上有下载的,去google搜索一下"zend performance suite 商业版"关键字就知道了,不过里面的license文件就不好找了,ttdown.com这个站上的license只有php加速和压缩的功能,没有缓冲功能模块的许可, zend performance suite 的压缩输出模块使用我发现phpbb的论坛没法正常工作了,建议还是不要使用.
JSP的配置如果是RESIN就很简单的,配置和APACHE的连接就configure --with-apxs/make/make install三部就ok了,然后修改一下resin的配置文件,修改其doc变量指向apache的web文档目录,比tomcat简单多了,我就不多说了,网上很多教程的。做好连接后要记得屏蔽resin的8080端口,因为从这个端口直接访问你的php这类脚本文件,程序源代码会直接显示出来的。