vhost是名字,.conf 是后缀名。名字可以任意取,后缀名不能改变
vim vhost.conf 内容:
/www/130和 /www/129 是我们自定义的两个目录
192.168.111.130 是我们之前1步骤查看到的IP
192.168.111.129 是我们添加的IP
写完配置之后,我们就可以发现多了一个vhost.conf 的文件,这个文件就是我们刚刚写的。
补充:
虚拟主机和虚拟机不是一回事
虚拟主机是:
servername 192.168.24.130
documentroot /www/130
virtualhost>
虚拟机是:
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.111.129/24
[root@localhost ~]# nmcli connection up ens160
添加的IP192.168.111.129是vhost中写的IP
看下图,可以发现,已经成功添加了IP192.168.111.129
[root@localhost ~]# systemctl restart httpd 重启一下配置
[root@localhost ~]# netstat -lntup | grep httpd 查看
[root@localhost ~]# mkdir /www/130
[root@localhost ~]# mkdir /www/129
[root@localhost www]# echo welcome to 130 > /www/130/index.html
[root@localhost www]# echo welcome to 129 > /www/129/index.html
由上图我们可以看出,已经成功创建了/www/130和/www/129这俩个目录,这是步骤1.2中配置文件写的目录。
并且已经在相应的目录下的index.html 中写下了相应的内容
看网页是否会显示之前我们写的welcom to 130
可以看出没有显示,说明出了问题,现在来查看问题出在哪,如果没有问题的伙伴们,这个实验就成功了。
[root@localhost 130]# systemctl status httpd 查看httpd服务状态
由图片可知,我们写的两个目录都不存在,这时我们重启一下httpd服务,再次查看状态
[root@localhost 130]# systemctl restart httpd
[root@localhost 130]# systemctl status httpd
发现报错没有了。但是在网页中查看,还是没有看到我们的内容welcome to 130,继续排错。
查看日志:
[root@localhost 130]# tail -f /var/log/httpd/access_log
输入这行命令之后,刷新网页,红色的部分就是刷新网页之后显示的,发现也没什么错误
查看另外的日志:
[root@localhost 130]# tail -f /var/log/httpd/error_log
这时我们就可以发现错误了,划红线的意思是在服务配置文件中拒绝了客户端,怎么拒绝的?就是没有给权限。所以需要我们去配置文件当中写上权限。
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim vhost.conf
[root@localhost conf.d]# systemctl restart httpd 再次重启服务
可以看到刚刚的报错没有了。再次打开我们的网页。可以发现成功了
所以,在我们一开始写配置文件的时候就可以把权限写上了。
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim vhost.conf
[root@localhost conf.d]# cd /www
[root@localhost www]# mkdir 8080
[root@localhost www]# mkdir 9090
[root@localhost www]# echo welcome to 8080 > 8080/index.html
[root@localhost www]# echo welcome to 9090 > 9090/index.html
[root@localhost 8080]# systemctl restart httpd 重启一下服务
[root@localhost 8080]# netstat -lntup | grep httpd 查看httpd端口发现没有8080和9090
因为配置文件中没有写监听8080和9090的端口,所以,查看端口发现没有8080和9090端口
[root@localhost 8080]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim vhost.conf
[root@localhost conf.d]# systemctl restart httpd 重启一下服务
[root@localhost 8080]# firewall-cmd --permanent --add-port=8080/tcp
[root@localhost 8080]# firewall-cmd --permanent --add-port=9090/tcp
[root@localhost 8080]# firewall-cmd --reload
所以,在写配置文件的时候,可以写完整,到这里基于不同端口虚拟主机的实验就做完了。
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim vhost.conf
[root@localhost conf.d]# cd /www
[root@localhost www]# mkdir haha
[root@localhost www]# mkdir xm
[root@localhost www]# echo welcome to haha > haha/index.html
[root@localhost www]# echo welcome to xm > xm/index.html
[root@localhost haha]# firewall-cmd --list-all
[root@localhost haha]# setenforce 0
[root@localhost xixi]# systemctl status httpd
我的httpd状态是开启的。如果没有开启,就需要输入命令
[root@localhost www]# systemctl start httpd 进行启动
[root@localhost haha]# vim /etc/hosts
ping 我们自定义的主机名,ping的通且是自己的IP地址
还可以使用命令curl www.haha.com 查看内容
根据下图路径选择用Notepda++的方式打开hosts文件,没有Notepad++的可以访问以下链接下载https://download.csdn.net/download/weixin_53308294/85049044
打开后,添加我们自定义的主机名,一定记得保存。
如果保存的时候遇到了以下图片的情况,点是。然后再保存
在网页中访问如下:
试试访问www.xm.com看是什么效果。
到这里基于不同主机名的虚拟主机实验的实验就做完了。
[root@localhost ~]# htpasswd -c /etc/httpd/zhanghao abc
[root@localhost ~]# htpasswd /etc/httpd/zhanghao tom 第二次不用-c
记住密码!!!!
查看 /etc/httpd/zhanghao
[root@localhost ~]# cat /etc/httpd/zhanghao
[root@localhost ~]# mkdir /usr/local/mysecret
[root@localhost ~]# echo this is mysecret > /usr/local/mysecret/index.html
[root@localhost mysecret]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim vhost.conf
authtype 是认证类型 basic 是基本认证类型,也就是账号密码
authname 是认证名称也就是提示的内容
authuserfile 需要认证的目录
require user 需要的用户
写别名:
/mysecret 是路径别名
[root@localhost conf.d]# systemctl restart httpd 重启服务
由下图可以看到,访问www.xm.com/mysecret 的时候会有一个弹窗,需要我们输入用户和密码,把刚刚我们所创建的用户和密码输入,页面就会跳转到下面的第二幅图
[root@localhost conf.d]# dnf install python3-mod_wsgi -y
[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 conf.d]# vim vhost.conf
[root@localhost conf.d]# systemctl restart httpd
1.每次重新启动虚拟机,或者在xshell中重新连接之后,查看getenforce都是Enforcing,在开启httpd之前需要关闭,这样才能开启httpd服务。
如下图所示:
2.写自己自定义的域名的时候,尽量写互联网上没有的,否则,网页上可能没有反应。
一开始我写了一个www.xixi.com 的域名,在网页上没有效果,在互联网上有https://xixi.com这个网站。之后我换了一个www.xm.com的域名之后,在网页上就能看到效果了。
3.每次修改了配置都需要重启httpd服务,确保开启了httpd服务
到这里所有实验就完成了。
配置文件中的内容:
listen 8080
listen 9090
allowoverride none
require all granted
authtype basic
authname "this is mysecret, please input password:"
authuserfile /etc/httpd/zhanghao
require user abc tom
servername 192.168.111.128
documentroot /www/128
servername 192.168.111.129
documentroot /www/129
servername 192.168.111.128
documentroot /www/8080
servername 192.168.111.128
documentroot /www/9090
servername www.haha.com
documentroot /www/haha
servername www.xm.com
alias /mysecret /usr/local/mysecret
wsgiscriptalias / /var/www/cgi-bin/hello.wsgi