linux 系統虛擬主機功能
阿新 • • 發佈:2020-11-24
利用虛擬主機功能,可以把一臺處於執行狀態的物理伺服器分割成多個“虛擬的伺服器”。
Apache的虛擬主機功能是伺服器基於使用者請求的不同IP地址、主機域名或埠號,實現一臺伺服器提供多個網站同時為外部提供訪問服務的技術。
可以基於三種方式實現:
- 基於IP地址
- 基於域名
- 基於埠號
基於IP地址實現同時提供多個網站服務:
如果一臺伺服器有多個IP地址,而且每個IP地址與伺服器上部署的每個網站一一對應,這樣當用戶請求訪問不同的IP地址時, 會訪問到不同網站的頁面資源。
1、給虛擬機器配置多個IP地址:
[root@PC1linuxprobe html]# nmtui
2、重啟網絡卡,測試三個IP地址的聯通性
[root@PC1linuxprobe html]# systemctl restart network
[root@PC1linuxprobe html]# ping -c 2 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.041 ms
--- 192.168.10.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.041/0.047/0.054/0.009 ms
[root@PC1linuxprobe html]# ping -c 2 192.168.10.20
PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data.
64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 192.168.10.20: icmp_seq=2 ttl=64 time=0.041 ms
--- 192.168.10.20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.033/0.037/0.041/0.004 ms
[root@PC1linuxprobe html]# ping -c 2 192.168.10.30
PING 192.168.10.30 (192.168.10.30) 56(84) bytes of data.
64 bytes from 192.168.10.30: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 192.168.10.30: icmp_seq=2 ttl=64 time=0.039 ms
--- 192.168.10.30 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.031/0.035/0.039/0.004 ms
3、建立網站資料目錄以及網站首頁資料
[root@PC1linuxprobe html]# mkdir -p /home/wwwroot/10
[root@PC1linuxprobe html]# mkdir -p /home/wwwroot/20
[root@PC1linuxprobe html]# mkdir -p /home/wwwroot/30
[root@PC1linuxprobe html]# echo 11111 > /home/wwwroot/10/index.html
[root@PC1linuxprobe html]# echo 22222 > /home/wwwroot/20/index.html
[root@PC1linuxprobe html]# echo 33333 > /home/wwwroot/30/index.html
4、修改httpd服務主配置檔案,即寫入三個基於IP地址的虛擬主機網站引數。
…………
111 # below.
112 #
113 <VirtualHost 192.168.10.10>
114 DocumentRoot /home/wwwroot/10
115 ServerName www.linuxprobe.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
121 ###############
122 <VirtualHost 192.168.10.20>
123 DocumentRoot /home/wwwroot/20
124 ServerName bbs.linuxprobe.com
125 <Directory /home/wwwroot/20 >
126 AllowOverride None
127 Require all granted
128 </Directory>
129 </VirtualHost>
130 ###############
131 <VirtualHost 192.168.10.30>
132 DocumentRoot /home/wwwroot/30
133 ServerName tech.linuxprobe.com
134 <Directory /home/wwwroot/30 >
135 AllowOverride None
136 Require all granted
137 </Directory>
138 </VirtualHost>
139 #
…………
5、重啟httpd服務
[root@PC1linuxprobe html]# systemctl restart httpd
6、測試訪問網站(均不能檢視到首頁資料)
7、檢視並修改網站資料目錄的SElinux上下文
[root@PC1linuxprobe html]# ls -ldZ /var/www/html/ (預設路徑的SElinux上下文值)
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@PC1linuxprobe html]# ls -ldZ /home/wwwroot/ ## 網站資料目錄的SElinux上下文值
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot/
[root@PC1linuxprobe html]# ls -ldZ /home/wwwroot/10
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot/10
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot ## 修改上下文值
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
[root@PC1linuxprobe html]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
[root@PC1linuxprobe html]# restorecon -Rv /home/wwwroot/ ## 立即生效
restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[root@PC1linuxprobe html]# ls -ldZ /home/wwwroot/10 ## 再次檢視
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /home/wwwroot/10
8、測試效果