• Apache的虚拟主机功能(基于IP地址、基于虚拟主机、基于端口)


     

    1. 安装Apache服务程序(系统用户,1-199之间)

    第一步:在虚拟机软件里选中光盘镜像:

     

    第二步:将光盘设备挂载到/media/cdrom目录

    输入:mkdir -p /media/cdrom;   

               mount /dev/cdrom /media/cdrom

     

    第三步:使用Vim编辑器创建Yum仓库的配置文件

    输入:vim /etc/yum.repos.d/rhel7.repo

    输入:[rhel7]

    name=rhel7

    baseurl=file:///media/cdrom

    enabled=1

    gpgcheck=0

     

    第四步:安装Apache服务程序:

    需要注意apache服务程序的软件包名称叫做httpd,因此直接执行yum install apache则是错误的

    输入:yum install httpd

     

    第五步:运行Apache服务程序并设置为开机启动:

    Apache服务程序,输入:systemctl start httpd

    设置为开机自启动,输入systemctl enable httpd

    打开浏览器后键入http://127.0.0.1,就能看到默认界面了。

     

     

    一、 基于IP地址(当用户访问不同IP地址时显示不同的网站页面)

    1步:使用nmtui命令为网卡添加多个IP地址(192.168.10.10/20/30):

    1. 执行命令“nmtui” 
    2. 选择编辑的连接 
    3. 添加IP地址 

             4.重新启动网卡设备后使用ping命令检查是否配置正确

     

     

    2步:分别创建网站数据目录。
    /home/wwwroot目录下分别创建三个网站数据目录

    输入:mkdir -p /home/wwwroot/100

               mkdir -p /home/wwwroot/20

               mkdir -p /home/wwwroot/30

    分别在这三个网站数据目录中写入主页文件,内容为该网站的IP地址:

    输入:echo "IP:192.168.17.100" > /home/wwwroot/10/index.html

              echo "IP:192.168.17.20" > /home/wwwroot/10/index.html

              echo "IP:192.168.17.30" > /home/wwwroot/10/index.html

     

    3步:在配置文件中描述基于IP地址的虚拟主机。

    输入:vim /etc/httpd/conf/httpd.conf

    插入:

    <VirtualHost 192.168.17.100>
    DocumentRoot /home/wwwroot/100
    ServerName www.linuxprobe.com
    <Directory /home/wwwroot/100 >
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

    <VirtualHost 192.168.17.20>
    DocumentRoot /home/wwwroot/20
    ServerName bbs.linuxprobe.com
    <Directory /home/wwwroot/20 >
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

    <VirtualHost 192.168.17.30>
    DocumentRoot /home/wwwroot/30
    ServerName tech.linuxprobe.com
    <Directory /home/wwwroot/30 >
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

     

    4步:修改网站数据目录的SELinux安全上下文。
    需要分别修改网站数据目录以及网页文件的SELinux安全上下文:

    输入:semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

               semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/100

               semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/100/*

              semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20

              semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*

              semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30

              semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*

    立即恢复SELinux安全上下文,输入: restorecon -Rv /home/wwwroot

     

    5步:分别访问192.168.17.100/20/30验证结果:

     

     

     

     请注意:当完成本实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突而报错。

         

    二、基于主机名

    当服务器无法为每个网站都分配到独立IP地址时,可以试试让Apache服务程序自动识别来源主机名或域名然后跳转到指定的网站。

    1步:配置网卡IP地址与hosts文件输入:ifconfig

     

    hosts文件作用是定义IP地址与主机名的映射关系,即强制将某个主机名地址解析到指定的IP地址

    输入:vim /etc/hosts

    //每行只能写一条,格式为IP地址+空格+主机名(域名)

    写入  192.168.17.100 www.linuxprobe.com

    192.168.17.100 bbs.linuxprobe.com

    192.168.17.100 tech.linuxprobe.com

     

    2步:分别创建网站数据目录,

    输入:mkdir -p /home/wwwroot/www

              mkdir -p /home/wwwroot/bbs

              mkdir -p /home/wwwroot/tech

    分别在网站目录中写入不同的首页文件:

    输入: echo "WWW.linuxprobe.com" > /home/wwwroot/www/index.html

           echo "BBS.linuxprobe.com" > /home/wwwroot/bbs/index.html

     echo "TECH.linuxprobe.com" > /home/wwwroot/tech/index.html

     

    3步:在配置文件中描述基于主机名称的虚拟主机。
    编辑主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定义虚拟主机信息

    输入:vim /etc/httpd/conf/httpd,conf

    <VirtualHost 192.168.17.100>

    DocumentRoot "/home/wwwroot/www"

    ServerName "www.linuxprobe.com"

    <Directory "/home/wwwroot/www">

    AllowOverride None

    Require all granted

    </directory>

    </VirtualHost>

    <VirtualHost 192.168.17.100>

    DocumentRoot "/home/wwwroot/bbs"

    ServerName "bbs.linuxprobe.com"

    <Directory "/home/wwwroot/bbs">

    AllowOverride None

    Require all granted

    </Directory>

    </VirtualHost>

    <VirtualHost 192.168.17.100>

    DocumentRoot "/home/wwwroot/tech"

    ServerName "tech.linuxprobe.com"

    <Directory "/home/wwwroot/tech">

    AllowOverride None

    Require all granted

    </directory>

    </VirtualHost>

     

    4步:修改网站数据目录的SELinux安全上下文

    输入:

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech

     semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*

     

    让新的SELinux安全上下文立即生效

    输入: restorecon -Rv /home/wwwroot/

    5步:分别访问网站验证结果

     

     

     

     请注意:当您完成本实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突而报错。

    三、基于端口

    我们可以让服务器开启多个服务端口后,然后让用户能够通过访问服务器的指定端口来找到想要的网站。

    1步:配置服务器的IP地址输入:ifconfig

     

    2步:分别创建网站数据目录。
    分别创建端口为6111,6222的网站数据目录:

    输入:  mkdir -p /home/wwwroot/6111

                 mkdir -p /home/wwwroot/6222

    分别在网站数据目录中写入不同内容的主页文件:

    输入:echo "port:6111" > /home/wwwroot/6111/index.html

               echo "port:6222" > /home/wwwroot/6222/index.html

     

    3步:在配置文件中描述基于端口号的虚拟主机。
    编辑主配置文件(/etc/httpd/conf/httpd.conf),找到约在42行的Listen 80,并在下面追加:

    Listen 6111
    Listen 6222

    然后在主配置文件的末尾按下面格式定义虚拟主机信息:

    <VirtualHost 192.168.17.100:6111>
    DocumentRoot “/home/wwwroot/6111”
    ServerName www.linuxprobe.com
    <Directory “/home/wwwroot/6111”>
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

    <VirtualHost 192.168.17.100:6222>
    DocumentRoot “/home/wwwroot/6222”
    ServerName bbs.linuxprobe.com
    <Directory “/home/wwwroot/6222”>
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

     

     

    什么!竟然报错了:

    Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

    这是因为SELinux服务检测到6111与6222端口原本并不属于Apache服务端口,但现在却被以Apache的名义监听了.

     

    4步:修改网站数据目录的SELinux安全上下文并允许端口监听。
    修改网站数据目录的安全上下文:

    输入: semanage fcontext -a -t httpd_user_content_t /home/wwwroot

                semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111

               semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111/*

               semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222

               semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222/*

    让新的SElinux安全上下文立即生效:

    输入: restorecon -Rv /home/wwwroot/

     

    使用semanage命令搜索在SELinux系统中有关http服务的端口号:

    输入:semanage port -l| grep http

     

    默认包括80,81,443,488,8008,8009,8443,9000却没有咱们定义的端口号,那么添加进去就可以了:

    输入:  semanage port -a -t http_port_t -p tcp 6111

                 semanage port -a -t http_port_t -p tcp 6222

    再来看下SELinux的端口规则(已经添加成功了):

    输入:  semanage port -l| grep http

     

    再次尝试启动Apache网站服务程序就没有问题了:

    输入:systemctl restart httpd

    5步:分别访问网站验证结果:

     

     

  • 相关阅读:
    DeepWalk论文精读:(2)核心算法
    DeepWalk论文精读:(3)实验
    DeepWalk论文精读:(1)解决问题&相关工作
    面向对象第四单元(UML)总结
    面向对象第三单元(地铁)总结
    面向对象第二单元(电梯)总结
    面向对象第一单元(多项式求导)总结
    我的2017年总结
    【转】胡侃学习(理论)计算机
    当当图书又打折?
  • 原文地址:https://www.cnblogs.com/199904-04/p/11858057.html
Copyright © 2020-2023  润新知