APACHE的安装:
APACHE2.2.6是最新的版本,目前有2.0.x系列。2.2.x系列。目前现在是使用2.2.x版本中最高的2.2.6。如果使用2.0.x也一样。其实APACHE不需要追新,因为现在还有大型网站使用1.3.X版本。
安装就不说了。我们只是说下配置:
1、设置APACHE支持PHP5,采用模块的方式,将PHP做为APACHE的一个运行模块,这样好些。
找到APACHE安装目录下的 CONF文件夹下的httpd.conf文件。
找到有很多像下面这样的地方。
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
然后在最后加上下面2段:
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
第一段的意思是将PHP做为APACHE的模块,而指向的文件是 c:/php/php5apache2_2.dll 。再以前装IIS的时候我们指向的是php5isapi.dll。这是不同的。
第二段的最后一行的意思是,让APACHE服务器认为.php后缀的是一个WEB文档,而不是数据文档,这样好调用PHP解释器。
前面2行是加上是否允许GZIP压缩这些。
2、配置服务器端口
找到
Listen 80(如果你安装时候选择的8080后面就是8080)
这里你可以修改你APACHE服务的端口,注意这里使用了。,其他WEB服务器如IIS就不能使用。
3、制订网站根目录
找到:DocumentRoot 。。。。。。
把后面的修改成你自己的目录,注意 / 。必须和他的一样,比如我将WEB目录设置在 d:\web
那么我们应该设置为:DocumentRoot "c:/web"
注意 斜杠与WINDOWS下的习惯不一样。
另外因为APACHE2.2.6版本有个目录安全限制,我们现在需要取消他。
找到DocumentRoot下面的第一个<Directory /> ....... </Directory>将下面的一段该成这样的:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
Satisfy all
</Directory>
这样可以取消这个限制,要不然,你该了主目录,会提示403错误,访问会被拒绝。
4.伪静态:
Load Module rewrite_module modules/mod_rewrite.so
AllowOverride这个后面跟的 改成All
5.重写.htaccess代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.html
RewriteRule ^index.html$ index.php
</IfModule>
6.优化设置
6.1开启Gzip
开启该设置前需要启用2个模块
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
然后在httpd.conf的最后加上如下代码
###gzip
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<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
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>
##gzip
6.2隐藏Apache敏感信息
在httpd.conf文件最后方加上如下代理即可
#################去版本信息#############################
ServerTokens Prod
ServerSignature Off
#################去版本信息#############################
6.3设置Apache工作进程
开启conf/exrtra/http-mpm.conf
在http-mpm.conf文件中的最后加上如下代码
<IfModule mpm_winnt_module>
ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000
</IfModule>
ThreadLimit是占用系统线程数限制,最好加上,否则会产生内存溢出导致Apache当掉。
MaxRequestsPerChild我理解是请求的缓存数,太小了影响性能,占用cpu时间,太大了占用内存资源,想象一下你网站的文件个数,然后自己设定,只要不为0就可以,防止内存溢出
ThreadsPerChlid是apache的线程数,就是开了这么多的线程来等待响应客户端请求,需要根据apache-status实时的监控调节,大了会占用过多内存,小了会导致连接不上。而且应该同时修改httpd-default.php超时设置来配合。
开启conf/extra/httpd-default.conf
Timeout 15 (连接超时缺省为300,太大了,缩小会减少同时连接数,即上面占用的实际线程数)
KeepAlive On (开启可以提高性能,因为一个页面一般会有多个请求)
MaxKeepAliveRequests 50 (这个数目自己根据网页内容调节)
KeepAliveTimeout 5 (这个小于Timeout就行)
6.4设置并发量
下载mod_limitipconn.dll
需开启LoadModule status_module modules/mod_status.so
加入模块LoadModule limitipconn_module modules/mod_limitipconn.dll
在httpd.conf最后加上如下代码
ExtendedStatus On
<IfModule mod_limitipconn.c>
<Location /resource>
MaxConnPerIP 50
NoIPLimit image/*
</Location>
</IfModule>
里面/resource是制定限定IP的目录,然后MaxConnPerIP是限定每个IP的并发连接数,NoIPLimit image/* 是排除resource下不限定的目录
6.5防止CC攻击
下载mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径
LoadModule dosevasive22_module modules/mod_dosevasive22.dll
在httpd.conf最后方加上如下代码
##############防止CC攻击,设置IP黑名单####################
<Ifmodule dosevasive22_module>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</Ifmodule>
##############防止CC攻击,设置IP黑名单####################
其中DOSHashTableSize 3097 记录黑名单的尺寸
DOSPageCount 3 每个页面被判断为dos攻击的读取次数
DOSSiteCount 50 每个站点被判断为dos攻击的读取部件(object)的个数
DOSPageInterval 1 读取页面间隔秒
DOSSiteInterval 1 读取站点间隔秒
DOSBlockingPeriod 10 被封时间间隔秒
APACHE2.2.6是最新的版本,目前有2.0.x系列。2.2.x系列。目前现在是使用2.2.x版本中最高的2.2.6。如果使用2.0.x也一样。其实APACHE不需要追新,因为现在还有大型网站使用1.3.X版本。
安装就不说了。我们只是说下配置:
1、设置APACHE支持PHP5,采用模块的方式,将PHP做为APACHE的一个运行模块,这样好些。
找到APACHE安装目录下的 CONF文件夹下的httpd.conf文件。
找到有很多像下面这样的地方。
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
然后在最后加上下面2段:
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
第一段的意思是将PHP做为APACHE的模块,而指向的文件是 c:/php/php5apache2_2.dll 。再以前装IIS的时候我们指向的是php5isapi.dll。这是不同的。
第二段的最后一行的意思是,让APACHE服务器认为.php后缀的是一个WEB文档,而不是数据文档,这样好调用PHP解释器。
前面2行是加上是否允许GZIP压缩这些。
2、配置服务器端口
找到
Listen 80(如果你安装时候选择的8080后面就是8080)
这里你可以修改你APACHE服务的端口,注意这里使用了。,其他WEB服务器如IIS就不能使用。
3、制订网站根目录
找到:DocumentRoot 。。。。。。
把后面的修改成你自己的目录,注意 / 。必须和他的一样,比如我将WEB目录设置在 d:\web
那么我们应该设置为:DocumentRoot "c:/web"
注意 斜杠与WINDOWS下的习惯不一样。
另外因为APACHE2.2.6版本有个目录安全限制,我们现在需要取消他。
找到DocumentRoot下面的第一个<Directory /> ....... </Directory>将下面的一段该成这样的:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
Satisfy all
</Directory>
这样可以取消这个限制,要不然,你该了主目录,会提示403错误,访问会被拒绝。
4.伪静态:
Load Module rewrite_module modules/mod_rewrite.so
AllowOverride这个后面跟的 改成All
5.重写.htaccess代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.html
RewriteRule ^index.html$ index.php
</IfModule>
6.优化设置
6.1开启Gzip
开启该设置前需要启用2个模块
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
然后在httpd.conf的最后加上如下代码
###gzip
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<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
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>
##gzip
6.2隐藏Apache敏感信息
在httpd.conf文件最后方加上如下代理即可
#################去版本信息#############################
ServerTokens Prod
ServerSignature Off
#################去版本信息#############################
6.3设置Apache工作进程
开启conf/exrtra/http-mpm.conf
在http-mpm.conf文件中的最后加上如下代码
<IfModule mpm_winnt_module>
ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000
</IfModule>
ThreadLimit是占用系统线程数限制,最好加上,否则会产生内存溢出导致Apache当掉。
MaxRequestsPerChild我理解是请求的缓存数,太小了影响性能,占用cpu时间,太大了占用内存资源,想象一下你网站的文件个数,然后自己设定,只要不为0就可以,防止内存溢出
ThreadsPerChlid是apache的线程数,就是开了这么多的线程来等待响应客户端请求,需要根据apache-status实时的监控调节,大了会占用过多内存,小了会导致连接不上。而且应该同时修改httpd-default.php超时设置来配合。
开启conf/extra/httpd-default.conf
Timeout 15 (连接超时缺省为300,太大了,缩小会减少同时连接数,即上面占用的实际线程数)
KeepAlive On (开启可以提高性能,因为一个页面一般会有多个请求)
MaxKeepAliveRequests 50 (这个数目自己根据网页内容调节)
KeepAliveTimeout 5 (这个小于Timeout就行)
6.4设置并发量
下载mod_limitipconn.dll
需开启LoadModule status_module modules/mod_status.so
加入模块LoadModule limitipconn_module modules/mod_limitipconn.dll
在httpd.conf最后加上如下代码
ExtendedStatus On
<IfModule mod_limitipconn.c>
<Location /resource>
MaxConnPerIP 50
NoIPLimit image/*
</Location>
</IfModule>
里面/resource是制定限定IP的目录,然后MaxConnPerIP是限定每个IP的并发连接数,NoIPLimit image/* 是排除resource下不限定的目录
6.5防止CC攻击
下载mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径
LoadModule dosevasive22_module modules/mod_dosevasive22.dll
在httpd.conf最后方加上如下代码
##############防止CC攻击,设置IP黑名单####################
<Ifmodule dosevasive22_module>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</Ifmodule>
##############防止CC攻击,设置IP黑名单####################
其中DOSHashTableSize 3097 记录黑名单的尺寸
DOSPageCount 3 每个页面被判断为dos攻击的读取次数
DOSSiteCount 50 每个站点被判断为dos攻击的读取部件(object)的个数
DOSPageInterval 1 读取页面间隔秒
DOSSiteInterval 1 读取站点间隔秒
DOSBlockingPeriod 10 被封时间间隔秒