初学Linux——Day14——http、动态web

Web通信基本概念

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

RHEL7中的Web服务
  软件包:httpd
  系统服务:httpd
  配置文件:/ect/httpd/conf/htttpd.conf(系统自身的主配置文件)
          /ect/httpd/conf.d/*.conf(用户自己特殊配置的文件)

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

服务端启动 httpd
1.安装软件 httpd
2.启动httpd服务
  systemctl restart httpd
  systemctl enable httpd


ServerName:本站点注册的DNS名称(一般这里写注册得到的域名)
   
  DNS服务器:域名解析服务:将域名解析为IP地址

  服务端:
  1.修改主配置文件/etc/httpd/conf/httpd.conf
    95行  ServerName server0.example.com:80    #将开头的#去掉
    (末行模式下:set nu 显示行号)

  2.重起httpd服务
    systemctl restart httpd

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

  服务端:
  1.修改主配置文件

    vim /etc/httpd/conf/httpd.conf
    119行  DocumentRoot  "[想修改的目标地址]"   #修改存放网页文件路径

  2.重起httpd服务
    systemctl restart httpd

  网络路径与实际路径区别

    客户端: firefox http://server0.example.com
    服务端: httpd-->/etc/httpd/conf/httpd.conf-->DocumentRoot--->文件中写的地址

    那么客户端输入的 根/ 也就相当于服务端DocumentRoot后写的地址


虚拟Web主机
  由同一台服务器提供多个不同的Web站点

  构建/区分方式
    基于域名的虚拟主机
    基于端口的虚拟主机
    基于IP地址的虚拟主机

基于域名的虚拟主机

  为每个虚拟站点添加配置,容器式配置格式
    
      ServerName 此站点的DNS名称
      DocumentRoot 此站点的网页根目录
    

  配置文件一般不写在系统的主配置文件,一般自己在conf.d下创建一个"[随意取名].conf"文件进行配置

配置虚拟Web主机
服务段:
1.修改配置文件
   vim  /etc/httpd/conf.d/nsd01.conf

  ServerName [域名]
  DocumentRoot [网页的根地址]

2.重启服务
  systemctl restart httpd
  可能出现重启后还没用,原因可能是httpd后台进程问题
  killall httpd  #杀死所有httpd程序

  一旦使用了虚拟Web主机功能,所有的Web站点都必须用虚拟Web主机来实现,由上到下匹配,主配置文件中的一些配置都没用。


httpd的访问控制

  使用 配置区段
    每个文件夹自动继承其父目录的ACL访问权限
    除非针对子目录有明确设置
  修改配置文件,同样尽量不要修改主配置文件


  Require all denied|granted    # 全体禁止访问或者允许
  Require ip IP或网段地址    # 只允许某IP访问


SELinux安全上下文值(标签,标识文件或目录)
  ls -Zd /var/www/      #查看目录的上下文值
   
  以[目录a]为模版,修改[目录b]的上下文值   -R:递归修改
  chcon -R --reference=[目录a]  [目录b]


部署动态网站

1.方便客户端访问,网页跳转(网页访问路径别名)
  修改配置文件
    vim /etc/httpd/conf.d/[虚拟主机的配置文件]
    Alias  客户端网络路径   服务器实际原始路径
    客户端网络路径就是,客户端输入了域名后跟着写的路径,没有写默认为/
    服务器原始路径就是,服务端的存储路径


  Alias [客户端网络路径]    [服务器实际原始路径]
   #客户端访问到 网页文件根目录时,将webinfo.wsgi页面呈现

  重启服务:systemctl restart httpd

2.翻译Python的Web页面内容
  装包
    yum -y install mod_wsgi  #解释Python程序
  配置
    vim /etc/httpd/conf.d/[虚拟主机的配置文件]

  WsgiScriptAlias  [客户端网络路径]    [服务器实际原始路径]

  重启服务:systemctl restart httpd
  补:  UINX时间戳:自1970-1-1 0时0分0秒算起,到现在时间所经历的秒数

3.此虚拟主机侦听在端口8909
  vim /etc/httpd/conf.d/[虚拟主机的配置文件]

Listen 8909

  WsgiScriptAlias [客户端网络路径]    [服务器实际原始路径]

4.SELinux非默认端口的开放

  semanage port -l | grep http
  semanage port  -a  -t  http_port_t  -p  tcp 8909
     -a:添加    -t:类型     -p:协议
  systemctl restart httpd


总结:

1. 配置文件分为主配置文件,和自己创建的配置文件,一般一些功能写在自己创建的配置文件上
2. 修改了配置文件要重启服务
3. 分清楚网络地址和物理存储地址的关系,这个和配置文件中的DocumentRoot 有关系
4. 虚拟主机存在的时候,直接用IP,会调用第一个虚拟主机的信息
   客户端调用的时候,出现端口不匹配或者域名不匹配,当中有一个不匹配时,会根据端口信息调用该端口中的第一个虚拟主机
5. httpd 可以对个别的目录或用户设置权限,而初始状态下,只有/var/www下的目录才有权限,所以在这个目录外创建一个目录作为网络根目录要注意单独赋权,还有selnux的上下文验证问题(chcon命令)
6. 修改端口号的时候,要修改配置文件还要修改selinux的开放问题(semanage命令)
7. 动态页面的配置要注意程序翻译的字段是 WgsiScriptAlias ……


 

你可能感兴趣的:(Linux,Linux基础学习)