📝理论讲解:
详细介绍
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。
注:图片来源百度百科
Apacheweb服务器服务器软件拥有以下特性:
支持最新的HTTP/1.1通信协议
拥有简单而强有力的基于文件的配置过程
支持通用网关接口
支持基于IP和基于域名的虚拟主机
支持多种方式的HTTP认证
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket]层(SSL)
提供用户会话过程的跟踪
支持FastCGI
通过第三方模块可以支持JavaServlets
📢如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
📖实验配置与实现:
一、挂载光盘
1)挂载云计算光盘
[root@centos03 ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 写保护,将以只读方式挂载 [root@centos03 ~]# ls /mnt httpd-2.2.17.tar.gz //挂载后查看是否有这个程序包
二、配置源代码Apache
1、安装Apache
1)解压Apache
[root@centos03 ~]# tar zxf /mnt/httpd-2.2.17.tar.gz -C /usr/src/ [root@centos03 ~]# cd /usr/src/httpd-2.2.17/
2)配置Apache
[root@centos03 httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
3)编译安装Apache
[root@centos03 httpd-2.2.17]# make && make install
4)检查是否安装成功
[root@centos03 httpd-2.2.17]# ls -ld /usr/local/httpd/ drwxr-xr-x 15 root root 175 12月 4 02:52 /usr/local/httpd/
2、配置Apache
1)优化Apache
[root@centos03 httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
2)生成服务配置文件
[root@centos03 httpd-2.2.17]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
3)添加执行权限
[root@centos03 httpd-2.2.17]# chmod +x /etc/init.d/httpd [root@centos03 httpd-2.2.17]# ls -ld /etc/init.d/httpd -rwxr-xr-x 1 root root 3422 12月 4 03:01 /etc/init.d/httpd
4)修改服务控制文件控制服务启动
[root@centos03 httpd-2.2.17]# vim /etc/init.d/httpd --- #!/bin/sh #chkconfig:35 80 21 #description:Apache Sever
5)添加系统服务
[root@centos03 httpd-2.2.17]# chkconfig --add httpd [root@centos03 httpd-2.2.17]# chkconfig --level 35 httpd on
6)启动Apache
[root@centos03]# systemctl start httpd
三、配置Apache虚拟主机
1、挂载系统光盘
1)卸载云计算光盘挂载系统光盘
[root@centos03]# umount /mnt/ //卸载云计算光盘 [root@centos03]# ls /mnt/ //查看是否卸载成功
[root@centos03 ~]# mount /dev/cdrom /mnt/ //挂载系统光盘 mount: /dev/sr0 写保护,将以只读方式挂载 [root@centos03 ~]# 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服务器
1)安装DNS程序包
[root@centos03 ~]# 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@centos03 ~]# rpm -ivh /mnt/Packages/bind-utils-9.9.4-50.el7.x86_64.rpm 警告:/mnt/Packages/bind-utils-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 准备中... ################################# [100%] 软件包 bind-utils-32:9.9.4-50.el7.x86_64 已经安装 [root@centos03 ~]# 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%]
2)设置开机自动启动
[root@centos03 ~]# systemctl start named [root@centos03 ~]# systemctl enable named
3)编辑主配置文件
[root@centos03 ~]# vim /etc/named.conf --- options{ listen-on port 53 {192.168.100.30;}; directory "/var/named/"; }; zone "bdqn.com" IN { type master; file "/var/named/bdqn.com.zone"; }; zone "accp.com" IN { type master; file "/var/named/accp.com.zone"; };
检查配置文件语法结构是否错误
[root@centos03 ~]# named-checkconf /etc/named.conf
4)编辑区域配置文件
[root@centos03 ~]# vim /var/named/bdqn.com.zone --- $TTL 86400 @ SOA bdqn.com. root.bdqn.com. ( 2022120310 1H 15M 1W 1D ) @ NS centos03.bdqn.com. centos03 A 192.168.100.30 www A 192.168.100.30
检查配置文件是否错误
[root@centos03 ~]# named-checkzone bdqn.com /var/named/bdqn.com.zone zone bdqn.com/IN: loaded serial 2022120301 OK
编辑accp区域配置文件
[root@centos03 ~]# cp /var/named/bdqn.com.zone /var/named/accp.com.zone //直接复制bdqn的区域配置文件 [root@centos03 ~]# vim /var/named/accp.com.zone :%s/bdqn.com/accp.com/g //进入accp区域配置文件里面在末行模式输入命令把bdqn.com替换位accp.com
替换前:
替换后:
查看accp区域配置文件是否错误
root@centos03 ~]# named-checkzone accp.com /var/named/accp.com.zone zone accp.com/IN: loaded serial 2022120301 OK
5)配置DNS
[root@centos03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 //进入网卡配置文件 --- TYPE=Ethernet BOOTPROTO=static NAME=ens32 DEVICE=ens32 ONBOOT=yes IPADDR=192.168.100.30 NETMASK=255.255.255.0 DNS1=192.168.100.30 //DNS指向本机的IP地址
重新启动网卡
[root@centos03 ~]# systemctl restart network //重新启动网卡 [root@centos03 ~]# cat /etc/resolv.conf //查看DNS是否配置成功 # Generated by NetworkManager nameserver 192.168.100.30
启动DNS服务
[root@centos03 ~]# systemctl start named //启动DNS服务 [root@centos03 ~]# netstat -anptu | grep named //查看DNS服务是否成功监听 tcp 0 0 192.168.100.30:53 0.0.0.0:* LISTEN 94045/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 94045/named tcp6 0 0 ::1:953 :::* LISTEN 94045/named udp 0 0 192.168.100.30:53 0.0.0.0:* 94045/named
查看是否能够成功解析
[root@centos03 ~]# nslookup www.bdqn.com Server: 192.168.100.30 Address: 192.168.100.30#53 Name: www.bdqn.com Address: 192.168.100.30 [root@centos03 ~]# nslookup www.accp.com Server: 192.168.100.30 Address: 192.168.100.30#53 Name: www.accp.com Address: 192.168.100.30
4、配置Apache虚拟主机
1)创建虚拟主机网站根目录
[root@centos03 ~]# mkdir -p /www/bdqncom [root@centos03 ~]# mkdir -p /www/accpcom
2)打包好的源代码上传到网站跟目录(可以使用WinSCP软件上传)
accp:
bdqn:
查看是否上传成功
[root@centos03 ~]# ls -R /www/
3)备份Apache主配置文件避免修改错误源文件丢失
root@centos03 ~]# cp /usr/local/httpd/conf/httpd.conf /usr/local/httpd/conf/httpd.conf.bak //备份主配置文件 [root@centos03 ~]# ls /usr/local/httpd/conf/ //查看是否备份成功 extra httpd.conf httpd.conf.bak magic mime.types original
4)修改Apache主配置文件
[root@centos03 ~]# vim /usr/local/httpd/conf/httpd.conf --- 1 ServerRoot "/usr/local/httpd" 2 Listen 80 3 <IfModule !mpm_netware_module> 4 <IfModule !mpm_winnt_module> 5 User daemon 6 Group daemon 7 </IfModule> 8 </IfModule> 9 ServerAdmin you@example.com 10 DocumentRoot "/usr/local/httpd/htdocs" 11 <Directory /> 12 Options FollowSymLinks 13 AllowOverride None 14 Order deny,allow 15 Deny from all 16 </Directory> 17 <Directory "/usr/local/httpd/htdocs"> 18 Options Indexes FollowSymLinks 19 AllowOverride None 20 Order allow,deny 21 Allow from all 22 </Directory> 23 <Directory "/www/"> 24 Options Indexes FollowSymLinks 25 AllowOverride None 26 Order allow,deny 27 Allow from all 28 </Directory> 29 <IfModule dir_module> 30 DirectoryIndex index.html 31 </IfModule> 32 <FilesMatch "^\.ht"> 33 Order allow,deny 34 Deny from all 35 Satisfy All 36 </FilesMatch> 37 ErrorLog "logs/error_log" 38 LogLevel warn 39 <IfModule log_config_module> 40 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 41 LogFormat "%h %l %u %t \"%r\" %>s %b" common 42 <IfModule logio_module> 43 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 44 </IfModule> 45 CustomLog "logs/access_log" common 46 </IfModule> 47 <IfModule alias_module> 48 ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/" 49 </IfModule> 50 <IfModule cgid_module> 51 </IfModule> 52 <Directory "/usr/local/httpd/cgi-bin"> 53 AllowOverride None 54 Options None 55 Order allow,deny 56 Allow from all 57 </Directory> 58 DefaultType text/plain 59 <IfModule mime_module> 60 TypesConfig conf/mime.types 61 AddType application/x-compress .Z 62 AddType application/x-gzip .gz .tgz 63 </IfModule> 64 Include conf/extra/httpd-vhosts.conf 65 <IfModule ssl_module> 66 SSLRandomSeed startup builtin 67 SSLRandomSeed connect builtin 68 </IfModule>
开启虚拟主机配置
在末行模式输入命令删除注释行
在末行模式输入命令删除空行
找到…标签,在命令行模式下输入6yy复制6行,然后输入p粘贴。
粘贴后修改为网站主页的根目录,然后保持退出
5、修改虚拟主机配置
1)备份避免修改错误源文件丢失
[root@centos03 ~]# cp /usr/local/httpd/conf/extra/httpd-vhosts.conf /usr/local/httpd/conf/extra/httpd-vhosts.conf.bak //备份原文件 [root@centos03 ~]# ls /usr/local/httpd/conf/extra/ //查看是否备份成功 httpd-autoindex.conf httpd-languages.conf httpd-ssl.conf httpd-dav.conf httpd-manual.conf httpd-userdir.conf httpd-default.conf httpd-mpm.conf httpd-vhosts.conf httpd-info.conf httpd-multilang-errordoc.conf httpd-vhosts.conf.bak
2)修改配置文件
[root@centos03 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf --- NameVirtualHost 192.168.100.30:80 <VirtualHost 192.168.100.30:80> //第一个虚拟主机监听的IP地址和端口 DocumentRoot "/www/bdqncom/" //虚拟主机网站根目录 ServerName www.bdqn.com //域名 ErrorLog "logs/dummy-host.example.com-error_log" //错误日志 CustomLog "logs/www.bdqn.com-access_log" common //成功日志 </VirtualHost> <VirtualHost 192.168.100.30:80> DocumentRoot "/www/accpcom" ServerName www.accp.com ErrorLog "logs/dummy-host2.example.com-error_log" CustomLog "logs/www.bdqn.com-access_log" common </VirtualHost>
在末行模式下输入命令删除注释行
检查配置文件是否修改错误
[root@centos03 ~]# httpd -t httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe38:619c for ServerName Syntax OK
启动Apache服务
[root@centos03 ~]# systemctl restart httpd //重启启动Apache服务 [root@centos03 ~]# netstat -anptu | grep httpd //查看是否成功监听80端口 tcp6 0 0 :::80 :::* LISTEN 95312/httpd
四、验证是否能够成功访问网站
1、使用win10虚拟机验证
1)配置IP地址和DNS
2)访问 http://www.bdqn.com
3)访问 http://www.accp.com