详情介绍
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}]