安裝Apache服務程序
需要注意apache服務程序的軟件包名稱叫做httpd,因此直接執行yum install apache則是錯誤的。
[root@liuxuanke-hbza ~]# yum install httpd*
使用Vim編輯器創建Yum倉庫的配置文件:
[root@liuxuanke-hbza ~]# vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
運行Apache服務程序並設置為開機啟動
啟動Apache服務程序:
[root@liuxuanke-hbza ~]# systemctl start httpd
設置為開機自啟動:
[root@liuxuanke-hbza ~]# systemctl enable httpd
基於IP地址
一台服務器擁有多個IP地址,當用戶訪問不同IP地址時顯示不同的網站頁面。
1、使用nmtui命令為網卡添加多個IP地址(192.168.10.100/110/120):
重新啟動網卡設備后使用ping命令檢查是否配置正確(這項很重要,一定要測試好再進行下一步!)
2、分別創建網站數據目錄
在/home/wwwroot目錄下分別創建三個網站數據目錄:
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/100
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/110
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/120
分別在這三個網站數據目錄中寫入主頁文件,內容為該網站的IP地址:
[root@liuxuanke-hbza ~]# echo "IP:192.168.10.100" > /home/wwwroot/100/index.html
[root@liuxuanke-hbza ~]# echo "IP:192.168.10.110" > /home/wwwroot/110/index.html
[root@liuxuanke-hbza ~]# echo "IP:192.168.10.120" > /home/wwwroot/120/index.html
3、在配置文件(/etc/httpd/conf/httpd.conf)中描述基於主機名稱的虛擬主機
4、修改網站數據目錄的SELinux安全上下文
立即恢復SELinux安全上下文:
[root@liuxuanke-hbza ~]# restorecon -Rv /home/wwwroot
重啟服務
[root@liuxuanke-hbza ~]# systemctl restart httpd
分別訪問一下,驗證結果
完成本次實驗之后請還原虛擬機在進行以下實驗
基於主機名
當服務器無法為每個網站都分配到獨立IP地址時,可以試試讓Apache服務程序自動識別來源主機名或域名然后跳轉到指定的網站。
1、配置網卡IP地址與hosts文件
hosts文件作用是定義IP地址與主機名的映射關系,即強制將某個主機名地址解析到指定的IP地址
[root@liuxuanke-hbza ~]# vim /etc/hosts
//每行只能寫一條,格式為IP地址+空格+主機名(域名)。
192.168.10.100 www.centos.com
192.168.10.100 bbs.centos.com
192.168.10.100 tech.centos.com
2、分別創建網站數據目錄
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/www
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/bbs
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/tech
分別在網站目錄中寫入不同的首頁文件:
[root@liuxuanke-hbza ~]# echo "www.centos.com" > /home/wwwroot/www/index.html
[root@liuxuanke-hbza ~]# echo "bbs.centos.com" > /home/wwwroot/bbs/index.html
[root@liuxuanke-hbza ~]# echo "tech.centos.com" > /home/wwwroot/tech/index.html
3、在配置文件中描述基於主機名稱的虛擬主機
<VirtualHost 192.168.10.100>
DocumentRoot "/home/wwwroot/www"
ServerName "www.centos.com"
<Directory "/home/wwwroot/www">
AllowOverride None
Require all granted
</directory>
</VirtualHost>
<VirtualHost 192.168.10.100>
DocumentRoot "/home/wwwroot/bbs"
ServerName "bbs.centos.com"
<Directory "/home/wwwroot/bbs">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.10.100>
DocumentRoot "/home/wwwroot/tech"
ServerName "tech.centos.com"
<Directory "/home/wwwroot/tech">
AllowOverride None
Require all granted
</directory>
</VirtualHost>
重啟服務
[root@liuxuanke-hbza ~]# systemctl restart httpd
設置為開機自啟動:
[root@liuxuanke-hbza ~]# systemctl enable httpd
5、分別訪問網站驗證結果
請注意還原虛擬機快照再進行下一個實驗,否則可能導致配置文件沖突而報錯。
基於端口號
我們可以讓服務器開啟多個服務端口后,然后讓用戶能夠通過訪問服務器的指定端口來找到想要的網站。
1、配置服務器的IP地址
2、分別創建網站數據目錄
分別創建端口為6111,6222的網站數據目錄:
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/6111
[root@liuxuanke-hbza ~]# mkdir -p /home/wwwroot/6222
分別在網站數據目錄中寫入不同內容的主頁文件:
[root@liuxuanke-hbza ~]# echo "port:6111" > /home/wwwroot/6111/index.html
[root@liuxuanke-hbza ~]# echo "port:6222" > /home/wwwroot/6222/index.html
3、在配置文件中描述基於端口號的虛擬主機
編輯主配置文件(/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>
修改完后,記得重啟服務
出現了錯誤這是因為SELinux服務檢測到6111與6222端口原本並不屬於Apache服務端口,但現在卻被以Apache的名義監聽了
4、修改網站數據目錄的SELinux安全上下文並允許端口監聽
讓新的SElinux安全上下文立即生效:
[root@liuxuanke-hbza ~]# restorecon -Rv /home/wwwroot/
使用semanage命令搜索在SELinux系統中有關http服務的端口號:
[root@liuxuanke-hbza ~]# semanage port -l| grep http
默認的端口號中沒有6111 、6222,所以需要添加
[root@liuxuanke-hbza ~]# semanage port -a -t http_port_t -p tcp 6111
[root@liuxuanke-hbza ~]# semanage port -a -t http_port_t -p tcp 6222
再來看下SELinux的端口規則(已經添加成功了):
再嘗試啟動服務程序就沒有問題了 systemctl restart httpd
5、分別訪問網站查看驗證結果