Apache 深入优化
🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。
💻微信公众号:微笑的段嘉许
📌本文由微笑的段嘉许原创!
🎉欢迎关注🔎点赞👍收藏⭐留言📝
📆CSDN首发时间:🌴2023年2月日27🌴
✉️坚持和努力一定能换来诗与远方!
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
不要偷走我小火车哦~ ~ ~
📌导航小助手📌
 
  文章目录
  - Apache 深入优化
- @[toc]
 
- 详情介绍
- 📝实验配置与实验
- 一、在Centos01安装Apache服务,配置Apache服务设置网站主页
- 1、在Centos01上安装apache服务
- 2、配置网站
- 3、配置apache服务设置网站主页
- 二、在Centos02配置DNS服务器使用www.duanjiaxu.com
- 1、在Centos02上安装DNS服务
- 2、安装DNS服务
- 3、修改DNS配置文件
- 4、验证
 
- 三、在Centos01配置Apache优化prefork和worker工作模式压力测试验证
- 1、配置apache优化prefork工作模式
- 2、管理Apache的worker工作模式
 
 
文章目录
- Apache 深入优化
- @[toc]
 
- 详情介绍
- 📝实验配置与实验
- 一、在Centos01安装Apache服务,配置Apache服务设置网站主页
- 1、在Centos01上安装apache服务
- 2、配置网站
- 3、配置apache服务设置网站主页
- 二、在Centos02配置DNS服务器使用www.duanjiaxu.com
- 1、在Centos02上安装DNS服务
- 2、安装DNS服务
- 3、修改DNS配置文件
- 4、验证
 
- 三、在Centos01配置Apache优化prefork和worker工作模式压力测试验证
- 1、配置apache优化prefork工作模式
- 2、管理Apache的worker工作模式
 
⭐本文介绍⭐
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。本篇博客主要讲解Apache的网页优化与安全,Apache的理论讲解与具体安装可以参考源代码配置安装Apache
详情介绍
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
 Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
 Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
 本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
 Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。
📝实验配置与实验
拓扑图:

推荐步骤:
- 在 Centos01 安装 Apache 服务,配置 Apache 服务设置网站主页
- 在 Centos02 配置 DNS 服务器使用 www.duanjiaxu.com
- 在 Centos01 配置 Apache 优化 prefork 和 worker 工作模式配置压力测试验证
实验步骤:
一、在Centos01安装Apache服务,配置Apache服务设置网站主页
1、在Centos01上安装apache服务
1)从系统光盘切换到云计算光盘

2)挂载云计算光盘
[root@centos01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
3)解压httpd程序到/usr/src
[root@centos01 ~]# tar zxf /mnt/httpd-2.2.17.tar.gz -C /usr/src/
[root@centos01 ~]# cd /usr/src/httpd-2.2.17/
4)编译安装
[root@centos01 httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
[root@centos01 httpd-2.2.17]# make && make install
5)查看是否安装成功
[root@centos01 httpd-2.2.17]# ls /usr/local/
bin  etc  games  httpd  include  lib  lib64  libexec  sbin  share  src
6)生成服务控制文件
[root@centos01 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd		//生成服务控制文件
[root@centos01 ~]# chmod +x /etc/init.d/httpd 		//添加执行权限
[root@centos01 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/		//优化命令
2、配置网站
1)设置apache服务开机自启
root@centos01 ~]# vim /etc/init.d/httpd 		//进入apache服务控制文件
----
2 #chkconfig:35 80 21		//运行级 3,5 启动,启动优先权为80,停止优先权为21。
3 #description:Apache Server		//描述
---
[root@centos01 ~]# chkconfig --add httpd		//添加httpd服务
[root@centos01 ~]# chkconfig --level 35 httpd on		//设置开机自启
[root@centos01 ~]# httpd -t		//检查配置文件修改是否有误
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe25:91b5 for ServerName
Syntax OK
3、配置apache服务设置网站主页
1)创建网站根目录
[root@centos01 ~]# mkdir /www			//创建网站根目录
[root@centos01 ~]# echo "www.duanjiaxu.com" > /www/index.html		//设置网站主页
2)修改apache主配置文件
[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf			//进入主配置文件
 98 ServerName www.duanjiaxu.com:80	//域名和端口号
105 DocumentRoot "/www"			//网站根目录
132 <Directory "/www">			//授权网站根目录
133     Options Indexes FollowSymLinks134     AllowOverride None135     Order allow,deny136     Allow from all
137 </Directory>
143 <IfModule dir_module>
144     DirectoryIndex index.html
145 </IfModule>
3)重新启动apache服务
[root@centos01 ~]# httpd -t			//检查配置文件是否修改有误
Syntax OK
[root@centos01 ~]# /etc/init.d/httpd restart				//重新启动apache
httpd not running, trying to start
[root@centos01 ~]# netstat -anptu | grep httpd			//监听网卡
tcp6       0      0 :::80                   :::*                    LISTEN      92467/httpd 
4)配置IP地址
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
DNS1=192.168.100.20
[root@centos01 ~]# systemctl restart network			//重新启动网卡
[root@centos01 ~]# cat /etc/resolv.conf 				//查看DNS是否生效
# Generated by NetworkManager
nameserver 192.168.100.20
二、在Centos02配置DNS服务器使用www.duanjiaxu.com
1、在Centos02上安装DNS服务
1)配置IP地址和DNS
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20		//IP地址
NETMASK=255.255.255.0		//子网掩码
DNS1=192.168.100.20		//DNS
----
[root@centos02 ~]# systemctl restart network			//重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

2、安装DNS服务
1)挂载系统光盘
[root@centos02 ~]# mount /dev/cdrom /mnt/		//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/			//查看系统光盘是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
2)安装DNS程序包
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-32:9.9.4-50.el7             ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-chroot-32:9.9.4-50.el7      ################################# [100%]
3、修改DNS配置文件
1)修改DNS主配置文件
[root@centos02 ~]# echo "" > /etc/named.conf 		//清空主配置文件
[root@centos02 ~]# vim /etc/named.conf			//进入到主配置文件
----
options {
        listen-on port 53 { any; };
};
zone "duanjiaxu.com" IN {
        type master;
        file "var/named/duanjiaxu.com.zone";
};
[root@centos02 ~]# named-checkconf /etc/named.conf			//检查主配置文件是否修改正确

2)修改DNS区域配置文件
[root@centos02 ~]# vim /var/named/duanjiaxu.com.zone		//进入区域配置文件
----
$TTL            86400
@               SOA             duanjiaxu.com.  root.duanjiaxu.com. (
                2023020210
                1H
                15M
                1W
                1D
)
@               NS              centos02.duanjiaxu.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
[root@centos02 ~]# named-checkzone duanjiaxu.com /var/named/duanjiaxu.com.zone			//检查主配置文件是否修改成功
zone duanjiaxu.com/IN: loaded serial 2023020210
OK
----
[root@centos02 ~]# systemctl start named			//启动DNS服务
[root@centos02 ~]# systemctl enable named		//设置开机自启

4、验证
1)查看DNS服务是否已经启动
[root@centos02 ~]# netstat -anptu | grep named
tcp        0      0 192.168.100.20:53       0.0.0.0:*               LISTEN      42964/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      42964/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      42964/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      42964/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           42964/named         
udp        0      0 192.168.100.20:53       0.0.0.0:*                           42964/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           42964/named 
2)查看是否能够成功解析域名
[root@centos02 ~]# nslookup www.duanjiaxu.com
Server:		192.168.100.20
Address:	192.168.100.20#53
Name:	www.duanjiaxu.com
Address: 192.168.100.10
3)使用win10虚拟机验证

三、在Centos01配置Apache优化prefork和worker工作模式压力测试验证
1、配置apache优化prefork工作模式
1)查看apache默认的工作模式
[root@centos01 ~]# httpd -V
Server version: Apache/2.2.17 (Unix)
Server built:   Feb  7 2023 18:20:02
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.4.2, APR-Util 1.3.10
Compiled using: APR 1.4.2, APR-Util 1.3.10
Architecture:   64-bit
Server MPM:     Prefork			//默认Prefork工作模式
  threaded:     no
    forked:     yes (variable process count)
2)优化prefork工作模式
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf
注释掉52~58行
52 #    StartServers          2
 53 #    MaxClients          150
 54 #    MinSpareThreads      25
 55 #    MaxSpareThreads      75 
 56 #    ThreadsPerChild      25
 57 #    MaxRequestsPerChild   0
 58 #</IfModule>
---
36 <IfModule mpm_prefork_module>
 37     StartServers          5			//启动进程数
 38     Serverlimit           200			//最大进程数
 39     MinSpareServers       5			//最小空闲进程,空闲小于当前值自己创建
 40     MaxSpareServers      10			//空闲进程大于当前值自己kill掉
 41     MaxClients          150			//最大并发请求数必须前150处理完处理第151
 42     MaxRequestsPerChild   0			//每个子进程最大处理请求数0不限制,可以防止内存外溢 和负载下降可以减少子进程数 
 43 </IfModule>
3)查看prefork的进程信息
[root@centos01 ~]# ps -ef | grep http 
root 935 1 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start 
daemon 957 935 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start 
daemon 958 935 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start 
daemon 959 935 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start 
daemon 960 935 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start 
daemon 960 935 0 03:24 ? 00:00:00 /usr/local/httpd/bin/httpd -k start
4)进行压力测试
[root@centos01 ~]# ab -n14000 -c900 www.duanjiaxu.com/index.html
5)再查看Prefork的进程信息(进程数增加)
[root@centos01 ~]# ps -ef | grep httpd
root      92467      1  0 19:22 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    92651  92467  0 19:32 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    92652  92467  0 19:32 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    92653  92467  0 19:32 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    92654  92467  0 19:32 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    92655  92467  0 19:32 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    94815  92467  0 22:08 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95029  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95030  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95031  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95032  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95033  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95034  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95036  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95037  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95038  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95040  92467  0 22:24 ?        00:00:00 /usr/local/httpd/bin/httpd -k restart
daemon    95041  92467  0 22:24 ?        00:00:00 
2、管理Apache的worker工作模式
1)修改apache的工作模式worker
[root@centos01 ~]# rm -rf /usr/src/httpd-2.2.17/			//删除apache根目录下的所有文件
[root@centos01 ~]# tar zxf /mnt/httpd-2.2.17.tar.gz -C /usr/src/			//解压apache源代码程序
[root@centos01 ~]# cd /usr/src/httpd-2.2.17/				//切换到apache根目录
[root@centos01 ~]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --with-mpm=worker			//安装worker模块
[root@centos01 httpd-2.2.17]# make && make install		//编译安装
[root@centos01 ~]# httpd -l 			//检查是否安装成功

2)查看修改后的工作模式
[root@centos01 ~]# httpd -V

3)修改Apache主配置文件加载worker配置
[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf
---
339 Include conf/extra/httpd-mpm.conf
4)修改Apache工作模式配置文件
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf
---
注释掉36~43行
36 #<IfModule mpm_prefork_module>
 37 #    StartServers          5
 38 #    Serverlimit                  200
 39 #    MinSpareServers       5
 40 #    MaxSpareServers      10
 41 #    MaxClients          150
 42 #    MaxRequestsPerChild   0
 43 #</IfModule>
---
52 <IfModule mpm_worker_module>
 53     StartServers          2			//启动进程数
 54     ServerLimit         200			//最大进程数
 56     MaxClients          1200			//最大连接并大请求
 57     MinSpareThreads      25			//最小空闲线程
 58     MaxSpareThreads      75			//最大空闲线程
 59     ThreadsPerChild      25			//每个进程默认处理线程数
 60     MaxRequestsPerChild   75			//每个子进程最大处理请求数0不限制 
 61 </IfModule>

5)重新启动apache服务
[root@centos01 ~]# httpd -t				//检查配置文件修改是否有误
Syntax OK
[root@centos01 ~]# systemctl restart httpd			//重新启动apache服务
[root@centos01 ~]# netstat -anptu | grep httpd			//监听网卡
tcp6       0      0 :::80                   :::*                    LISTEN      73816/httpd    
6)查看线程数
[root@centos01 ~]# pstree -a
systemd─┬─ModemManager───2*[{ModemManager}] 
├─NetworkManager───2*[{NetworkManager}] 
├─atd 
├─auditd─┬─audispd─┬─sedispatch 
│ │ └─{audispd} 
│ └─{auditd} 
├─avahi-daemon───avahi-daemon 
├─chronyd 
├─dnsmasq───dnsmasq 
├─gssproxy───5*[{gssproxy}] 
├─httpd─┬─httpd 
│ └─2*[httpd───26*[{httpd}]] 
7)压力测试
[root@centos01 ~]# ab -n14000 -c900 www.duanjiaxu.com/index.html
---
  ├─httpd -k start
  │   ├─httpd -k start
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
  │   ├─httpd -k start
  │   │   └─26*[{httpd}]
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!





















