Engineer6

真机上:还原三台虚拟机classroom、server、desktop

[root@room9pc14 桌面]# rht-vmctl reset classroom
[root@room9pc14 桌面]# rht-vmctl reset server
[root@room9pc14 桌面]# rht-vmctl reset desktop

真机远程管理:ssh方式,方便使用server与desktop   

[root@room9pc14 桌面]# ssh  用户名@IP地址

补充快捷键: Ctrl+Shift+t 开启一个新的终端

[root@room9pc14 桌面]# ssh -X root@172.25.0.11

##################################################

修改两台虚拟机防火墙默认区域为trusted

[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted

#######################################################
搭建基本的Web服务

• 基于 B/S (Browser/Server)架构的网页服务
– 服务端提供网页
– 浏览器下载并显示网页
• Hyper Text Markup Language,超文本标记语言
• Hyper Text Transfer Protocol,超文本传输协议

 装包、起服务

 服务端:Server
  1. 安装软件httpd
  2. 启动httpd服务,设置开机自起
   默认网页文件的位置:/var/www/html/index.html
  3. 书写一个页面文件
  # echo '<h1>My First Web' > /var/www/html/index.html

  客户端:Desktop
     #前提:真机所有浏览器关闭
    1.测试访问:firefox   172.25.0.11   
    2.测试访问:命令行测试工具
  [root@desktop0 ~]# elinks -dump 172.25.0.11

#########################################################
  设置Web的域名

   DNS服务器:classroom.example.com
   
        server0.example.com  
        www0.example.com
        webapp0.example.com

虚拟机Server0:
 1.修改配置文件/etc/httpd/conf/httpd.conf  
    #补充vim 命令模式  /ServerName 全文查找ServerName 按n、N跳转
    #将开头的‘#’去掉

  ServerName server0.example.com:80   

 2.重起httpd服务

虚拟机desktop0:
  测试:elinks -dump server0.example.com

#################################################
 DocumentRoot:网页根目录(/var/www/html)

虚拟机Server0:
 1.修改配置文件/etc/httpd/conf/httpd.conf  
    #补充vim 命令模式  /Doc 全文查找Doc  按n、N跳转

   DocumentRoot "/var/www/myweb"

  2.创建目录/var/www/myweb,重起httpd服务

  3.书写新的测试页面
[root@server0 ~]# echo woshi myweb > /var/www/myweb/index.html

 虚拟机desktop0:
    测试:elinks -dump server0.example.com
#######################################################

  服务端与客户端路径的对照:
 客户端: elinks  -dump  server0.example.com

 服务端: /var/www/myweb

 客户端: elinks  -dump  server0.example.com/abc

 服务端: /var/www/myweb/abc

 客户端:   server0.example.com/abc/private

 服务端: /var/www/myweb/abc/private

######################################################
  虚拟Web主机

  一台服务器,提供多个不同的Web站点

• 区分方式
  – 基于域名的虚拟主机
  – 基于端口的虚拟主机
  – 基于IP地址的虚拟主机

#######################################################
 基于域名的虚拟主机
 
   一旦启用 虚拟Web主机功能,所有的站点都必须用虚拟Web主机来实现

      /etc/httpd/conf.d/*.conf

  容器

• 为每个虚拟站点添加配置
 <VirtualHost IP地址:端口>
   ServerName   此站点的DNS名称
   DocumentRoot 此站点的网页根目录
 </VirtualHost>

#帮助文档  /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
虚拟机Server0:
[root@server0 ~]# vim  /etc/httpd/conf.d/nsd01.conf  #调用配置
<VirtualHost   *:80>                      #虚拟Web主机开始
    DocumentRoot  /var/www/qq             #指定网页文件根目录
    ServerName  www0.example.com          #指定域名
</VirtualHost>                    #虚拟Web主机结束
<VirtualHost   *:80>
    DocumentRoot  /var/www/baidu
    ServerName  webapp0.example.com
</VirtualHost>
<VirtualHost   *:80>
    DocumentRoot  /var/www/myweb
    ServerName  server0.example.com
</VirtualHost>

[root@server0 ~]# mkdir /var/www/qq       #建立相应的网页目录
[root@server0 ~]# mkdir /var/www/baidu    #建立相应的网页目录
[root@server0 ~]# echo QQ > /var/www/qq/index.html
[root@server0 ~]# echo baidu > /var/www/baidu/index.html
[root@server0 ~]# systemctl restart httpd

#########################################################
实现httpd访问控制,实现仅本机访问页面

• 使用 <Directory> 配置区段
– 每个文件夹自动继承其父目录的ACL访问权限
– 除非针对子目录有明确设置

<Directory 目录的绝对路径>
.. ..
  Require all denied|granted
  Require ip IP或网段地址 .. ..
</Directory>


虚拟机Server:
1.建立目录
# mkdir /var/www/myweb/private
2.写入网页文件
# echo woshi private > /var/www/myweb/private/index.html

测试:
 虚拟机Server: elinks -dump server0.example.com/private
 虚拟机Desktop: elinks -dump server0.example.com/private

3.实现httpd服务访问控制
[root@server0 ~]# vim  /etc/httpd/conf.d/nsd02.conf
 <Directory "/var/www/myweb/private">
     Require  ip  127.0.0.1   172.25.0.11
 </Directory>

4.重起httpd服务

测试:
 虚拟机Server: elinks -dump server0.example.com/private #可以

 虚拟机Desktop: elinks -dump server0.example.com/private #失败

########################################################
 SELinux 安全上下文(标签)



    • 方式1:参照标准目录,重设新目录的属性
    – chcon [-R] --reference=模板目录    新目录


案例4:使用自定Web根目录
调整 Web 站点 http://server0.example.com 的网页
目录,要求如下:
 1)新建目录 /webroot,作为此站点新的网页目录
[root@server0 ~]# mkdir /webroot
[root@server0 ~]# echo woshi webroot > /webroot/index.html
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf  
 <VirtualHost *:80>
    DocumentRoot /webroot
    ServerName server0.example.com
 </VirtualHost>

[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
 <Directory "/webroot">
    Require all granted
 </Directory>

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

[root@server0 ~]# systemctl restart httpd

###################################################
  cp会继承标签值,mv不会继承:  尽量用cp
###################################################
 

部署动态Web站点

1.在虚拟机Server上,下载动态页面(Python页面)

 # wget http://classroom/pub/materials/webinfo.wsgi
 # cat  webinfo.wsgi

2.在虚拟机Server上,放入webapp0.example.com默认网页根目录

[root@server0 ~]# vim  /etc/httpd/conf.d/nsd01.conf
[root@server0 ~]# cp  webinfo.wsgi  /var/www/baidu/
[root@server0 ~]# ls  /var/www/baidu/

3.安装Python程序,解析识别 Python页面

[root@server0 ~]# yum -y install mod_wsgi

4.Desktop测试:
   # elinks -dump webapp0.example.com/webinfo.wsgi
     #  可以看到Python代码

5.方便访问,让客户端访问webapp0.example.com可以直接看到 Python页面
  虚拟机Server0上:网页跳转(网页别名)
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
 <VirtualHost *:80>
    DocumentRoot /var/www/baidu
    ServerName webapp0.example.com
    alias  /  /var/www/baidu/webinfo.wsgi

 </VirtualHost>
[root@server0 ~]# systemctl restart httpd

6. 客户端测试访问    
[root@desktop0 ~]# elinks -dump webapp0.example.com

7. 程序 Python 的翻译
  虚拟机Server0上:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
 <VirtualHost *:80>
    DocumentRoot /var/www/baidu
    ServerName webapp0.example.com
    wsgiscriptalias  /  /var/www/baidu/webinfo.wsgi

 </VirtualHost>
[root@server0 ~]# systemctl restart httpd

8. 客户端测试访问    
[root@desktop0 ~]# elinks -dump webapp0.example.com


9.此webapp0.example.com侦听在端口8909
  虚拟机Server0上:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
 Listen 8909
 <VirtualHost *:8909>
    DocumentRoot /var/www/baidu
    ServerName webapp0.example.com
    WsgiScriptAlias  /  /var/www/baidu/webinfo.wsgi
 </VirtualHost>
[root@server0 ~]#
   显示SELinux开放的所有接口
[root@server0 ~]# semanage port -l
[root@server0 ~]# semanage port -l | grep http
[root@server0 ~]# semanage port -a -t http_port_t -p tcp 8909
      -a :添加
      -t:类型
      -p:协议
[root@server0 ~]# systemctl restart httpd
[root@desktop0 ~]# elinks -dump webapp0.example.com:8909
########################################################

posted @ 2017-12-05 08:54  百川汇海  阅读(190)  评论(0)    收藏  举报