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步:分别访问网站验证结果:

Apache的虚拟主机功能(基于IP地址、基于虚拟主机、基于端口)的更多相关文章

  1. Apache(基于IP地址)

    1.Apache的安装 (1)先用命令“cat /etc/passwd|grep apache”,查看有有没有Apache ①如果有Apache,我们就不用再安装 ②如果没有,我们就安装一下 (2)使 ...

  2. nginx篇最初级用法之三种虚拟主机基于域名\基于端口\基于IP地址端口的虚拟主机

    在nginx中虚拟主机的类型与apache一样也有三种 1.基于域名的虚拟主机 2.基于端口的虚拟主机 3.基于IP地址端口的虚拟主机 在nginx配置文件中每一个server为一个虚拟主机如果需要多 ...

  3. Apache服务(基于IP地址,主机名,端口号)

    安装Apache服务程序 需要注意apache服务程序的软件包名称叫做httpd,因此直接执行yum install apache则是错误的. [root@liuxuanke-hbza ~]# yum ...

  4. Solaris 10主机名和IP地址步骤

    1.修改主机名: hostname newname vi /etc/hosts vi /etc/hostname.e1000g0 vi /etc/nodename init 6 #重启 --confi ...

  5. 二十二、utl_inaddr(用于取得局域网或Internet环境中的主机名和IP地址)

    1.概述 作用:用于取得局域网或Internet环境中的主机名和IP地址. 2.包的组成 1).get_host_name作用:用于取得指定IP地址所对应的主机名语法:utl_inaddr.get_h ...

  6. Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析(1-4)

    Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配 ...

  7. 【Linux杂记】Linux配置静态IP地址,修改主机名、host

    博主使用的系统是:乌班图16.04 1.设置静态IP方法如下: #sudo vim /etc/network/interfaces #修改如下部分: auto eth0//ipconfig命令查看网卡 ...

  8. 编写Java程序,根据提供的 IP 地址,获取主机名称和域名

    查看本章节 查看作业目录 需求说明: 根据提供的 IP 地址,获取主机名称和域名 实现思路: 创建 GetHostNameByIpAddress 类,在main方法中声明 String 类型的变量 i ...

  9. HttpServletRequest -- 获取请求主机真实的IP地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实 ...

随机推荐

  1. EF的预先加载--Eager Loading

    预先加载 在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 在此需要说明的是:EF中有两种表关联的方法,一种是Join()方法,一种是I ...

  2. VSFTPD服务器

    我虽然vsftpd服务器做了百遍以上,但是我觉的成功率不大.我要写下这篇日记,来让我分析自己曾经的过错!! vsftpd的原理我不多讲!!!请自行百度吧!! 我搭建的环境是 Linux6.4 IP(1 ...

  3. c++踩坑大法好 宏定义 头文件

    1,c++宏定义是干啥的?防止重复引用,如何防止重复引用? //a.h //声明一个类,和其他声明 #include <iostream> class A{ public: static ...

  4. 消息中间件之ActiveMQ

    一.什么是消息中间件(MQ) 1.1 为什么会需要消息队列(MQ)? 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达M ...

  5. Vue路由跳转时显示空白页面,iview的使用

    最近在用iview做项目,需要实现登录,注册,忘记密码等功能.iview-admin本来就有登录功能,于是想照葫芦画瓢,实现登录界面的注册,忘记密码页面路由跳转. router.js里路由配置,刚开始 ...

  6. 2.springboot------微服务

    什么是微服务? 微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合:可以通过http的方式进行互通.要说微服务架构,先得说说过去我们的单体应用架构. 单体应用架 ...

  7. win10显示“没有有效的IP地址”

    可能你没有新建该宽带连接!!!(本人就是蠢到如此地步了_(:з)∠)_)

  8. Iris_cookie和session

    3. Session的使用和控制 在实际的项目开发中,我们会经常有业务场景使用到Session功能.在iris框架中,也为我们提供了方便使用,功能齐全的Session模块.Session模块的源码目录 ...

  9. 每天进步一点点------MicroBlaze

             有了前面两个实例的铺垫,下面这个工程就要带大家尝试搭建一个基于MicroBlaze的应用.特权同学也是第一次接插Xilinx的嵌入式开发平台,跑了一个流程下来,正如所料,和Alter ...

  10. 使用datatable动态添加的顺序与存储的顺序不一致

    原因是datatable在展示数据的时候帮助我们排序了 将其禁止排序即可:"ordering":false