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. dgango 反射

    相关 """ 反射 由字符串反向找 变量.函数.类 """ import sys class Person(object): def __i ...

  2. Atom 基础使用

    当你安装好了 Atom 之后,让我们来认识一下它吧. 当你第一次打开 Atom 的时候,你会看到这样的一个窗口:   这是 Atom 的欢迎屏幕(welcome screen),它展示了一些不错的建议 ...

  3. 洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用

    https://www.luogu.org/problem/P2158 #include<bits/stdc++.h> #define int long long using namesp ...

  4. Adobe 系列下载链接

    (注意!:在下方链接前加上 "pan.baidu.com/s/" 才是正确网址,用"百度网盘"下载) Photoshop 专区(图像处理软件) Adobe Ph ...

  5. 1.3、WebRTC架构

    文章导读:本文的讲解的是webrtc系统架构,每个人都要Get到这些知识:第一.了解webrtc架构分层:第二.对每层技术有一个清晰的认知.学完本节内容可以为我们后面学习核心API起到至关重要的作用, ...

  6. 题解【Codeforces438D】The Child and Sequence

    题目描述 At the children's day, the child came to Picks's house, and messed his house up. Picks was angr ...

  7. OSI七层协议详解

    一.简介 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式 ...

  8. 励志成为优产的母猪--------猜数游戏 ,历史记录,pickle保存,队列deque

    # pickle 可以处理复杂的序列化语法.(例如自定义的类的方法,游戏的存档等),存档以文件的形式保存 参见 https://www.cnblogs.com/abobo/p/8080447.html ...

  9. PHP基础学习笔记4

    一.日期 1.1 date()函数 语法:string date ( string $format [, int $timestamp ] ) 参数:参数描述format必需,规定时间戳的格式:tim ...

  10. Nginx可以做什么

    Nginx能做什么 ——反向代理 ——负载均衡 ——HTTP服务器(动静分离) ——正向代理 反向代理 反向代理应该是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理(R ...