zoukankan      html  css  js  c++  java
  • Apache的虚拟主机功能(基于IP地址,基于主机名,基于端口号)

    Apache的虚拟主机功能 (Virtual Host) 是可以让一台服务器基于IP、主机名或端口号实现提供多个网站服务的技术。

    Apache的配置容器

    <Directory></Directory>用于对指定目录(可使用Shell通配符)实施额外的配置

    <Files></Files>用于对指定文件(可使用Shell通配符)实施额外的配置

    < Location></Location>用于对指定URL(可使用Shell通配符)实施额外的配置

    <Limit></Limit>用于对指定HTTP方法实施额外的配置

    <LimitExcept></LimitExcept>用于对指定HTTP方法之外的方法实施额外的配置

    服务目录

    /etc/httpd

    配置文件

    /etc/httpd/conf/httpd.conf     Apache主配置文件

    网站数据目录

    /var/www/html/var/www/html/:根文档目录

    访问日志

    /var/log/httpd/access_log

    错误日志

    /var/log/httpd/error_log

    安装Apache服务程序

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

    设备状态设置:启动时链接

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

    [root@fengnuo-hbza ~]# mkdir -p /media/cdrom

    [root@fengnuo-hbza ~]# mount /dev/cdrom /media/cdrom

    mount: /dev/sr0 写保护,将以只读方式挂载

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

    命令:vim /etc/yum.repos.d/rhel7.repo

    写入:

    [rhel7]

    name=rhel7

    baseurl=file:///media/cdrom

    enabled=1

    gpgcheck=0

     

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

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

    命令:yum install httpd

     

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

    启动Apache服务程序:

    命令:systemctl start httpd

    设置为开机自启动:

    命令:systemctl enable httpd

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

    命令:firefox

     

    (1)基于IP地址

    这种情况很常见:一台服务器拥有多个IP地址,当用户访问不同IP地址时显示不同的网站页面。

    第1步:使用nmtui命令为网卡添加多个IP地址(192.168.14.100/20/30):
    1.执行命令“nmtui”  2.选择编辑的连接  3.添加IP地址  4.重新启动网卡设备后使用ping命令检查是否配置正确

     

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

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/10

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/20

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/30

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

    [root@fengnuo-hbza ~]# echo "IP:192.168.14.100"> /home/wwwroot/10/index.html

    [root@fengnuo-hbza ~]# echo "IP:192.168.14.20"> /home/wwwroot/20/index.html

    [root@fengnuo-hbza ~]# echo "IP:192.168.14.30"> /home/wwwroot/30/index.html

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

    进入配置文件

    [root@fengnuo-hbza ~]# vim /etc/httpd/conf/httpd.conf

    在配置文件最后添加以下内容:

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

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

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

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

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*

    立即恢复SELinux安全上下文:

    [root@fengnuo-hbza ~]# restorecon -Rv /home/wwwroot

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

     

     

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

    (2)基于主机名

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

    第1步:配置网卡IP地址与hosts文件。
    hosts文件作用是定义IP地址与主机名的映射关系,即强制将某个主机名地址解析到指定的IP地址

    命令:vim /etc/hosts

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

    192.168.14.100 www.fengnuo-hbza.com

    192.168.14.100 bbs.fengnuo-hbza.com

    192.168.14.100 tech.fengnuo-hbza.com

     

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/www

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/bbs

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/tech

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

    [root@fengnuo-hbza ~]# echo "WWW.fengnuo-hbza.com"> /home/wwwroot/www/index.html

    [root@fengnuo-hbza ~]# echo "BBS.fengnuo-hbza.com"> /home/wwwroot/bbs/index.html

    [root@fengnuo-hbza ~]# echo "TECH.fengnuo-hbza.com"> /home/wwwroot/tech/index.html

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

    进入配置文件

    [root@fengnuo-hbza ~]# vim /etc/httpd/conf/httpd.conf

    <VirtualHost 192.168.14.100>

    DocumentRoot "/home/wwwroot/www"

    ServerName "www.fengnuo-hbza.com"

    <Directory "/home/wwwroot/www">

    AllowOverride None

    Require all granted    

    </directory>

    </VirtualHost>

    <VirtualHost 192.168.14.100>

    DocumentRoot "/home/wwwroot/bbs"

    ServerName "bbs.fengnuo-hbza.com"

    <Directory "/home/wwwroot/bbs">

    AllowOverride None

    Require all granted

    </Directory>

    </VirtualHost>

    <VirtualHost 192.168.14.100>

    DocumentRoot "/home/wwwroot/tech"

    ServerName "tech.fengnuo-hbza.com"

    <Directory "/home/wwwroot/tech">

    AllowOverride None

    Require all granted

    </directory>

    </VirtualHost>

    读者们可以直接复制上面的参数到主配置文件(/etc/httpd/conf/httpd.conf)的末尾然后重启apache网站服务程序。

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

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*

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

    [root@fengnuo-hbza ~]# restorecon -Rv /home/wwwroot/

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

     

     

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

    (3)基于端口号

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

    第1步:配置服务器的IP地址:

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

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

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/6111

    [root@fengnuo-hbza ~]# mkdir -p /home/wwwroot/6222

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

    [root@fengnuo-hbza ~]# echo "port:6111"> /home/wwwroot/6111/index.html

    [root@fengnuo-hbza ~]# echo "port:6222"> /home/wwwroot/6222/index.html

    第3步:在配置文件中描述基于端口号的虚拟主机。

    进入配置文件:

    [root@fengnuo-hbza ~]# vim /etc/httpd/conf/httpd.conf
    编辑主配置文件(/etc/httpd/conf/httpd.conf),找到约在42行的Listen 80,并在下面追加:

    Listen 6111
    Listen 6222

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

    <VirtualHost 192.168.10.10:6111>
    DocumentRoot “/home/wwwroot/6111”
    ServerName www.linuxprobe.com

    <Directory “/home/wwwroot/6111”>
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

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

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

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

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_user_content_t /home/wwwroot

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111/*

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222

    [root@fengnuo-hbza ~]# semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222/*

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

    [root@fengnuo-hbza ~]# restorecon -Rv /home/wwwroot/

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

    [root@fengnuo-hbza ~]# 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

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

    [root@fengnuo-hbza ~]# semanage port -a -t http_port_t -p tcp 6111

    [root@fengnuo-hbza ~]# semanage port -a -t http_port_t -p tcp 6222

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

    [root@fengnuo-hbza ~]# 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      6222, 6111, 80, 81, 443, 488, 8008, 8009, 8443, 9000

    pegasus_http_port_t            tcp      5988

    pegasus_https_port_t           tcp      5989

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

    [root@fengnuo-hbza ~]# systemctl restart httpd

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

     

     

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

  • 相关阅读:
    如何才能成为一个真正的编程高手?
    C#中base 关键字的作用
    线程间值的传递
    C#多线程 线程的启动
    C#接口的作用(经典)
    IEnumerable和IQueryable和Linq的查询
    CSS-定位
    HTML 常用标签
    CSS十大选择器
    前端开发师职业生涯入坑指南
  • 原文地址:https://www.cnblogs.com/Biebernuo/p/11874203.html
Copyright © 2011-2022 走看看