############################################################################################
检测两台虚拟机:
1.ip地址
#ifconfig | head -2
2.检测dns是否可以解析
#vim /etc/resolv.conf                  //dns配置文件
#nslookup desktop0.example.com      //dns检测
3.检测yum是否可以使用
#yum clean all                        //清空yum缓存
#yum repolist                         
4.将防火墙默认区域设置为trusted
#firewall-cmd --set-default-zone=trusted    //设置防火墙默认区域
#firewall-cmd --get-default-zone            //查看防火墙默认区域

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

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

软件包:httpd
系统服务:httpd

提供的默认配置
– Listen:监听地址:端口(80)
– ServerName:本站点注册的DNS名称(空缺)
– DocumentRoot:网页根目录(/var/www/html)
– DirectoryIndex:起始页/首页文件名(index.html)
############################################################################################
一、搭建基本Web服务
虚拟机Server0上:
1.安装httpd软件
2.启动httpd服务,并且设置 为开机自起
3.书写 网页文件
# echo My First Web > /var/www/html/index.html

虚拟机Desktop0上:
# elinks -dump 172.25.0.11      //通过ip地址进行访问
##########################################################################################
– ServerName:本站点注册的DNS名称(空缺)

虚拟机Server0上:
1.修改主配文件的内容/etc/httpd/conf/httpd.conf
  vim中命令行模式全文查找:   /ServerName

ServerName  server0.example.com:80

2.  重起httpd服务

虚拟机Desktop0上:
# elinks -dump server0.example.com   //通过域名进行访问
######################################################################################3####

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

虚拟机Server0上:
1.修改主配文件的内容/etc/httpd/conf/httpd.conf
DocumentRoot  "/var/www/abc"
2.创建目录/var/www/abc
3.重起httpd服务
4.书写网页文件
# echo wo shi abc > /var/www/abc/index.html

虚拟机Desktop0上:
# elinks  -dump  server0.example.com      //访问的目录不再是/var/www/html 变为/var/www/abc

注意:修改配置文件将网页根目录改为(DocumentRoot “/var/www/abc”),创建目录(mkdir /var/www/abc),最后重启服务。
##########################################################################################
虚拟Web主机
    – 由同一台服务器提供多个不同的Web站点

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

配置文件路径
– /etc/httpd/conf/httpd.conf   #主配置文件
– /etc/httpd/conf.d/*.conf     #从配置文件

帮助文档:/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
1.建立从配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
 <VirtualHost   *:80>
    DocumentRoot   /var/www/test
    ServerName   www0.example.com
 </VirtualHost>

<VirtualHost   *:80>
    DocumentRoot   /var/www/nsd
    ServerName   webapp0.example.com
 </VirtualHost>

2. 建立目录及相应的网页内容
# echo wo shi test > /var/www/test/index.html
# echo wo shi nsd > /var/www/nsd/index.html
3. 重起httpd服务

注意:1.为什么可以访问显示网页,因为系统会读取从配置文件;为什么会读取从抛弃只文件,因为在主配置文件底部有这样一条配置IncludeOptional conf.d/*.conf。
      2.在书写配置文件时,一定要细心,本次实验中曾将/var/www/nsd/错误的写为/var/www/nad ,导致的结果为404 Not Found (找不到网页)。
#################################################
  启用虚拟Web主机,所有的站点都必须用虚拟Web主机来实现

保证 server0.example.com可以访问

1.修改从配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
  追加写入

<VirtualHost   *:80>
    DocumentRoot   /var/www/abc
    ServerName   server0.example.com
 </VirtualHost>

2. 重起httpd服务

虚拟机Desktop0上:
# elinks  -dump  server0.example.com

#####################################################################################################
 httpd服务访问控制

虚拟机server0:
1.创建目录与网页文件
# mkdir  /var/www/abc/private
# echo 小蝌蚪找妈妈  >  /var/www/abc/private/index.html
# cat  /var/www/abc/private/index.html
2.建立新的配置文件
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
 <Directory   "/var/www/abc/private">
    Require   ip  172.25.0.11   127.0.0.1    #仅允许本机访问
 </Directory>

3 重起httpd服务

测试:  在Desktop0上访问失败,在Server0上访问可以
   elinks  -dump  server0.example.com/private

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

思路:客户端访问服务端资源
    1.防火墙是否限制
    2.服务本身的访问控制
  3.SELinux 是否限制

SELinux策略保护

1.安全上下文(标签)
[root@server0 ~]# chcon -R --reference=/var/www /webroot

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

使用自定Web根目录
1.修改配置文件 /etc/httpd/conf.d/nsd01.conf  
<VirtualHost *:80>
    DocumentRoot /webroot          
    ServerName server0.example.com
</VirtualHost>

2.创建目录与网页文件
# mkdir /webroot
# echo wo shi webroot > /webroot/index.html

注释:当我们将配置文件中的web根目录改为/webroot ,为什么访问不成功?
<Directory />
    AllowOverride none
    Require all denied
</Directory>
因为在主配置文件当中,我们时拒绝访问/下面的内容的,只允许访问/var/www/下的内容。所以我们修改访问控制文件nsd02.conf

3.修改访问控制配置文件,/etc/httpd/conf.d/nsd02.conf
 <Directory "/webroot">
    Require all granted
 </Directory>

注释:当我们允许客户端访问/webroot时,为什么还是访问不了网站内容?
因为SElinux,当客户端访问时,SElinux只是允许访问以下文件/etc/httpd/conf/httpd.conf;/etc/httpd/conf.d/*.conf;/var/www,所以拒绝访问。我们可以通过查看SElinux标签值来验证。
# ls -Zd /var/www                       //查看SElinux标签值
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
# ls -Zd /webroot
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /webroot

标签值不同SElinux拒绝访问;
 
4.修改SELinux标签值
# chcon -R --reference=/var/www /webroot

5.重起httpd服务验证
6.在Desktop0上: elinks  -dump  server0.example.com

########################################################################################## 安全Web服务

安全的超文本协议 https  端口为:443

PKI公钥基础设施
Public Key Infrastructure,公钥基础设施
    – 公钥:主要用来加密数据
    – 私钥:主要用来解密数据(与相应的公钥匹配)
    – 数字证书:证明拥有者的合法性/权威性(单位名称、
    有效期、公钥、颁发机构及签名、......)
    – Certificate Authority,数字证书授权中心:负责证书
    的申请/审核/颁发/鉴定/撤销等管理工作

HTTPS 加密Web通信(TCP 443端口)
– Secure Sockets Layer ,安全套接字层
– Transport Layer Security,安全传输层协议
实现条件
– 启用 SSL 模块支持
– 部署好加密素材:网站服务器的数字证书、网站服务
器的私钥、根证书(CA管理机构的证书)

虚拟机server0上操作:
1.安装mod_ssl软件包
[root@server0 ~]# yum -y install mod_ssl
[root@server0 ~]# ls /etc/httpd/conf.d/ssl.conf

2.部署网站的证书(营业执照)
# cd /etc/pki/tls/certs/                              
# wget http://172.25.254.254/pub/tls/certs/server0.crt

3.部署网站的根证书(公安局信息)
# cd /etc/pki/tls/certs/
# wget http://172.25.254.254/pub/example-ca.crt

4.部署私钥(用于解密)
# cd /etc/pki/tls/private/
# wget http://172.25.254.254/pub/tls/private/server0.key

5.修改配置文件/etc/httpd/conf.d/ssl.conf

<VirtualHost _default_:443>
59行  DocumentRoot "/webroot"
60行  ServerName server0.example.com:443
100行 SSLCertificateFile /etc/pki/tls/certs/server0.crt      //数字证书 (单位名称,有效期,公钥等。。。。)
107行SSLCertificateKeyFile /etc/pki/tls/private/server0.key  //私钥 用于解密
122行SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt  //数字证书授权中心(CA)

6.重起httpd服务

虚拟机desktop0上验证:
[root@desktop0 ~]# firefox https://server0.example.com  //导航栏出现一把锁,表示成功。
#######################################################################################

部署动态网站

静态网站的运行
服务端的原始网页 = 浏览器访问到的网页

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

案例6:部署并测试WSGI站点

1.安装支持Python软件
[root@server0 /]# yum -y install mod_wsgi

2.切换到相应/var/www/nsd目录下载动态页面

# cd /var/www/nsd/
# wget http://172.25.254.254/pub/materials/webinfo.wsgi
# cat webinfo.wsgi

3.在Desktop0上查看,可以看到源代码
# firefox  webapp0.example.com/webinfo.wsgi    //显示的为源代码

4.server0上修改 /etc/httpd/conf.d/nsd01.conf

/var/www/nsd  ==== 客户端的 /

<VirtualHost  *:80>
    DocumentRoot  /var/www/nsd
    ServerName  webapp0.example.com
    alias  /  /var/www/nsd/webinfo.wsgi   //别名设置,直接访问/var/www/nsd/相当于访问/var/www/nsd/webinfo.wsgi
 </VirtualHost>

5.重起httpd服务验证
6.验证
# elinks  -dump   webapp0.example.com

7.server0上修改 /etc/httpd/conf.d/nsd01.conf

/var/www/nsd  ==== 客户端的 /

<VirtualHost  *:80>
    DocumentRoot  /var/www/nsd
    ServerName  webapp0.example.com
    wsgiscriptalias  /  /var/www/nsd/webinfo.wsgi
 </VirtualHost>
8.重起httpd服务验证
9.验证
# elinks  -dump   webapp0.example.com

UINX时间戳:自1970-1-1  0:0:0到达当前所经过的秒数

#####################################################################################################
10.修改webapp0.example.com监听端口8909
   server0上修改 /etc/httpd/conf.d/nsd01.conf

Listen 8909
 <VirtualHost *:8909>
     DocumentRoot /var/www/nsd
     ServerName webapp0.example.com
     wsgiscriptalias / /var/www/nsd/webinfo.wsgi
 </VirtualHost>

11. SELinux 限制非默认端口  8909

# semanage port -l  |  grep http       #查看允许的端口
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

# semanage port -a  -t  http_port_t  -p tcp 8909  #添加端口
# semanage port -l | grep http            //查看允许的端口
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      8909, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

# elinks -dump webapp0.example.com:8909

转载于:https://blog.51cto.com/13399301/1978972

HTTP服务基础 、 网页内容访问 、 安全Web服务 、 部署动态网站相关推荐

  1. 第13节 IIS之WEB服务器部署及网站发布——以win2003为例

    IIS之WEB服务器部署及网站发布 1概述 1.1WEB服务器概念 1.2协议端口号 1.3常用发布软件 1.4网站类型 2部署WEB服务器 2.1安装WEB服务器软件 2.2编辑静态网站网页 2.3 ...

  2. Nginx网站服务配置(Nginx服务基础,访问状态统计,访问控制,虚拟主机)

    编译安装Nginx服务 关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下 安装依赖包 编译安装Nginx 创建运行用户.组 检查.启动.重载配.停止Nginx 增加Nginx系统服 ...

  3. Swoft 2.x 微服务基础(Consul、RPC 服务发现、限流与熔断器)

    本篇概要: 1. Swoft 服务注册与发现: 1.1 Consul 概况: 1.2 在 Consul 注册服务.反注册: 1.2.1 注册服务: 1.2.2 反注册: 1.3 健康检查: 1.4 服 ...

  4. lvs服务器需要开启web服务么_如何检测 Web 服务请求丢失问题

    导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...

  5. RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统

    在httpd服务器的访问日志文件access_log中,记录了大量的客户机访问信息,通过分析这些信息,可以及时了解web站点的访问情况.但是由于access_log文件记录的信息太多,查看起来很不方便 ...

  6. RHEL 5服务篇—使用Apache搭建Web服务(一)

    安装Apache服务以及了解相关的配置文件 在当今的互联网中常用的搭建web服务器的方法有两种,一种是IIS.一种是Apache.大家都知道IIS是微软的产品,只支持在windows系统上使用.那么我 ...

  7. iredmail邮件服务器之修改默认的web服务端口号

    安装iredmail之后,由于需要在路由器上做端口映射以便在外网访问webmail,因此端口不能和WEB服务的端口好冲突,所以需要修改邮件服务器的httpd服务的端口. 一.apache/httpd的 ...

  8. java web 服务 构建与运行_Java Web 服务:构建与运行(影印版)

    基本详情信息 书名:Java Web 服务:构建与运行 ISBN:9787564119270 作者:卡林(Martin Kalin) 著 出版社:东南大学出版社 出版日期:2010-1-1 其他信息 ...

  9. 混合使用Azure LB和ILB访问相同web服务(2)

    那么现在开始,我们配置下两台WEB服务器的Internal Load  balancer: 打开Powershell,检查当前两台虚拟机的端点配置: Get-AzureVM  -ServiceName ...

  10. 混合使用Azure LB和ILB访问相同web服务(3)

    接下来我们来配置Azure Load balancer,就是面向公网的负载均衡器: 1.在该测试中,为了保持内网访问和外网访问一样的体验,本地端口和public端口和ILB一样,同样是80: PS C ...

最新文章

  1. C++:将char*指针强制转换成一个指向结构体的指针
  2. Python—UnicodeEncodeError: 'ascii' codec can't encode/decode characters
  3. 【转】判断五张牌是不是一个顺子
  4. 解决vue打包后静态资源路径错误的问题
  5. ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
  6. Eyoucms代理授权统计插件源码
  7. Java连接Elasticsearch6.xxx 代码高亮显示篇四
  8. 2015/04/01     RHCS
  9. jquery添加未来元素时,其绑定事件不起作用解决办法
  10. session和token的区别
  11. sqlserver分区表索引
  12. Ant命令编译flex时碰到的问题:[mxmlc] java.lang.OutOfMemoryError: Java heap space
  13. mysql关键字test_MySQL关键字Distinct的详细介绍
  14. Android studio3.2学习开发JNI并且生成so库教程
  15. 微信小程序图片上传和裁剪
  16. 为酒店设计一套计算机网络管理系统,酒店管理系统方案设计和对策.doc
  17. adb安装apk到智能TV上
  18. python做估值模型_理解债券估值中的摊销/摊余成本,利用EXCEL+Python估值建模
  19. 淘宝商城发公告释疑2012新规 称调整绝不是涨价
  20. ChatGPT使用案例之图像生成

热门文章

  1. Linux部署之批量自动安装系统之DHCP篇
  2. 在GRIDVIEW中合并单元格
  3. 27. Remove Element
  4. Ubuntu下Android NDK环境搭建笔记
  5. Apache-一个IP多个主机域名
  6. m2e (maven eclipse) 在运行一些命令时出现了无法compile(Unable to locate the Javac Compiler in:)...
  7. PowerShell 远程连接与其它技巧
  8. [转载]用户(User)和用户组(Grou…
  9. Asp.net 在线转Flv
  10. 同事推荐的一部老电影 《魔鬼代言人》