Linux实验5——Apache、虚拟主机

实验要求:

练习利用Apache服务建立普通Web站点、基于主机和用户认证的访问控制:
(1)使用本地yum源安装Apache软件。
(2)Apache服务器IP地址为192.168.232.132,使用域名www.rj.com进行访问。
(3)网站根目录为/data/web_data。
(4)网站首页为index.html,内容是“Welcome to 2019 Computer Network Application contest!”。
(5)使用三种方式搭建虚拟主机。

=======================

【一】准备工作:Apache服务器的启用

(1)检测Apache

rpm -qa | grep httpd		#查看是否安装上了httpd服务

安装Apache:
way1:yum命令,直接从网上软件仓库安装

yum list httpd
yum install httpd.x86_64

way2:安装rpm包

rpm -ivh [包名]

安装多个rpm包时要注意顺序,因为包之间有依赖关系。

mailcap-xxx.rpm
htttp2.4.6
……
【一共6个rpm包。这里po主不记得那6个包名分别是什么了,下次知道了补上。】

(2)查看Apache服务状态、启动

#所有服务器的状态查看、重启命令都是一样的

systemctl status httpd			#查看状态
systemctl start httpd			#启动

Linux实验5——Apache、虚拟主机_第1张图片
(要显示为Active)

开启服务后,首先要检验物理机和虚拟机之间是否能ping通:

ping 192.168.232.132		#物理机去ping虚拟机
ping -c 3 192.168.232.1		#虚拟机ping物理机

要互相能ping通才行。
如果ping不通,物理机可以用ifconfig查看当前物理VMnet8地址,看看和虚拟机用ip addr查到的地址是否在同一网段。如果不在同一网段是ping不同的,最简单粗暴的方法是直接改物理机VMnet8的地址。

开启防火墙端口:

firewall-cmd --add-port=80/tcp

(显示success)
(在没开防火墙之前,浏览器是看不到东西的)

【补充】(↓以下命令为重启防火墙策略。但是不要更新策略了,有可能防火墙退回原来的状态,导致前面配置开启防火墙端口失效。)

#firewall-cmd --reload

【检测Apache服务器状态——用浏览器访问】
法1:打开浏览器,在地址栏输入:

http://192.168.232.132
192.168.232.132				#两种写法都可以

这里可能会出现的几种情况:
①如果配置好了,页面应该会这样显示:
Linux实验5——Apache、虚拟主机_第2张图片

②如果一直在转圈加载,很久之后显示无法访问,则很大可能是防火墙的问题,请重新配置一次防火墙:
在这里插入图片描述
Linux实验5——Apache、虚拟主机_第3张图片

法2:安装lynx,用lynx查看
lynx是Linux下一个终端字符界面下的浏览器,该界面下只能显示字符

yum list | grep lynx
yum -y install lynx.x86_64		#这里的lynx.x86_64上一条命令查到的包名(虽然我安装lynx的时候是直接写成了lynx成功了,但是不是所有的包都可以直接写其名。一定要查了再装)

lynx http://192.168.232.132		#用lynx访问Apache发布的网址

用lynx时正常查看的情况如下图:
Linux实验5——Apache、虚拟主机_第4张图片

=======================

【二】修改主配置文件

【在修改总配置文件httpd.conf之前,可以将配置文件做一个备份】

tar -cvf httpd.conf.tar httpd.conf

打开主配置文件httpd.conf:

[root@localhost ~]# vi /etc/httpd/conf/httpd.conf

修改内容:
①httpd服务的网站目录访问权限:
Linux实验5——Apache、虚拟主机_第5张图片
【备注】
如果不修改此处,在后续的虚拟主机配置中,浏览器可能会返回Forbidden
(比如我就在基于端口号的虚拟主机配置时碰到了)

②Web站点主目录:
这里需要改成我们需要建立Web站点的路径/data/web_data
Linux实验5——Apache、虚拟主机_第6张图片

③Web站点检索主页列表
在这里列出的站点,找不到第一个就找下一个打开
(在本实验中也不用改,因为一直用的就是index.html)
Linux实验5——Apache、虚拟主机_第7张图片

===================

【三】虚拟主机配置

法1:基于IP的虚拟主机配置

原理:此方法旨在通过修改ifcfg-ens33文件,以添加ip地址(这种方法添加ip地址是永久性的)

步骤
打开ifcfg-ens33文件(这个文件和网卡有关)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

*记不住具体路径的话,可以用find命令查:

[root@localhost ~]# find / -name ifcfg-ens33

修改ifcfg-ens33,改成下图形式:
Linux实验5——Apache、虚拟主机_第8张图片
↑修改的地方:
①ONBOOT:改为yes(开机启动)
②添加ip地址(像图上以IPADDR的形式写出。可以同时添加多个地址,但是必须以不同的名字列出,不能全部命名为IPADDR)
③添加GATEWAY(写物理机ifconfig查到的VMnet8的ip地址)
④添加NETMASK(ip地址的子网掩码)

重启网卡:(只有重启网卡了,刚才添加的ip地址才能生效)

[root@localhost ~]# systemctl restart network

(此命令在SSH远程操作有可能会卡住,所以这条命令最好在VMware里面完成,否则可能要重新连一次远程。)

重启之后,用ip addr命令查看ip地址,可以看到新添加的ip地址了。

创建新的根目录路径/data/web_data,然后在新路径中创建index.html:

[root@localhost ~]# mkdir -p /data/web_data		#参数-p:支持一次创建多级路径(不记得的话就一层一层地建吧)

[root@localhost ~]# echo "Welcome to 2019 Computer Network Application contest! " > index.html		#双引号中如果最后有感叹号!,则需要转义,否则不能正常显示。但是这里我懒,干脆直接在最后加了个空格(逃

???创建ip地址对应的目录、配置文件:

[root@localhost httpd]# mkdir vhost
[root@localhost httpd]# cd vhost
[root@localhost vhost]# vi 132.conf

增加132.conf内容:
Linux实验5——Apache、虚拟主机_第9张图片

打开主配置文件httpd.conf,并在结尾处添加如下信息:
在这里插入图片描述

重启服务使配置生效:

[root@localhost httpd]# systemctl restart httpd

再次访问192.168.232.132,就可以显示出index.html的内容了:
Linux实验5——Apache、虚拟主机_第10张图片

法2:基于端口号的虚拟主机配置

在主配置文件httpd.conf中添加:
Linux实验5——Apache、虚拟主机_第11张图片
解释一下:最后的10021和10022是待配置的两个端口号

(用win10的话)为了后续不报错,这里需要安装semanage:

[root@localhost ~]# yum provides semanage		#先查包名

[root@localhost ~]# yum -y install [root@localhost ~]# yum -y install policycoreutils-python-2.5-34.e17.x86_64		#再安装

用semanage查看已有端口:

[root@localhost ~]# semanage port -l | grep http

Linux实验5——Apache、虚拟主机_第12张图片

添加后续我们要用的端口号:

[root@localhost ~]# semanage port -a -t http_port_t -p tcp 10021
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 10022

**【备注】**本来是想添加8081和8082的,结果添加之后就不能正常重启httpd服务了,再用systemctl status httpd查状态,发现变成failed了。后来才发现是端口8081和8082都已经被占用了,所以后面改用成10021和10022

(这个问题很磨人……有空再补充写写)

建立基于端口号方式的虚拟主机存放站点的根目录,并创建首页index.html文件:

[root@localhost web_data]# mkdir 10021
[root@localhost web_data]# mkdir 10022
[root@localhost web_data]# echo "port 10021 Web Site." > 10021/index.html
[root@localhost web_data]# echo "port 10022 Web Site." > 10022/index.html

编辑每个端口号的不同配置文件:
(在httpd/vhost下)

Linux实验5——Apache、虚拟主机_第13张图片
Linux实验5——Apache、虚拟主机_第14张图片
这里的大致内容和基于ip方式的虚拟主机配置一样,只是多加了端口号。

设置防火墙,并重启防火墙和httpd服务:

[root@localhost web_data]# firewall-cmd --permanent --add-port=10021/tcp
success
[root@localhost web_data]# firewall-cmd --permanent --add-port=10022/tcp
success

[root@localhost web_data]#systemctl restart firewalld
[root@localhost web_data]# systemctl restart httpd.service

最后,可以显示了:
Linux实验5——Apache、虚拟主机_第15张图片
Linux实验5——Apache、虚拟主机_第16张图片

法3:基于域名方式的虚拟主机配置

在网卡上设置新的虚拟网卡地址(此处新建192.168.232.136。注意:这个只是临时ip,再次重启虚拟机之后就没有了,想要添加永久的ip/修改当前虚拟机的ip地址,请参考上文中修改ifcfg-ens33文件的方式)

[root@localhost ~]# ifconfig ens33:5 192.168.232.136/24

[root@localhost ~]# ip addr		#此时就可以查看到我们新建的临时ip了

用vi编辑/etc/hosts文件,在文件的最后添加信息:

192.168.232.136 www.rj.com		#前面是ip地址,后面是对应的域名

在根目录/data/web_data下,建立基于域名方式的虚拟主机存放站点,并创建首页index.html文件:

[root@localhost ~]# cd /data/web_data
[root@localhost ~]# echo "Here rjrj" > rj/index.html

编辑域名的配置文件:
Linux实验5——Apache、虚拟主机_第17张图片

测试虚拟主机主页,可以看到结果:
在这里插入图片描述
**【备注】**此处只能在虚拟机里查看,而不能在外部浏览器中查看(除非买了域名)

(curl需要安装才能用,相当于SSH中的浏览器)

你可能感兴趣的:(linux学习)