Apache 2.2.22的安装

apache2.x增加如下特性:a.预派生(Profork) b.工作者(Worker) c.独立子进程(Perchild).
 
1.下载地址
 
2.       安装前准备

#> rpm -qa | grep httpd   //检查系统是否安装过httpd服务
 httpd-2.0.40-21
#> rpm -e httpd-2.0.40-21 //删除系统rpm包安装的apache

 
3.安装:

 
./configure  \
--prefix=/usr/local/apache \
--enable-cgi  \
--enable-so  \
--enable-proxy \
--enable-rewrite \
--enable-speling \
--enable-suexec \
--with-suexec-caller=daemon \
--with-suexec-docroot=/data
 
#> make
#> make install

Speling是忽略大小写,如果使用要在httpd.conf文件最后加入CheckSpelling on
 
设置httpd.conf

<Directory /> # 此处要根据实际目录
    Options -Indexes FollowSymLinks
    AllowOverride All
</Directory>

Options   -Indexes 是禁止目录浏览
4.改apache最大连接数
httpd.conf中找到,把前面的#去掉
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-vhost.conf
 
修改extra/httpd-mpm.conf

<IfModule mpm_prefork_module>
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>

 
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(压力测试时查看有多少个连接)
最高设置到20000,如果想要20000以上的并发数,那就只有从新编译了。
 
5.安装Cronolog,日志分割
 
 如果是centos可直接 yum install cronolog
 
5.1. 下载:
5.2. 安装
# ./configure
# make
# make install
 
5.3. 查看
# which cronolog
 
5.4. 配置httpd.conf
CustomLog "|/usr/local/sbin/cronolog /data/logs/access_log.%Y%m%d" combined
ErrorLog "|/usr/local/sbin/cronolog /data/logs/error_log.%Y%m%d"
 
5.5. 建虚机用户
useradd -g users -s /sbin/nologin -M web001
6.配置httpd.conf文件
去掉下行的# ,根据实际情况命名
ServerName www.example.com
 
虚拟主机站点根目录,可更改
<Directory "/usr/local/www">
 
7.虚拟主机的配置
以共享ip为例,httpd.conf最后添加

#VIRTUAL_CONFIG
 
NameVirtualHost 192.168.1.100
 
<VirtualHost 192.168.1.100>
DocumentRoot /usr/local/apache/htdocs
ServerName test.com
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
</VirtualHost>
 
<VirtualHost 192.168.1.101>
SuexecUserGroup web001 users
ServerAdmin webmaster@aaa.com
DocumentRoot /data/aaa/htdocs
ServerName aaa.com
ServerAlias aaaa.com
ServerAlias www.aaa.com
ScriptAlias /cgi-bin/ /home/aaa/cgi-bin/
DirectoryIndex index.php index.htm
</VirtualHost>
 
<VirtualHost 192.168.1.102>
SuexecUserGroup web002 users
ServerAdmin webmaster@bbb.com
DocumentRoot /data/bbb/htdocs            
ServerName bbb.com
ServerAlias bbbb.com       
ServerAlias www.bbb.com       
php_admin_value open_basedir "/tmp:/usr/local/www/web002"    //php权限 
php_admin_value safe_mode On  
ScriptAlias /cgi-bin/ /data/bbb/cgi-bin/
DirectoryIndex index.php index.htm
</VirtualHost>