这篇主要是试验部分,原理和理论在这篇https://blog.csdn.net/weixin_43997530/article/details/102613083
一、基于HTTP协议的静态网站
(1)建立两个基于ip地址访问的网站,要求如下:
1、该网站ip地址的主机位为100,设置DocumentRoot为/www/ip/100,网页内容为:this is 100。
2、该网站ip地址的主机位为200,设置DocumentRoot为/www/ip/200,网页内容为:this is 200。
第一步,先添加两个ip地址
[root@localhost ~]#nmcli connection modify eno16777736 +ipv4.addresses 192.168.9.100.100/24 ipv4.gateway
192.168.9.1 ipv4.method manual connection.autoconnect yes //手动添加地址
[root@localhost ~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.9.200/24
[root@localhost ~]# nmcli connection up eno16777736 //启动网卡
第二步,创建两个网页文件根目录,并定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html 定义网页目录的内容
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html
第三步,定义基于不同ip地址来访问网站的配置文件
(示例文件[root@localhost ~]# vim /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf )
[root@localhost ~]# vim /etc/httpd/conf.d/host.conf //编译配置文件
[root@localhost ~]# systemctl restart httpd //重启服务,每次编辑完配置文件都需要重启服务
[root@localhost ~]# curl 192.168.126.200 //这条命令可以手动查看网页内容
this is 200
也可以在浏览器上输入IP地址来查看 :
[root@localhost ~]# curl 192.168.126.100
this is 100
如果访问时显示的是apache默认的欢迎界面,则需要做如下操作:
[root@server html]# setenforce 0 //这是selinux的问题,这里我们先忽略,后面会讲到
[root@server html]# getenforce
Permissive
切记:实验都是排除了防火墙,和安全策略的因素;所以我们每次试验时,都关闭防火墙和敲下这条命令
(2)建立两个基于不同端口访问的网站,要求如下:
1、建立一个使用web服务器默认端口的网站,设置DocumentRoot为/www/port/80,网页内容为:the port is 80。
2、建立一个使用10000端口的网站,设置DocumentRoot为/www/port/10000,网页内容为:the port is 10000。
第一步,创建两个网页文件根目录,并定义网页内容
[root@localhost ~]# mkdir -pv /www/port/{80,10000}
[root@localhost ~]# echo the port is 80 > /www/port/80/index.html
[root@localhost ~]# echo the port is 10000 > /www/port/10000/index.html
第二步,定义基于不同端口来访问网站的配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
[root@localhost ~]# systemctl restart httpd
此时可以在虚拟机上打开浏览器输入IP地址:
输入IP地址,注意这个需要添加端口号:10000
(3)建立两个基于域名访问的网站,要求如下:
1、新建一个网站,域名为www.ceshi.com,设置DocumentRoot为/www/name,网页内容为this is test。
2、新建一个网站,域名为rhce.first.day,同时可通过ce.first.day访问,设置DocumentRoot为/www/ce,网页内容为:today
is first day of class。
基于域名的网站,需要用到域名解析。将域名转化为IP地址
浏览器如何通过域名去查询URL对应的IP(对应服务器地址):
1、浏览器缓存:浏览器会按照一定的频率缓存DNS记录。
2、操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件找。hosts是一个没有扩展
名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需
要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找
到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts
Linux下的hosts文件路径:/etc/hosts
3、路由缓存:路由器也有DNS缓存。
4、ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询
请求。
5、根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS服务器先问根域名服务
器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)。
第一步,创建两个网页文件根目录,并定义网页内容
[root@localhost ~]# mkdir /www/{name,ce}
[root@localhost ~]# echo this is test > /www/name/index.html
[root@localhost ~]# echo today is first day of class > /www/ce/index.html
第二步,定义基于域名访问的网站的配置文件
[root@localhost ~]# vim /etc/httpd/conf.d/host.conf
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# vim /etc/hosts
因为我们没有域名解析服务器,只能在系统文件里改写对应关系,这样浏览器就可以进行域名解析了。
[root@localhost ~]# curl www.ceshi.com
this is test
这里我们在Linux下访问,需要在Windows下访问时,要改写系统的DNS缓存文件
[root@localhost ~]# curl rhce.first.day
today is first day of class
[root@localhost ~]# curl ce.first.day
today is first day of class
二、基于HTTPS 协议的静态网站
(1)基于虚拟目录和用户控制的web网站
[root@localhost ~]# htpasswd -c /etc/httpd/mima jack //-c表示创建
输入密码
[root@localhost ~]# htpasswd /etc/httpd/mima tom
输入密码
[root@localhost ~]# mkdir /usr/local/secret //定义用户目录
[root@localhost ~]# echo this is my secret > /usr/local/secret/index.html
[root@localhost ~]# vim /etc/httpd/conf.d/hosts.conf //配置文件
AuthType Basic //基本认证类型(账号)
AuthName “Please login:” // 提示信息,双引号必须有,可以更换为其它提示信息
AuthUserFile /etc/httpd/mima //用户认证文件的用户名和密码指定的文件所在位置
Require user Jack //指定这谁可以访问该服务器
[root@localhost ~]#systemctl restart httpd
在浏览器中输入:http://IP地址/mimi(注意这里IP地址后要加虚拟目录)
【登录成功后实际上访问的是/usr/local/secret/index.html的内容】
会弹出如下需要输入用户名和密码的窗口:
这里我们使用Jack的用户名和设置的密码,就可以登录查看内容 ;而输入tom的用户名和密码就不会进去:
三、搭建动态网站
动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。
动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访问网站是通过读取数据库来动态生成网页的方法。
WSGI(Web Server Gateway Interface)是一个统一的Python接口标准(PEP 3333),该标准描述了Python应用如何与Web服务器通信,多个Python应用之间如何级联以处理请求。
[root@localhost ~]# yum install mod_wsgi -y //先装相关的包
[root@localhost ~]#mkdir /var/www/alt //创建网站的首页目录
[root@localhost ~]# vim /etc/httpd/conf.d/host.conf //编辑主配置文件
[root@localhost ~]# vim /var/www/alt/webinfo.wsgi //编写网站主页内容
在浏览器中输入地址