linux计算机基础 DAY06

 Apache(httpd)  Nginx  Tomcat
Web通信基本概念
• 基于 B/S (Browser/Server)架构的网页服务
– 服务端提供网页
– 浏览器下载并显示网页
• Hyper Text Markup Language,超文本标记语言(html)
• Hyper Text Transfer Protocol,超文本传输协议(http)
一、搭建基本的Web服务器
虚拟机Server0:
1.安装httpd软件包
2.重起httpd服务,设置开机自起服务
]# echo '<h1>NSD1810 Web'  > /var/www/html/index.html
]# cat /var/www/html/index.html
<h1>NSD1810 Web
虚拟机Desktop0:
1.利用firefox 172.25.0.11 测试
##################################################
• 提供的默认配置
– Listen:监听地址:端口(80)
– ServerName:本站点注册的DNS名称(空缺)
– DocumentRoot:网页根目录(/var/www/html)
– DirectoryIndex:起始页/首页文件名(index.html
    DNS服务器:虚拟机classroom      
            server0.example.com
            www0.example.com
            webapp0.example.com
测试DNS解析:
[root@server0 ~]# nslookup  server0.example.com
[root@server0 ~]# nslookup  www0.example.com
[root@server0 ~]# nslookup  webapp0.example.com
#################################################
– DocumentRoot:网页文件根目录(/var/www/html)
虚拟机Server0:
1.建立新的网页文件存放路径
]# mkdir /var/www/myweb
]# echo '<h1>wo shi myweb'  >  /var/www/myweb/index.html
]# cat /var/www/myweb/index.html
<h1>wo shi myweb
2.修改配置文件
# vim /etc/httpd/conf/httpd.conf   #修改主配置文件
DocumentRoot  "/var/www/myweb"
3. 重起httpd服务
虚拟机Desktop0:
[root@desktop0 ~]# firefox server0.example.com

##############################################
网络路径与实际路径对应关系
 网络路径:在浏览器输入的路径
 实际路径:服务器存放网页文件的路径
客户端: firefox server0.example.com
服务端:/var/www/myweb
firefox server0.example.com---》DNS---》172.25.0.11
172.25.0.11:80----->服务端----->httpd-----》DocumentRoot
-----》/var/www/myweb-->网页文件根目录
客户端: firefox server0.example.com/abc
服务端:/var/www/myweb/abc

客户端: firefox server0.example.com/var/www/myweb
服务端:/var/www/myweb/var/www/myweb
#################################################
虚拟机Server0:     
[root@server0 ~]# mkdir /var/www/myweb/abc
[root@server0 ~]# echo '<h1>wo shi abc' > /var/www/myweb/abc/index.html
[root@server0 ~]#
虚拟机Desktop0:
[root@desktop0 ~]# firefox server0.example.com/abc
#################################################
虚拟Web主机
  作用:一台服务器可以提供多个Web站点
• 区分方式
– 基于域名的虚拟主机
– 基于端口的虚拟主机
– 基于IP地址的虚拟主机

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

• 配置文件路径
– /etc/httpd/conf/httpd.conf  (主配置文件)
– /etc/httpd/conf.d/*.conf (调用配置文件)
虚拟机Server0:         
[root@server0 ~]# vim  /etc/httpd/conf.d/nsd01.conf
<VirtualHost   *:80>
  ServerName  www0.example.com
  DocumentRoot  /var/www/qq
</VirtualHost>
<VirtualHost   *:80>
  ServerName  webapp0.example.com
  DocumentRoot  /var/www/baidu
</VirtualHost>
]# mkdir /var/www/qq  /var/www/baidu
]# echo '<h1>企鹅' > /var/www/qq/index.html
]# echo '<h1>百度' > /var/www/baidu/index.html
]# systemctl restart httpd
###############################################
一旦使用虚拟web主机功能,所有的站点都必须用虚拟web主机来实现
<VirtualHost  *:80>
  ServerName  webapp0.example.com
  DocumentRoot  /var/www/baidu
</VirtualHost>
<VirtualHost  *:80>
  ServerName  www0.example.com
  DocumentRoot  /var/www/qq
</VirtualHost>
<VirtualHost  *:80>
  ServerName  server0.example.com
  DocumentRoot  /var/www/myweb
</VirtualHost>
#################################################
配置目录访问
httpd 运行身份(用户/组):apache

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

  <Directory  /opt>
    Require all denied
  </Directory>
    /opt/test/index.html
 
案例3:配置网页内容访问
在 Web 网站 http://server0.example.com 的
DocumentRoot 目录下创建一个名为 private 的子目录
要求如下:
1.查看http://server0.example.com 的DocumentRoot 目录
]# cat /etc/httpd/conf.d/nsd01.conf
2.建立相应的网页文件目录
]# mkdir /var/www/myweb/private
]# echo '<h1>wo shi private' > /var/www/myweb/private/index.html
]# ls /var/www/myweb/private/
3.在虚拟机Desktop0上验证
]# firefox server0.example.com/private
4.从 虚拟机server0上,任何人都可以浏览 private的内容,
但是从其他系统不能访问这个目录的内容 
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory  /var/www/myweb/private>
    Require ip 172.25.0.11
</Directory>
[root@server0 ~]# systemctl restart httpd
5.在虚拟机desktop0访问测试
Forbidden
You don't have permission to access /private/ on this server.
#################################################
案例4:使用自定Web根目录
调整 Web 站点 http://server0.example.com 的网页
目录,要求如下:
1)新建目录 /webroot,作为此站点新的网页文件目录
]# mkdir /webroot
]# echo '<h1>wo shi webroot' > /webroot/index.html
]# ls /webroot/
2)修改配置文件/etc/httpd/conf.d/nsd01.conf
<VirtualHost  *:80>
  ServerName server0.example.com
  DocumentRoot /webroot
</VirtualHost>
3)访问控制,修改配置文件/etc/httpd/conf.d/nsd02.conf
<Directory /webroot>
    Require all granted
</Directory>
[root@server0 ~]# systemctl restart httpd
4)SELinux的安全上下文(标签)
[root@server0 ~]# ls -Zd /var/www/  #查看安全上下文值
[root@server0 ~]# ls -Zd /webroot
• 方式1:参照标准目录,重设新目录的属性
– chcon [-R] --reference=模板目录   新目录
]# chcon -R --reference=/var/www  /webroot/
]# ls -Zd  /webroot/
###############################################
客户端访问服务端影响的方面:
  1.防火墙
  2.安全增强SELinux
  3.服务本身的访问控制
  4.本地目录权限
###############################################
部署动态网站
     LAMP:Linux  Apache  MariaDB/MySQL php/Python
     LNMP:Linux  Nginx  MariaDB/MySQL php/Python
静态网站的运行
• 服务端的原始网页 = 浏览器访问到的网页
– 由Web服务软件处理所有请求
– 文本(txt/html)、图片(jpg/png)等静态资源
动态网站的运行
• 服务端的原始网页 ≠ 浏览器访问到的网页
– 由Web服务软件接受请求,动态程序转后端模块处理
– PHP网页、Python网页、JSP网页......
为站点 webapp0.example.com 配置提供动态Web内容,要求如下:
1.部署动态网站文件
]# cat /etc/httpd/conf.d/nsd01.conf
]# cd /var/www/baidu/
]# wget  http://classroom.example.com/pub/materials/webinfo.wsgi
]# cat  webinfo.wsgi
2.为了方便用户的访问,用户可以直接输入webapp0.example.com得到相应的python页面,所以使用页面跳转(页面别名  地址重写)
                                   
  Alias  网络路径     实际路径
[root@server0 /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost  *:80>
  ServerName webapp0.example.com
  DocumentRoot /var/www/baidu
  Alias  /   /var/www/baidu/webinfo.wsgi
     当用户访问到网页文件根目录时,进行跳转到webinfo.wsgi
</VirtualHost>
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# firefox webapp0.example.com
3.安装mod_wsgi软件,专用于Python页面代码翻译
[root@server0 /]# yum -y install mod_wsgi
4.修改配置文件进行翻译
[root@server0 /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost  *:80>
  ServerName webapp0.example.com
  DocumentRoot /var/www/baidu
  WsgiScriptAlias /  /var/www/baidu/webinfo.wsgi
</VirtualHost>
[root@server0 /]# systemctl restart httpd
[root@server0 /]# firefox webapp0.example.com
    UNIX时间戳:从1970-1-1 0:0:0 到达现在时间经历的秒数
5.此虚拟主机侦听在端口8909  
[root@server0 /]# vim /etc/httpd/conf.d/nsd01.conf
Listen 8909
<VirtualHost  *:8909>
  ServerName webapp0.example.com
  DocumentRoot /var/www/baidu
  WsgiScriptAlias /  /var/www/baidu/webinfo.wsgi
</VirtualHost>
6.SELinux非默认端口的开放
]# semanage port -l | grep http  #查看http允许开放端口
]# semanage port -a -t http_port_t -p tcp 8909
                  -a:添加   -t:类型   -p:协议
]# systemctl restart httpd
7.验证
]# firefox webapp0.example.com:8909
#################################################

猜你喜欢

转载自www.cnblogs.com/mrmeng123/p/9960735.html