说明:本次实验环境在VMware虚拟机中进行,加载的镜像为rhel-8.5-x86_64-dvd
1、搭建yum安装环境:
(1)使用命令: mount /dev/sr0 /mnt 将rhel-8.5-x86_64-dvd的镜像文件挂载到指定挂载点目录/mnt中。
(2)编辑yum的配置文件: cd /etc/yum.repos.d/然后再输入vim rpm.repo 写入以下代码,然后保存并退出。
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# cat rpm.repo
[baseos]
name=baseos
baseurl=/mnt/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=/mnt/AppStream
gpgcheck=0
(1)安装hppd服务: yum install httpd -y ,安装完成之后可以使用 yum info httpd 或者使用 rpm -qa | grep httpd 查看安装信息
(2)查看httpd服务是否运行: systemctl status httpd -l 我们发现该httpd服务是dead,没有运行。
使用命令:systemctl restart httpd 启动服务
以下图片是服务启动的情况
(1)使用命令:systemctl stop firewalld.service 关闭防火墙,然后查看防火墙的状态,发现防火墙已经关闭。
systemctl status firewalld.service查看防火墙的状态 | |
systemctl start firewalld.service启动防火墙 | |
systemctl stop firewalld.service关闭防火墙 | |
systemctl restart firewalld.service重启防火墙 | |
systemctl enable firewalld.service开机启动防火墙 | |
systemctl disable firewalld.service开机禁用防火墙 | |
systemctl is-enabled firewalld.service查看防火墙是否开机启动 |
(2)selinux类似于一个内核层的防火墙,也相当于一个安全机制,因此我们也需要关闭它。使用命令getenforce 可以查看状态,以下图片为关闭状态。使用命令setenforce 0 关闭。
关闭防火墙后,我们在pc机上输入虚拟机当前的IP地址192.168.204.130,然后回车。最后会看到以下界面。
#vim /etc/httpd/conf/httpd.conf
将主配置文件中:默认ServerName相当于一个域名,它是通过主机的域名去访问,但由于我们是基于IP去访问,因此我们有必要将域名改为IP地址格式的就可以。添加黄线的内容
使用命令: vim index.html 我们随便写一句话:“helloworld!”保存后退出。然后我们重新使用浏览器访问IP:192.168.112.132,发现此时浏览器显示的就是我们编辑的文本文档。
注意:
Q1:为什么静态页面是在/var/www/html目录?
A:因为在当前的主配置文件中,document中已经指定。
Q2:为什么静态网页是index.html
A:这是由于目录标签指定的目录索引文件必须是index.html
[root@localhost bao]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# ll
-rw-r--r--. 1 root root 2926 Jul 12 2021 autoindex.conf
-rw-r--r--. 1 root root 400 Jul 12 2021 README
-rw-r--r--. 1 root root 1252 Jul 12 2021 userdir.conf
-rw-r--r--. 1 root root 283 Apr 3 04:45 vhost.conf
-rw-r--r--. 1 root root 574 Jul 12 2021 welcome.conf
配置虚拟主机
进入/etc/httpd/conf.d/此路径,对vhost.conf文件进行配置
[root@localhost bao]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# vim vhost.conf
vhost.conf文件配置内容
192.168.204.130为 主机的ip地址,配置时自主选择填写主机地址
192.168.204.131为新添加的虚拟IP地址
/www>
allowoverride none
require all granted
</directory>
.168.204.130:80>
servername 192.168.204.130
documentroot /www/130
</virtualhost>
.168.204.131:80>
servername 192.168.204.131
documentroot /www/131
</virtualhost>
增加192.168.204.131这个地址
nmcli connection modify ens160 +ip4.adresses 192.168.204.131
nmcli connection up ens160
[root@localhost conf.d]nmcli connection modify ens160 +ip4.adresses 192.168.204.131
[root@kittod conf.d]# nmcli connection up ens160
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/6)
echo命令:书写游览器显示的内容
[root@localhost html]# echo 网页显示内容> /www/端口号/index.html
[root@localhost conf.d]# cd /var/www/html/
[root@localhost html]# echo 130 > /www/130/index.html
每次使用httpd服务改变网页输出内容先关闭selinux防火墙状态
使用命令 setenforce 0
若未关闭,网页将无法显示内容
[root@localhost html]# getenforce
Enforcing
[root@localhost html]# setenforce 0
getenforce 命令是单词get(获取)和enforce(执行)连写,可查看selinux状态,与setenforce命令相反。
setenforce 命令则是单词set(设置)和enforce(执行)连写,用于设置selinux防火墙状态,如: setenforce 0用于关闭selinux防火墙,但重启后失效
此处的8080和9090为添加的端口号
mkdir 8080
mkdir 9090
[root@localhost conf.d]# cd //www
[root@localhost www]# mkdir 8080
[root@localhost www]# mkdir 9090
[root@localhost www]# ll
total 0
drwxr-xr-x. 2 root root 24 Mar 27 06:05 130
drwxr-xr-x. 2 root root 24 Mar 27 06:12 131
drwxr-xr-x. 2 root root 24 Apr 3 03:04 8080
drwxr-xr-x. 2 root root 24 Apr 3 03:05 9090
-rw-r--r--. 1 root root 0 Apr 3 03:13 vhost.conf
[root@localhost conf.d]# echo dao8080 > /www/8080/index.html
[root@localhost conf.d]# echo dao9090 > /www/9090/index.html
[root@localhost conf.d]# vim vhost.conf
vhost.conf新添加的内容
新添加//listen 8080
新添加//listen 9090
/www>
allowoverride none
require all granted
</directory>
.168.204.130:80>
servername 192.168.204.130
documentroot /www/130
</virtualhost>
.168.204.131:80>
servername 192.168.204.131
documentroot /www/131
</virtualhost>
新添加//
.168.204.130:8080>
servername 192.168.204.130
documentroot /www/8080
</virtualhost>
.168.204.130:9090>
servername 192.168.204.130
documentroot /www/9090
</virtualhost>
//
防火墙添加相关端口命令
格式:firewall-cmd --permanent --add-port=端口号/tcp
[root@localhost conf.d]#firewall-cmd --permanent --add-port=8080/tcp
[root@localhost conf.d]#firewall-cmd --permanent --add-port=9090/tcp
[root@localhost conf.d]#firewall-cmd --reload
添加账户:htpasswd -c /etc/httpd/zhanghao abc
[root@localhost bao]# htpasswd -c /etc/httpd/zhanghao abc
New password:
Re-type new password:
//此处为输入密码和重复一次密码
Adding password for user abc
[root@localhost bao]# htpasswd /etc/httpd/zhanghao tom
New password:
Re-type new password:
Adding password for user tom
[root@localhost bao]#
[root@localhost bao]#
[root@localhost bao]# cat /etc/httpd/zhanghao
abc:$apr1$C7h6PSxP$vmHE01TJd95tnPgDqKVtU.
tom:$apr1$rStiwlqE$rjSM5J8/w9Ff6tlbwX7A70
//查看该文档,abc和tom均为用户名称
[root@localhost bao]# mkdir /usr/local/mysecret/
[root@localhost bao]# echo this is mysecret > /usr/local/mysecret/index.html
[root@localhost bao]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# vim vhost.conf
listen 8080
listen 9090
/www>
allowoverride none
require all granted
</directory>
新增//
/usr/local/mysecret>
authtype basic
authname "This is a private directory,Please Login: "
authuserfile /etc/httpd/zhanghao
require user abc tom
</directory>
新增//
.168.204.130:80>
servername 192.168.204.130
documentroot /www/130
新增// alias /mysecret /usr/local/mysecret
</virtualhost>
.168.204.131:80>
servername 192.168.204.131
documentroot /www/131
</virtualhost>
.168.204.130:8080>
servername 192.168.204.130
documentroot /www/8080
</virtualhost>
.168.204.130:9090>
servername 192.168.204.130
documentroot /www/9090
</virtualhost>
[root@localhost conf.d]# systemctl restart httpd
//在进入游览器后在192.168.204.130后输入/mysecret
后进入/usr/local/mysecret/这个端口需要输入用户名和密码
用户名和密码为:
[root@localhost bao]# htpasswd -c /etc/httpd/zhanghao abc
New password:
Re-type new password:
此处创立的用户名和密码
用户名:abc
密码:自己设置的密码
[root@localhost conf.d]# mount /dev/sr0 /mnt 挂载光盘
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@localhost conf.d]# dnf install python3-mod_wsgi -y
安装py3
配置文件hello.wsgi
[root@localhost conf.d]# vim /var/www/cgi-bin/hello.wsgi
def application(environ, start_response):
status = '200 OK'
output = b'Hello World'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
[root@localhost ~]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# vim vhost.conf
listen 8080
listen 9090
/www>
allowoverride none
require all granted
</directory>
/usr/local/mysecret>
authtype basic
authname "This is a private directory,Please Login: "
authuserfile /etc/httpd/zhanghao
require user abc tom
</directory>
//新修改:documentroot /www/130 替换为
wsgiscriptalias / /var/www/cgi-bin/hello.wsgi
.168.204.130:80>
servername 192.168.204.130
wsgiscriptalias / /var/www/cgi-bin/hello.wsgi
alias /mysecret /usr/local/mysecret
</virtualhost>
.168.204.131:80>
servername 192.168.204.131
documentroot /www/131
</virtualhost>
.168.204.130:8080>
servername 192.168.204.130
documentroot /www/8080
</virtualhost>
.168.204.130:9090>
servername 192.168.204.130
documentroot /www/9090
</virtualhost>
[root@localhost conf.d]# systemctl restart httpd