engineer

本文涉及的产品
.cn 域名,1个 12个月
简介:

搭建基本的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

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

  2. 程序 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

  3. 客户端测试访问 
    [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
########################################################

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

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

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




     本文转自sweak_h 51CTO博客,原文链接:http://blog.51cto.com/13478354/2051463,如需转载请自行联系原作者



相关文章
|
Shell Linux 开发工具
|
网络安全 开发工具 数据安全/隐私保护
|
存储 关系型数据库 MySQL
|
Web App开发 测试技术 开发工具
|
网络协议 Shell 网络安全
|
Shell Linux 开发工具
|
安全 开发工具
|
Devops 网络安全 开发工具
|
JavaScript Java 程序员
|
安全 C# C++
微软职位内部推荐-Senior Development Engineer
微软近期Open的职位: Job Title: Senior Software Development Engineering Work Location: Suzhou, China Enterprise customer and consumers are rapidly adopting Office 365 Cloud services.
881 0