Engineer06 Web基础 虚拟Web主机

 准备 三台虚拟机:
 服务器:
      classroom.example.com
 客户端:
      server0(172.25.0.11)
      desktop0(172.25.0.10)  
   

虚拟机server0
[root@server0 ~]# firewall-cmd --set-default-zone=trusted 

虚拟机desktop0
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted


一、独立Web主机

一)Web通信基本概念

基于 B/S (Browser/Server)架构的网页服务
    - 服务端提供网页
    - 浏览器下载并显示网页

Hyper Text Markup Language,超文本标记语言(html)
Hyper Text Transfer  Protocol,超文本传输协议(http)

     http 协议端口号80


httpd虽稳定,但性能没有nginx好
并发量  httpd 2-3万
        nginx 5万以上(中国用的比较多)
        Tengine 是在nginx基础上二次开发的,操作差不多,更符合国情

二)RHEL7中的Web服务

默认网页文件目录:/var/www/html    
默认网页文件的名字:index.html    

软件包:httpd
系统服务:httpd

提供的默认配置
Listen:监听地址:端口(80)
ServerName:本站点注册的DNS名称(空缺)
DocumentRoot:网页根目录(/var/www/html)
DirectoryIndex:起始页/首页文件名(index.html)           
        
三)快速部署独立Web站点

(1)部署基础Web

1、安装软件httpd
[root@server0 ~]# yum -y install httpd

2、书写一个页面文件
[root@server0 ~]# echo '<h1>First Web' > /var/www/html/index.html

3、重启httpd服务,设置开机自启动
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable  httpd

测试:
客户端虚拟机desktop
#firefox  172.25.0.11

(2)详解主配置文件:

          ServerName:本站点注册的DNS名称(空缺)

    DNS 服务器:classroom.example.com
       以下三个均为172.25.0.11的域名(已在classroom部署好):   
       server0.example.com
       www0.example.com
       webapp0.example.com

  虚拟机server0
1、修改配置文件/etc/httpd/conf/httpd.conf 

   [root@server0 ~]# vim /etc/httpd/conf/httpd.conf 
   ServerName server0.example.com:80  #把开头的#去掉

虚拟机desktop0
   [root@desktop0 ~]# firefox http://server0.example.com

++++++++++++++++++++++++++++++

补充:为浏览器程序提供 URL 网址
Uniform Resouce Locator,统一资源定位器
协议名://服务器地址[:端口号]/目录/文件名

eg:    
      http://server0.example.com

+++++++++++++++++++++++++++++++

(3)配置文件详解    DocumentRoot:网页根目录(/var/www/html)
[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 
  DocumentRoot "/var/www/myweb"

[root@server0 ~]# systemctl restart httpd
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

[root@server0 ~]# mkdir /var/www/myweb
[root@server0 ~]# echo '<h1>myweb' > /var/www/myweb/index.html
[root@server0 ~]# systemctl restart httpd

虚拟机desktop0
# firefox  server0.example.com


四)虚拟Web主机
 (1)作用:让一台Web服务器,提供多个页面
 (2)搭建方式:
   1、基于域名的虚拟web
   2、基于端口的虚拟web
   3、基于IP地址的虚拟web

①基于IP的方法:
  在服务器里绑定多个IP,然后配置WEB服务器,把多个网站绑定在不同的IP上。访问不同的IP,就看到不同的网站。
②基于端口的方法:
  一个IP地址,通过不同的端口实在不同网站的访问。
③基于主机名的方法:
  设置多个域名的A记录,使它们解析到同一个IP地址上,即同一个服务器上。然后,在服务器上配置WEB服务端,添加多个网站,为每个网站设定一个主机名。因为HTTP协议访问请求里包含有主机名信息,当WEB服务器收到访问请求时,就可以根据不同的主机名来访问不同的网站。


(3)基于域名的虚拟web

容器类型的配置

 <VirtualHost  IP地址:端口>
        ServerName  此站点的DNS名称
        DocumentRoot  此站点的网页根目录
 </VirtualHost>


<VirtualHost  *:80>
        ServerName  www.baidu.com
        DocumentRoot  /var/www/baidu
 </VirtualHost>

<VirtualHost  *:80>
        ServerName  www.qq.com
        DocumentRoot  /var/www/qq
 </VirtualHost>

配置文件路径
/etc/httpd/conf/httpd.conf 
/etc/httpd/conf.d/*.conf

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 
IncludeOptional conf.d/*.conf    //调用配置文件


虚拟机Server0:
1、修改调用配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf
<VirtualHost *:80>
        ServerName www0.example.com
        DocumentRoot /var/www/nsd01
</VirtualHost>
<VirtualHost *:80>
        ServerName webapp0.example.com
        DocumentRoot /var/www/nsd02
</VirtualHost>

[root@server0 ~]# mkdir /var/www/nsd01 /var/www/nsd02
[root@server0 ~]# echo '<h1>wo shi nsd01' > /var/www/nsd01/index.html
[root@server0 ~]# echo '<h1>wo shi nsd02' > /var/www/nsd02/index.html


2、重启httpd服务
[root@server0 ~]# systemctl restart httpd

3、测试
[root@server0 ~]# firefox www0.example.com
[root@server0 ~]# firefox webapp0.example.com

[root@server0 ~]# host www0.example.com
[root@server0 ~]# host webapp0.example.com


注意:
   一旦使用了虚拟web主机功能,所有的站点都必须使用虚拟web来实现

追加写入一下内容:
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf
<VirtualHost *:80>
        ServerName server0.example.com
        DocumentRoot /var/www/myweb
</VirtualHost>

[root@server0 ~]# firefox  server0.example.com
<h1>wo shi nsd01
[root@server0 ~]# systemctl restart httpd  //重启服务
[root@server0 ~]# firefox  server0.example.com
<h1>myweb



二、网页内容访问

使用 <Directory> 配置区段
每个文件夹自动继承其父目录的ACL访问权限
除非针对子目录有明确设置
      <Directory  目录的绝对路径>
        .. ..
        Require  all  denied|granted
        Require  ip  IP或网段地址 .. ..
      </Directory>

禁止任何客户机访问 
    <Directory  />        
           Require  all  denied
    </Directory>

允许任何客户机访问 
    <Directory  "/var/www/html">         
           Require  all  granted 
    </Directory>

仅允许部分客户机访问
    <Directory  "/var/www/html/private">         
            Require  ip  127.0.0.1  ::1  172.25.0.11
    </Directory>
 

去查看文件夹权限:
[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

<Directory />
    AllowOverride none
    Require all denied     //拒绝
</Directory>

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted    //允许
</Directory>


案例:配置网页内容访问
在 Web 网站 http://server0.example.com 的 
DocumentRoot 目录下创建一个名为 private 的子目录,要求如下:
1)从 http://classroom/pub/materials/private.html 
 下载一个文件副本到这个目录,重命名为 index.html
2)不要对文件 index.html 的内容作任何修改
3)从 server0 上,任何人都可以浏览 private 的内容,
 但是从其他系统不能访问这个目录的内容

1、先查看Server0的网站根目录
[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 
DocumentRoot "/var/www/myweb"

2、创建子目录
[root@server0 ~]# mkdir /var/www/myweb/private

3、创建页面
[root@server0 ~]# echo '<h1>wo shi private' > /var/www/myweb/private/index.html

4、修改目录权限
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory "/var/www/myweb/private">   //针对路径
    Require ip 172.25.0.11   //仅允许172.25.0.11
</Directory>

5、重启服务
[root@server0 ~]# systemctl restart httpd

6、测试
虚拟机desktop0:firefox  server0.exmaple.com/private
虚拟机Server0:firefox server0.example.com/private

 

案例:使用自定Web根目录

调整 Web 站点 http://server0.example.com 的网页目录,要求如下:
1)新建目录 /webroot,作为此站点新的网页目录
2)从 http://classroom/pub/materials/station.html 下载一个文件副本到这个目录,重命名为 index.html
3)不要对文件 index.html 的内容作任何修改
4)确保站点 http://server0.example.com  仍然可访问

1、新建目录/webroot,并添加页面
[root@server0 ~]# mkdir /webroot
[root@server0 ~]# echo '<h1>wo shi webroot' > /webroot/index.html

2、修改配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf 
<VirtualHost *:80>
        ServerName server0.example.com
        DocumentRoot /var/www/webroot  //修改网页根目录
</VirtualHost>


3、配置文件追加写入
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf 
<Directory "/webroot">
    Require all granted    //允许所有
</Directory>

4、SELinux安全上下文(标识、标签)
chcon  [-R]  --reference=模板目录  新目录

-------------------------------------------------------------
  神州旅游  红色帽子
  达外旅游  绿色帽子


[root@server0 ~]# semanage --help

[root@server0 ~]# semanage fcontext -l

[root@server0 ~]# ls -Zd /var/www/  //-Z 查看安全上下文值
system_u:object_r:httpd_sys_content_t:s0 /var/www/

[root@server0 ~]# ls -Zd /webroot/
unconfined_u:object_r:default_t:s0 /webroot/
-------------------------------------------------------------

[root@server0 ~]# chcon -R --reference=/var/www /webroot/

[root@server0 ~]# ls -Zd /webroot/   //查看目录标签值
[root@server0 ~]# ls -Zd /var/www/

5、重启httpd服务
[root@server0 ~]# systemctl restart httpd

####################################################
三、部署动态网站

   静态的网站
   服务端的原始网页 = 浏览器访问到的网页
   由Web服务软件处理所有请求
   文本(txt/html)、图片(jpg/png)等静态资源

   动态的网站
   服务端的原始网页 ≠ 浏览器访问到的网页
   由Web服务软件接受请求,动态程序转后端模块处理
   PHP网页、Python网页、JSP网页……


   

案例:部署并测试WSGI站点
为站点 webapp0.example.com 配置提供动态Web内容,要求如下:
1)此虚拟主机侦听在端口8909
2)测试网页从以下地址下载,不要作任何更改http://classroom/pub/materials/webinfo.wsgi 
3)从浏览器访问 http://webapp0.example.com:8909 可接收到动态生成的 Web 页面
4)此站点必须能被 example.com 域内的所有系统访问

1、部署Python动态页面
   先查看webapp0.example.com的DocumentRoot目录在哪里
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf 
<VirtualHost *:80>
        ServerName webapp0.example.com
        DocumentRoot /var/www/nsd02
</VirtualHost>

# cd /var/www/nsd02/
# wget http://classroom/pub/materials/webinfo.wsgi 

2、方便用户访问,页面的跳转

  当客户端访问webapp0.example.com -> /var/www/nsd02/webinfo.wsgi
 
 修改配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf 
 <VirtualHost *:80>
        ServerName webapp0.example.com
        DocumentRoot /var/www/nsd02
        Alias / /var/www/nsd02/webinfo.wsgi
        #当检测到客户端访问网页文件根目录时,跳转页面到webinfo.wsgi
</VirtualHost>

重启httpd服务,并客户端验证
[root@server0 ~]# systemctl restart httpd
[root@desktop0 ~]# firefox  webapp0.example.com


3、安装一个可以解释Python页面程序,配置解释该页面
[root@server0 ~]# yum -y install mod_wsgi.x86_64 

[root@server0 ~]# rpm -ql mod_wsgi   #列出软件安装清单

    Unix时间戳:从1970-1-1 0:0:0算起,到达当前时间经过的次数

[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf 
<VirtualHost *:80>
        ServerName webapp0.example.com
        DocumentRoot /var/www/nsd02
        WsgiScriptAlias / /var/www/nsd02/webinfo.wsgi
</VirtualHost>
    
[root@server0 ~]# systemctl restart httpd
    
4、修改端口为8909
    
[root@server0 ~]# vim /etc/httpd/conf.d/haha.conf 
    
Listen 8909
<VirtualHost *:8909>
        ServerName webapp0.example.com
        DocumentRoot /var/www/nsd02
        WsgiScriptAlias / /var/www/nsd02/webinfo.wsgi
</VirtualHost>
    
5、SElinux 布尔值 安全上下文  非默认端口的开放
    
[root@server0 ~]# semanage port -l | grep http
    
[root@server0 ~]# semanage port -a -t http_port_t -p tcp 8909
    
    -a 添加    -t类型  -p 协议
    
客户端访问测试
# firefox  webapp0.example.com:8909    
    
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值