web服务搭建

1.环境部署

服务端:软件包httpd        服务名:httpd        默认端口:80

已安装:
  httpd.x86_64 0:2.4.6-17.el7                                                        
作为依赖被安装:
  apr.x86_64 0:1.4.8-3.el7                    apr-util.x86_64 0:1.5.2-6.el7          
  httpd-tools.x86_64 0:2.4.6-17.el7           mailcap.noarch 0:2.1.41-2.el7  

安装好服务软件后,检查默认根目录 /var/www/html/         查看配置文件  /etc/http/conf/httpd.conf 

# ls /var/www/
cgi-bin  html

vim /etc/httpd/conf/httpd.conf
#ServerName www.example.com:80   ###修改域名

DocumentRoot "/var/www/html"     ###修改根目录

2.默认配置下访问

[root@server0 ~]# touch /var/www/html/index.html   ##创建默认访问页面
# echo '<h1>test' > /var/www/html/index.html          ##给页面添加内容
vim /etc/http/conf/httpd.conf
ServerName www.example.com:80               ##去掉注释,启用域名
# systemctl restart httpd                  ##修改配置后需要重起服务
#firefox 127.0.0.1                         ####在浏览器中验证
#firefox www.example.com                   ####在浏览器中验证

 注: 网络路径与服务器实际路径

  网络路径:在浏览器输入的路径

   firefox server0.example.com---》DNS

   firefox 172.25.0.11---->服务端 80---->httpd          
        -->主配置文件----->DocumentRoot  /var/www/myweb

   ex:
   浏览器: server0.example.com
   服务端:/var/www/myweb

   浏览器: server0.example.com/abc
   服务端:/var/www/myweb/abc

 3.配置虚拟web主机 (作用:一台服务器,提供多个不同的Web页面)

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

          a.创建要访问的文件

# mkdir /var/www/nsd01 /var/www/nsd02 /var/www/nsd03
# touch /var/www/nsd02/index.html /var/www/nsd01/index.html /var/www/nsd03/index.html
# echo '<h1>test01' > /var/www/nsd01/index.html
# echo '<h1>test02' > /var/www/nsd02/index.html
# echo '<h1>test03' > /var/www/nsd03/index.html

            b. 配置文件路径
                                    – /etc/httpd/conf/httpd.conf (主配置文件)                 – /etc/httpd/conf.d/*.conf(调用配置文件)

      注意配置文件中不能多写符号和少符号以及空格,多或少都会引起服务重起报错,可使用报错提示中的命令排错

# systemctl restart httpd
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
# journalctl -xn   #使用报错提示中的命令排错

  以下构建基于域名的虚拟主机

# vim /etc/httpd/conf.d/nsd.conf      #####创建副配置文件
<VirtualHost *:80>                  ###  *代表任意ip地址
ServerName server0.example.com       ###  域名
DocumentRoot /var/www/nsd01          #### 根目录
</VirtualHost>
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/nsd02
</VirtualHost>
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/nsd03
</VirtualHost>
# systemctl restart httpd

            c.打开浏览器验证访问  

注: 一旦使用虚拟Web主机功能,所有网站都必须用虚拟Web主机完成

4.Web访问控制(DocumentRoot)

 针对 DocumentRoot 网页目录的权限控制     – httpd 运行身份(用户/组):apache

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

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

# mkdir /var/www/web
# echo 'this is web' > /var/www/web/index.html
# vim /etc/httpd/conf.d/nsd.conf
<VirtualHost *:80>
   ServerName webapp0.example.com
   DocumentRoot /var/www/nsd02
</VirtualHost>
# systemctl restart httpd      ###重起服务
####测试访问--正常
#vim /etc/httpd/conf.d/nsd.conf    ###更改webapp0.example.com的根目录
<VirtualHost *:80>
   ServerName webapp0.example.com
   DocumentRoot /webroot
</VirtualHost>
# systemctl restart httpd         ###重起服务             
####测试访问--服务正常,但三首页面不能访问
创建权限控制子配置文件
#vim /etc/httpd/conf.d/web.conf
<Directory /webroot>
    Require all granted      ####允许所有访问
</Directory>
# systemctl restart httpd      ###重起服务
####测试访问- -页面不能访问

5.SELinux的安全上下文(标签起到标识作用)

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

# ls -Zd /webroot             ###查看webroot目录的默认上下文权限
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /webroot/
# ls -Zd /var/www             ###查看默认根目录的上下文权限
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
# chcon -R --reference=/var/www   /webroot   ###修改webroot的上下文权限和默认根目录一样
# ls -Zd /webroot
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /webroot/
##########测试访问成功

6.部署动态网站

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

#####安装好相关的动态语言翻译软件mod_wsgi
方便用户的访问,网页跳转   
配置字段格式:  Alias   网络路径      实际本地路径
[root@server0 ~]# ls /webroot/
index.html  webinfo.wsgi  
# vim /etc/httpd/conf.d/nsd.conf
<VirtualHost *:80>
   ServerName webapp0.example.com
   DocumentRoot /webroot
   Alias / /webroot/webinfo.wsgi   ###添加别名访问,第一个‘/’代表网络路径  后面的路径为根目录
</VirtualHost>
# systemctl restart httpd
######测试访问,可以访问,但是网站读出来的为代码,并没有翻译出来应该显示的
# vim /etc/httpd/conf.d/nsd.conf
<VirtualHost *:80>
   ServerName webapp0.example.com
   DocumentRoot /webroot      
  WsgiScriptAlias / /webroot/webinfo.wsgi       ###启用翻译
</VirtualHost> 
# systemctl restart httpd
######测试访问正常

7 .虚拟主机侦听端口

虚拟Web主机匹配优先级:由上到下,匹配及停止 端口的优先级大于域名

vim /etc/httpd/conf.d/nsd.conf
Listen 8909                         ####监听端口
<VirtualHost *:8909>
   ServerName webapp0.example.com
   DocumentRoot /webroot      
  WsgiScriptAlias / /webroot/webinfo.wsgi
</VirtualHost> 
# systemctl restart httpd
#########重起服务后发现报错,根据报错命令排错
If you want to allow /usr/sbin/httpd to bind to network port 8909
  Then you need to modify the port type.
  Do
# semanage port -a -t PORT_TYPE -p tcp 8909

        SELinux非默认端口的开放

        格式: semanage port -a  -t http_port_t   -p tcp 8909   (-a:添加     -t:类型    -p:协议)

# semanage port -l | grep http   ####查看SElinux默认对于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  ###SElinux放行8909端口,另此命令执行后需要等一段时间才能生效,设备内存小的话有可能会引起死机
#systemctl restart httpd
########测试访问成功

 8.Web安全

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

a.部署网站证书(营业执照)  
# cd /etc/pki/tls/certs
# wget http://classroom.example.com/pub/tls/certs/server0.crt
# ls

b.部署根证书(公安局信息)
# cd /etc/pki/tls/certs
# wget http://classroom.example.com/pub/example-ca.crt
# ls

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

d.安装支持安全https的软件
# yum -y install mod_ssl

e.修改配置文件
# vim /etc/httpd/conf.d/ssl.conf

vim /etc/httpd/conf.d/ssl.conf
59 DocumentRoot "/var/www/html"
60 ServerName www0.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
#systemctl restart httpd
######测试访问

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值