Apache服務(基於IP地址,主機名,端口號)


安裝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、分別訪問網站查看驗證結果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM