练习利用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)使用三种方式搭建虚拟主机。
=======================
(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 #启动
开启服务后,首先要检验物理机和虚拟机之间是否能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 #两种写法都可以
这里可能会出现的几种情况:
①如果配置好了,页面应该会这样显示:
②如果一直在转圈加载,很久之后显示无法访问,则很大可能是防火墙的问题,请重新配置一次防火墙:
法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发布的网址
=======================
【在修改总配置文件httpd.conf之前,可以将配置文件做一个备份】
tar -cvf httpd.conf.tar httpd.conf
打开主配置文件httpd.conf:
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
修改内容:
①httpd服务的网站目录访问权限:
【备注】
如果不修改此处,在后续的虚拟主机配置中,浏览器可能会返回Forbidden(比如我就在基于端口号的虚拟主机配置时碰到了)
②Web站点主目录:
这里需要改成我们需要建立Web站点的路径/data/web_data
③Web站点检索主页列表
在这里列出的站点,找不到第一个就找下一个打开
(在本实验中也不用改,因为一直用的就是index.html)
===================
原理:此方法旨在通过修改ifcfg-ens33文件,以添加ip地址(这种方法添加ip地址是永久性的)
步骤:
打开ifcfg-ens33文件(这个文件和网卡有关)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
*记不住具体路径的话,可以用find命令查:
[root@localhost ~]# find / -name ifcfg-ens33
修改ifcfg-ens33,改成下图形式:
↑修改的地方:
①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
打开主配置文件httpd.conf,并在结尾处添加如下信息:
重启服务使配置生效:
[root@localhost httpd]# systemctl restart httpd
再次访问192.168.232.132,就可以显示出index.html的内容了:
在主配置文件httpd.conf中添加:
解释一下:最后的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
添加后续我们要用的端口号:
[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下)
这里的大致内容和基于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
在网卡上设置新的虚拟网卡地址(此处新建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
测试虚拟主机主页,可以看到结果:
**【备注】**此处只能在虚拟机里查看,而不能在外部浏览器中查看(除非买了域名)
(curl需要安装才能用,相当于SSH中的浏览器)