安裝Apache服務程序html
須要注意apache服務程序的軟件包名稱叫作httpd,所以直接執行yum install apache則是錯誤的。linux
[root@liuxuanke-hbza ~]# yum install httpd*apache
使用Vim編輯器建立Yum倉庫的配置文件:vim
[root@liuxuanke-hbza ~]# vim /etc/yum.repos.d/rhel7.repocentos
[rhel7]安全
name=rhel7服務器
baseurl=file:///media/cdromtcp
enabled=1編輯器
gpgcheck=0ide
運行Apache服務程序並設置爲開機啓動
啓動Apache服務程序:
[root@liuxuanke-hbza ~]# systemctl start httpd
設置爲開機自啓動:
[root@liuxuanke-hbza ~]# systemctl enable httpd
基於IP地址
一臺服務器擁有多個IP地址,當用戶訪問不一樣IP地址時顯示不一樣的網站頁面。
一、使用nmtui命令爲網卡添加多個IP地址(192.168.10.100/110/120):
從新啓動網卡設備後使用ping命令檢查是否配置正確(這項很重要,必定要測試好再進行下一步!)
二、分別建立網站數據目錄
在/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
三、在配置文件(/etc/httpd/conf/httpd.conf)中描述基於主機名稱的虛擬主機
四、修改網站數據目錄的SELinux安全上下文
當即恢復SELinux安全上下文:
[root@liuxuanke-hbza ~]# restorecon -Rv /home/wwwroot
重啓服務
[root@liuxuanke-hbza ~]# systemctl restart httpd
分別訪問一下,驗證結果
完成本次實驗以後請還原虛擬機在進行如下實驗
基於主機名
當服務器沒法爲每一個網站都分配到獨立IP地址時,能夠試試讓Apache服務程序自動識別來源主機名或域名而後跳轉到指定的網站。
一、配置網卡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
二、分別建立網站數據目錄
[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
三、在配置文件中描述基於主機名稱的虛擬主機
<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
五、分別訪問網站驗證結果
請注意還原虛擬機快照再進行下一個實驗,不然可能致使配置文件衝突而報錯。
基於端口號
咱們可讓服務器開啓多個服務端口後,而後讓用戶可以經過訪問服務器的指定端口來找到想要的網站。
一、配置服務器的IP地址
二、分別建立網站數據目錄
分別建立端口爲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
三、在配置文件中描述基於端口號的虛擬主機
編輯主配置文件(/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的名義監聽了
四、修改網站數據目錄的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
五、分別訪問網站查看驗證結果