新闻中心

EEPW首页>嵌入式系统>设计应用> Linux网站架构系列之apache----调优篇

Linux网站架构系列之apache----调优篇

作者: 时间:2016-10-08 来源:网络 收藏

前面两篇博文讲解了apache的部署和配置等方面知识,本篇将为大家详细讲解生产环境中对apache服务各个方面的优化调试。

本文引用地址://m.amcfsurvey.com/article/201610/305551.htm

生产环境中,大家肯定不会部署了apache之后就完事拿去上线了。光杆子上战场等着完蛋的嘛!因此,不论从安全还是性能角度,我们必须在apache服务上线之前,对其做诸多的优化调试才行。因此,本篇笔者通过总结自己的学习和工作经验,归纳总结出的apache调优的20个小点。

本文篇幅有点长,本来想分开写了,后来想想还是放在一篇博文吧。因此,大家就担待担待吧。

环境:

CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化篇

apache版本:

apr版本:apr-1.4.8

apr-util版本:apr-util-1.5.2

pcre版本:pcre-7.8

源码包存放位置:/server/tools

源码包编译安装位置:/etc/local/软件名称

一、源码官方下,补丁及时打

正如我们在apache部署篇讲到的我们需要对下载的源码包进行验证一样,我们在挑选apache源码安装包的时候,一定要去官网,不要去乱七八糟的站点进行下载,防止源码包被别有用心的人动过手脚,导致后面对公司业务造成不必要损失。

另外为了apache的安全性和性能考虑,我们一定要多多关注apache的官网的补丁发布情况,一旦有新的补丁,我们一定要及早打上。特别是一些安全补丁,防止受到损失。

二、屏蔽apache版本等敏感信息

1)我们在apache主配置文件中,找到包含的行,并解开注释

[root@c64-web /]# grep ; /usr/local/apache/conf/

#Include conf/extra/

[root@c64-web /]# sed -i 's##Include conf/extra/; /usr/local/apache/conf/

注意:编译安装的情况下,只有此行解开注释了,后面的修改才能生效。

2)打开文件,修改如下两个地方

[root@sunsky /]# grep Server conf/extra/|grep -v #

ServerTokens full

ServerSignature Off

修改为

ServerTokens Prod

ServerSignature Off

经过上面的修改,当你在curl-Iwww.sunsky.pw的时候,还是会出现下面的信息

Server: Apache

彻底让版本等敏感信息消失

如果你需要彻底将版本之类的信息进行改头换面,你就需要在编译之前做准备或者进行从新编译了。在重新编译时,修改源码包下include目录下的ap_release.h文件

#define AP_SERVER_BASEVENDOR Apache Software Foundation #服务的供应商名称

#define AP_SERVER_BASEPROJECT Apache HTTP Server #服务的项目名称

#define AP_SERVER_BASEPRODUCT Apache #服务的产品名

#define AP_SERVER_MAJORVERSION_NUMBER 2 #主要版本号

#define AP_SERVER_MINORVERSION_NUMBER 4 #小版本号

#define AP_SERVER_PATCHLEVEL_NUMBER 6 #补丁级别

#define AP_SERVER_DEVBUILD_BOOLEAN 0 #

上述列出的行,我已经给出了注释,大家可以修改成自己想要的,然后编译安装之后,再对文件进行修改,对方就彻底不知道你的版本号了。

三、更改apache的默认用户

我们通过更改apache的默认用户,可以提升apache的安全性。这样,即使apache服务被攻破,黑客拿到apache普通用户也不会对系统和其他应用造成破坏。这里创建的apache用户,将用于对子进程和线程的控制。

[root@c64-web /]# useradd -M -s /sbin/nologin apache 创建apache用户

编辑apache配置文件,修改默认的用户。

[root@c64-web /]# vim /usr/local/apache/conf/

User apache #更改默认的daemon用户为apache用户

Group apache #更改默认的daemon用户为apache用户

四、apache目录及文件权限设置

在生产环境的网站架构中,我们应把资源文件,例如用户上传的图片及附件等和程序做好分离,最好是把上传程序也分离开来。这样才能更方便我们做好授权,保证apache服务和整个服务器安全。

这里我们设置apache的网站目录属主和属组是root,权限是755,文件的权限为644。

lrwxr-xr-x 1 root root 23 11月 5 02:04 apache -> /usr/local/apache-2.4.6

drwxr-xr-x 14 root root 4096 11月 5 12:37 apache-2.4.6

并且,在对日志的授权商,我们要将属主和属组都设置为root,权限设置为700。

drwx------ 2 root root 4096 11月 5 02:46 logs

由于apache日志的记录是由apache的主进程进行操作的,而apache的主进程又是root用户启动的,所以这里设置700是不影响日志记录了。这也是日志记录的最安全的方法。

五、配置cronolog进行日志轮询

由于apache自带的日志轮询工具rotatelogs,据专家说在进行日志切割时容易丢日志,因此我们通常使用cronolog进行日志轮询。

1、下载并安装cronolog

[root@sunsky /]# cd /server/tools/

[root@sunsky tools]# wget

[root@sunsky tools]# tar zxf cronolog-1.6.2.tar.gz

[root@sunsky tools]# cd cronolog-1.6.2

[root@sunsky cronolog-1.6.2]# ./configure

[root@sunsky cronolog-1.6.2]# makemake install

2、配置apache使用cronolog

由于实验用的apache开启了虚拟主机功能,所以以下范例配置都在虚拟主机中进行。

[root@sunsky cronolog-1.6.2]# vim /usr/local/apache/

将配置文件中的CustomLog和ErrorLog替换为下面的(由于我们要对多站点,所以这里要替换两个虚拟主机的,并且将日志存放名字做有效的区分才好)

CustomLog |/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log combined

ErrorLog |/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log

更多日志格式参考:

按天轮询(生产环境常见用法,推荐使用):


上一页 1 2 3 4 5 6 7 下一页

关键词:

评论


相关推荐

技术专区

关闭