虚拟主机
一个Web 服务器,如果只能运行一个网站的话,那么对于一些经费不是很足的小公司来说,
那就有些奢侈了,资源没有办法完全利用上 ( 无论是 内存,CPU,硬盘,带宽等等 )
即 如果每台运行 Linux 系统的服务器上只能运行一个网站,那么,人气低,流浪小的草根网
站就会被迫承担高昂的服务器租赁费用了,这显然会造成硬件资源的浪费。
这些浪费的资源呢,如果没浪费的话,它用处可太多了,怎么着也比浪费了强啊
===>>>
哪怕把这些资源租给别人用呢,或者 ,也可以架设其它的网站同时给用户服务 ~!
所以,为了避免浪费这些资源,无论是 硬件资源 还是网络资源、软件资源 的浪费,
所以, Apache 提供了 虚拟专用服务器 ( VPS )~!!
===>>>
虚拟专用服务器 它的主要作用就是通过一些方式 进行 一些 隔离 ,
比如说 : 通过物理状态 或者 软件状态 将一个 物理上的计算机 虚拟成
多个逻辑上的计算机 有点像 VMware ;
那就是说,以前 一台物理机 运行一个网站,而现在用 虚拟专用服
务器 就可以把 这个物理计算机 虚拟出来多个 虚拟主机 ,每个虚拟
主机就可以专门架设运行网站。
换句话说,一个物理机可以应用多个网站,这样就可以充分利用计
算机的硬件、软件资源、带宽等资源了 ~!!
那么,怎么把 物理的计算机 虚拟成 多台逻辑上的虚拟主机 继而架设成多个网站呢 ??
===>>>
这就是我们 虚拟主机 搭建的几种方式了
( 基于 IP , 基于 端口号 , 基于 域名 )
Apache 的虚拟主机功能是服务器基于用户请求的不同 IP 地址、 主机域名 或 端口
号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的资源
不同,最终获得的网页内容也是不同的 ~!!!!
基于端口 :
原理 :
# 基于端口号的虚拟主机功能可以让用户通过指定端口号访问服务器上的网站资源
既然是 基于端口号,那咱就复习下, 那端口号作用于 TCP/IP 的那一层 ?
===>>>
端口号 是 基于传输层的~!!!
准备工作 :
我们先恢复快照,然后进行预处理准备工作 ( 其实,和前面的预处理没啥区别 )
# 关闭 selinux 以及防火墙
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
# 安装 Apache
[root@server ~]# dnf install httpd -y
# 新建两个 目录 , 并使用 xftp 上传 两个 网页源文件
[root@server ~]# mkdir -pv /www/port{5111,5222}
创建两个目录 分别为 port5111, port5222
意思是我们基于的端口号分别为5111,5222
端口号,它的范围是 0-65535,我们用的端口号是 5111,5222 因为这两个端口号
都是高端口号,就是不常用的端口号,所以这两个数字都比较大。
-p 选项为 递归创建, -v 显示详细过程信息
上传网页源文件的时候也要注意是直接把 网页源文件 上传过去 ~!!!
至此,我们的主备工作就进行完毕了 ~!!!
先提问一个问题,基于目前状态,我们的 IP 是有几个 ?? 一个 还是 两个 ??
我们前面的 基于IP 进行虚拟主机搭建,是专门添加了 两个 IP
而现在,我们已经恢复了快照,所以,之前所有的配置都回归了原样,
所以我们现在的IP 只有一个。
我们现在是 要基于 端口 进行虚拟主机配置,所以,我们不需要再添加 IP ,就基于
这一个 IP ; 我们是基于这一个 IP 再分支成两个不同的端口号,从而映射两个网站
我们要知道 IP 是区分网络连接的,端口号是区分 服务的;
我们打开 httpd 的主配置文件
[root@server ~]# vim /etc/httpd/conf/httpd.conf
添加两个端口 :
主配置文件本身是 Listen 监听的80 端口 ,我们在后面进行添加即可 ~!
我们在 httpd 主配置文件进行 虚拟主机配置
注 : 在这里需要知会一声的是,我们在前面 基于 IP 进行的虚拟主机配置,我们在
Apache 的主配置文件里 我们是把 107-110 行删除了的( 也就是上图的 109-
112行)的内容 ,其实呢,这块儿的配置内容不删也行 ~!!!
因为这个区域配置的目的是 限定根目录的访问权限 ,你可以看到上图中的 权
限那里显示的是 denied ( 就是否定,就是没有权限来访问 根目录 )
其实,不删反而还是好的,因为害怕用户访问到你的主机之后进行了提权操作( 就
是 执行了 cd .. 即 返回上一级 ), 由于你只限定了某个目录比如说 /etc/mulu 这个目
录,在把对根目录的限定删除后,而现在对/etc/mulu进行限定的话,用户访问到该目
录后,一旦用户执行了 cd .. 这意味这啥,意味着用户访问到了 上一级,而上一级是
啥? 是根目录( 而你已经把对根目录的限定删除了 )
所以说,现在意味着啥,意味着用户可以访问整个服务器的所有权限,后果非常害
怕,因此,一般来讲 我们不应该删除 对根目录的限定。
所以,第 109 行 到 112 行 应当保留 ~!!!!!!!!!!
对上面虚拟主机配置各项内容进行解释
===>>>
<VirtualHost 192.168.153.130:5111> # 虚拟主机配置起始, 注意这里是 IP:端口号
DocumentRoot /www/port5111 # 启动目录
ServerName 'www.sxhkt.com' # 我们说的域名,这里域名随便写,因为我们也不用
<Directory /www/port5111> # 区域配置,目录权限
AllowOverride None # 禁止其它权限文件覆盖当前文件
Require all granted # 权限是允许
</Directory> # 区域配置结束
</VirtualHost> # 虚拟主机配置结束
重启 Apache 服务
[root@server ~]# systemctl restart httpd
验证 :
这是基于 端口号为 5111 来验证的虚拟主机,结果显示出了 网页页面,说明我们通过 端
口号来访问是成功的 ~!!
我们还有一个 端口号 是 5222, 那我们接下来就用 5222 端口号来进行 验证 :
上示 也写了 www.zy.com 这个域名也没用,用不了,只是写上,说明此处应该写的是域名
验证 :
我们进行验证 ,显示出网页,即说明端口号访问成功 ~!!!!