LAMP-Apache 优化

1.配置cronolog进行日志轮询
Linux下运行的Web服务器Apache,默认日志文件是不分割的,
一个整文件既不易于管理,也不易于分析统计。
安装cronolog后,可以将日志文件按时间分割,易于管理和分析。

下载cronolog
cd /tuwei/tools
tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install

配置日志轮询

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
添加以下内容 %w表示按周轮询
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache2/log/accesswww%w.log" combined

2.错误页面优雅显示
可以将404等错误页面重新定向到网站首页或其他页面,提示用户体验
vim /usr/local/apache2/conf/httpd.conf

修改以下内容
ErrorDocument 404 http://blog.51cto.com/tuwei
提示:支持url和文件
拓展:apache的优雅显示
vim /usr/local/apache2/conf/httpd.conf

[root@lamp01 conf]# grep ErrorDocument httpd.conf
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
ErrorDocument 404 http://blog.51cto.com/tuwei
3.mod_deflate文件压缩功能

Gzip的思想就是把文件现在服务端进行压缩,然后再传输。

添加以下内容到虚拟主机,可以在http.conf最后加入
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
#LogFormat '"%r" % {outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate
</ifmodule>
4.mod_expires缓存

5.更改apache的默认用户 实际工作中最好改为别人不知道的用户
useradd -M -s /sbin/nologin xxx
6.worker模式,提升并发数
7.屏蔽apache版本等敏感信息
修改httpd.conf文件,打开httpd-default.conf模块
修改httpd-default.con文件,ServerSignature off以及ServerTokens Prod
b不过还是有server=Apache字样,若要完全去掉需重新编译
彻底去掉banner,修改httpd.h
8.apache目录文件权限设置(root 755,文件644)

提示:在网站架构中,应把资源文件,包括用户上传的图片、附件等和程序分离,
最好把上传程序也分离,这样就可以从容授权了

9.开启httpd-mpm.conf增加连接数
修改httpd.conf文件,打开httpd-mpm.conf模块
1.apache服务为worker模块的配置
默认为
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

修改后
<IfModule mpm_worker_module>
StartServers 5
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerChild 0
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

备注:MaxClients <=ServerLimit * ThreadsPerChild
2.apache服务为perfork模式,生产环境配置文件httpd-default.conf并发连接数配置

StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000

10.apache防盗链功能

11.禁止目录index

<Directory "/var/tuwei">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

或者

<Directory "/var/tuwei">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

12.禁止用户覆盖(重载)

AllowOverride None #禁止用户覆盖(重载)

加快服务器速度,因为它不再为每个请求寻找每个目录访问控制文件.htaccess
13.关闭CGI
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
..............................................................................
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
删除以上内容

14.避免使用.htaccess文件(分布式配置文件)

首先是性能考虑。如果AllowOverride启用了.htaccess文件,则apache需要在每个目录查找该文件,因此,
无论是否用到,启用该文件都会导致性能的下降。
其次是安全考虑,这样会允许用户自己修改服务器的配置。
默认在unix平台能够使用.htaccess来对目录权限进行规则定义,这是不安全的,建议关闭。
默认选项:
AccessFileName .htaccess
建议改为
#AccessFileName .htaccess
15.apache的安全模块
mod_evasive20 防DDOS mod_limitipconn(针对单站点)配置,mod_security2 防SQL注入等
make jail 是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写

mod_security http://www.modsecurity.org

apache的一个模块,具有请求过滤,日志审计等功能,可以防止SQL INjection,跨站脚本***

16.正确途径取得源代码,勤大apache补丁

17.apache日志授权 root 700权限

chown -R root.root logs
chmod -R 700 logs

18.系统内核参数优化

19.禁止php解析指定站点目录

20.使用tmpfs文件系统替代频繁访问的目录
php图片上传 php服务异常最终解决方案 mount tmpfs
编辑 /etc/rc.local
mount -t tmpfs tmpfs /tmp

21.尽可能减少http请求数

常用方法,合并js css以及image maps和css sprites等

工具网站 http://www.csssprites.com

22.使用CDN做网站加速

简单地讲,通过现有的internet中增加一层新的网络架构。将网站的内容发布到最接近用户的
cache服务器内,通过DNS负载均衡技术,实现用户就近访问cache服务器的内容,这样可以有效
减少数据在网络上传输的时间,提高速度。

23.apache程序架构优化
程序页面服务器
图片附件服务器
上传服务器
以上三者的功能尽量分离
a。分离最佳方式是分别使用独立服务器(需要程序支持)
b。次选方案在前端负载均衡器通过haproxy/nginx根据目录或者扩展名请求后面
对应的服务器
根据扩展名分发
根据url分发
其他的抛给web服务器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章