LAMP调优

  • 屏蔽apache版本信息

[root@localhost extra]# vim /usr/local/apache2.4/conf/extra/httpd-default.conf  //搜索 ServerTokens Full
[root@localhost extra]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf  //加上以下两行
ServerTokens  Prod
ServerSignature Off

再次查看版本

编译之前进行如下操作,或进行重新编译,修改源码包下 include 目录下的 ap_releash.h 文件

[root@localhost httpd-2.4.25]# cd /usr/local/src/
[root@localhost httpd-2.4.25]# rm -rf httpd-2.4.25
[root@localhost httpd-2.4.25]# tar zxvf httpd-2.4.25.tar.gz
[root@localhost httpd-2.4.25]# cd httpd-2.4.25/

[root@localhost httpd-2.4.25]# vim include/ap_release.h
#define AP_SERVER_BASEVENDOR "apenglinux"  //服务的供应商名称
#define AP_SERVER_BASEPROJECT "web server" //服务的项目名称
#define AP_SERVER_BASEPRODUCT "web" //服务的产品名

#define AP_SERVER_MAJORVERSION_NUMBER 8 //主要版本号
#define AP_SERVER_MINORVERSION_NUMBER 1 //小版本号
#define AP_SERVER_PATCHLEVEL_NUMBER   2  //补丁级别
#define AP_SERVER_DEVBUILD_BOOLEAN    3 //

注:修改成自己想要的,然后编译安装之后,再对 httpd-default.conf 进行修改,对方就彻底不知道你的版本号了。

源码编译安装apache

[root@localhost httpd-2.4.25]# yum install openssl*
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/apache2.4-apeng --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-rewrite --enable-ssl --enable-mods-shared=most
--prefix=/usr/local/apache2.4-apeng  //指定安装路径
--enable-so //支持动态加载模块
--enable-rewrite //支持网站地址重定
--enable-ssl  //支持ssl加密

[root@localhost httpd-2.4.25]# make -j 4  //以4核同时编译  4个进程
[root@localhost httpd-2.4.25]# make install
[root@localhost httpd-2.4.25]# ls /usr/local/apache2.4-apeng/htdocs/
[root@localhost httpd-2.4.25]# ls /usr/local/apache2.4-apeng/conf/httpd.conf
[root@localhost httpd-2.4.25]# echo apache2.4-apeng >> /usr/local/apache2.4-apeng/htdocs/index.html 
[root@localhost httpd-2.4.25]# cp /usr/local/apache2.4-apeng/bin/apachectl /etc/init.d/apachectl-apeng
[root@localhost httpd-2.4.25]# /usr/local/apache2.4/bin/apachectl stop
[root@localhost httpd-2.4.25]# vim /etc/init.d/apachectl-apeng //加上以下两行
# chkconfig: 2345 64 36
# description: apache-apeng
[root@localhost httpd-2.4.25]# chkconfig --add apachectl-apeng
[root@localhost httpd-2.4.25]# chkconfig --list apachectl-apeng
apachectl-apeng	0:关	1:关	2:开	3:开	4:开	5:开	6:关
[root@localhost httpd-2.4.25]# vim /usr/local/apache2.4-apeng/conf/httpd.conf 
#ServerName www.example.com:80  取消前面的“#”
[root@localhost httpd-2.4.25]# /etc/init.d/apachectl-apeng start

测试

[root@localhost httpd-2.4.25]# vim /usr/local/apache2.4-apeng/conf/httpd.conf
Include conf/extra/httpd-default.conf
[root@localhost httpd-2.4.25]# vim /usr/local/apache2.4-apeng/conf/extra/httpd-default.conf
ServerTokens Prod
ServerSignature Off
[root@localhost httpd-2.4.25]# /etc/init.d/apachectl-apeng restart

  • 查看运行 apache 的默认用户
[root@localhost httpd-2.4.25]# ps aux|grep httpd
root      85106  0.0  0.1  70848  2740 ?        Ss   12:29   0:00 /usr/local/apache2.4-apeng/bin/httpd -k start
daemon    85477  0.0  0.1 425348  2696 ?        Sl   12:46   0:00 /usr/local/apache2.4-apeng/bin/httpd -k start
daemon    85478  0.0  0.1 359812  2168 ?        Sl   12:46   0:00 /usr/local/apache2.4-apeng/bin/httpd -k start
daemon    85479  0.0  0.1 359812  2176 ?        Sl   12:46   0:00 /usr/local/apache2.4-apeng/bin/httpd -k start
root      85567  0.0  0.0 112676   984 pts/1    S+   12:54   0:00 grep --color=auto httpd
[root@localhost httpd-2.4.25]# grep daemon /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin

  • 错误页面优雅设置
[root@localhost httpd-2.4.25]# vim /usr/local/apache2.4-apeng/conf/httpd.conf //加上 ErrorDocument 404 /404.html

[root@localhost httpd-2.4.25]# echo "404 go to home" > /usr/local/apache2.4-apeng/htdocs/404.html
[root@localhost httpd-2.4.25]# /etc/init.d/apachectl-apeng restart

访问一个不存在的页面

如果开启了虚拟主机,则可以这样设置

[root@localhost extra]# vim /usr/local/apache2.4-apeng/conf/extra/httpd-vhosts.conf  //在VirtualHost里添加如下内容
ErrorDocument 404 http://www.apeng.com  //url地址自定义,只要是状态码为404的跳到指定的页面
  • 启用压缩模块 mod_deflate

查看有没有安装mod_deflate

[root@localhost extra]# /usr/local/apache2.4-apeng/bin/apachectl -M |grep deflate

mod_deflate模块的安装

1.编译的时候加上 --enable-deflate即可实现安装 2.DSO 方式安装 扩展:DSO Dynamic shared object 动态共享对象。DSO 模块可以在编译服务器之后编译,也可以用 Apache 扩展工具(apxs)编译并增加

使用DSO方式安装,/usr/local/apache2.4-apeng/bin/apxs后跟参数详解

-c 此选项表明需要执行编译操作。它首先会编译c源程序(.c)files为对应
的目标代码文件(.c),然后连接这些目标代码和files中其余的目标代码文件(.c和.a),以生成动态共享对象dsofile.
如果没有指定-s选项,则此输出文件名则files中的第一个文件名推测得出,也就是默认mod_name.so.
-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
[root@localhost extra]# cd /usr/local/src/httpd-2.4.25/modules/filters/
[root@localhost filters]# /usr/local/apache2.4-apeng/bin/apxs -c -i -a mod_deflate.c
  • 压缩模块的配置

[root@localhost modules]# vim /usr/local/apache2.4-apeng/conf/httpd.conf
LoadFile /usr/lib64/libz.so
LoadModule deflate_module     modules/mod_deflate.so

在虚拟主机配置文件中添加如下内容

<IfModule mod_deflate.c>
        DeflateCompressionLevel 9
        SetOutputFilter DEFLATE
        DeflateFilterNote Input instream
        DeflateFilterNote Output outstream
        DeflateFilterNote Ratio ratio
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
    </IfModule>

  • 设置网页缓存时间 mod_expires

安装 mod_expires

[root@localhost ~]# cd /usr/local/src/httpd-2.4.25/modules/metadata/
[root@localhost metadata]# /usr/local/apache2.4-apeng/bin/apxs -c -i -a mod_expires.c

对全局,目录,虚拟主机设置

  • 建立长连接
[root@localhost docs]# vim /usr/local/apache2.4-apeng/conf/httpd.conf
KeepAlive On
KeepAliveTimeout 30  页面两次请求间隔不会超过30秒
MaxKeepAliveRequests 100
//一个建立好的Keep-Alive连接,允许发送的请求的个数。
// 一旦建立了连接, 要么就是个数达到了断开,要么就是等 keepAliveTimeout 时间到了断开连接

TimOut   默认 300秒
接受一个get请求耗费的总时间
post或put请求时,接受两个tcp之间的时间
应答时tcp包传输中两个ack包之间的时间
比如:apache需要把jsp文件传给后端tomcat服务器,而tomcat关了,这时这个链接需要等待的超时时间,由 TimeOut 控制。
  • 访问网站根目录下的所有内容
[root@localhost apeng1]# vim /usr/local/apache2.4-apeng/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin support@apenglinux.com
    DocumentRoot "/data/wwwroot/apeng1"
    ServerName www.apeng1.com
    ServerAlias www.aling.com www.xiaoming.com
    ErrorLog "logs/apeng1-error_log"
    CustomLog "logs/apeng1-access_log" common
    DirectoryIndex test.html   //定义默认访问的页面
    <Directory "/data/wwwroot/apeng1">
        AllowOverride All
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
   </Directory>
</VirtualHost>

创建这样的文件file.txt

批量创建目录

[root@localhost ~]# for i in $(cat /root/file.txt|awk '{print $1}'); do mkdir -p $i; done

访问 www.apeng1.com