天天看點

利用Apache部署靜态網站(一)

  Apache是世界使用排名第一的Web伺服器軟體。它可以運作在幾乎所有廣泛使用的計算機平台上,由于其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠并且可通過簡單的API擴充,将Perl/Python等解釋器編譯到伺服器中。

Apache服務程式部署

第一步:把CD光牒裝置中的系統鏡像挂載到/media/cdrom目錄

[root@localhost ~]# ls /media/cdrom

ls: 無法通路/media/cdrom: 沒有那個檔案或目錄

[root@localhost ~]# mkdir -p /media/cdrom

[root@localhost ~]# cd /media   參看目錄是否建立成功

[root@localhost media]# ls

cdrom

[root@localhost media]# cd --

[root@localhost ~]# mount /dev/cdrom /media/cdrom  挂載目錄

mount: /dev/sr0 寫保護,将以隻讀方式挂載

第二步:建立Yum倉庫的配置檔案

[root@localhost ~]# vim /etc/yum.repos.d/Centos7.repo

[centos7]

name=centos7

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

第三步:安裝Apache服務程式

注意,使用yum指令進行安裝時,跟在指令後面的Apache服務的軟體包名稱為httpd,如果直接執行yum install apache指令,則系統會報錯。

[root@localhost ~]# yum install httpd -y

已加載插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

base | 3.6 kB 00:00:00

centos7 | 3.6 kB 00:00:00

epel | 4.7 kB 00:00:00

extras | 2.9 kB 00:00:00

updates | 2.9 kB 00:00:00

(1/4): centos7/group_gz | 153 kB 00:00:00

(2/4): centos7/primary_db | 3.3 MB 00:00:00

(3/4): epel/x86_64/updateinfo | 1.0 MB 00:00:01

(4/4): epel/x86_64/primary_db | 6.9 MB 00:00:04

           省略部分安裝資訊

已安裝:

httpd.x86_64 0:2.4.6-97.el7.centos

作為依賴被安裝:

httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7

完畢!

[root@localhost ~]#

 第四步:啟用httpd服務程式并将其加入到開機啟動項中,使其能夠随系統開機而運作,進而持續為使用者提供Web服務

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

在浏覽器(以Firefox浏覽器為例,且是在Linux系統下的浏覽器)的位址欄中輸入http://127.0.0.1并按Enter鍵,就可以看到用于提供Web服務的httpd服務程式的預設頁面了,如下圖所示。

利用Apache部署靜态網站(一)

第五步:配置服務檔案參數

打開httpd服務程式的主配置檔案,所有以井号(#)開始的行都是注釋行,其目的是對httpd服務程式的功能或某一行參數進行介紹,我們不需要研究這些内容。這裡主要研究全局配置參數與區域配置參數的差別。顧名思義,全局配置參數就是一種全局性的配置參數,可作用于對所有的子站點,既保證了子站點的正常通路,也有效減少了頻繁寫入重複參數的工作量。區域配置參數則是單獨針對于每個獨立的子站點進行設定的。

Apache服務中DocumentRoot參數用于定義網站資料的儲存路徑,其參數的預設值是把網站資料存放到/var/www/html目錄中;而目前網站普遍的首頁面名稱是index.html,是以可以向/var/www/html目錄中寫入一個檔案,替換掉httpd服務程式的預設首頁面,該操作會立即生效。

[root@localhost ~]# echo "Welcome To LinuxProbe.Com" > /var/www/html/index.html

在執行上述操作之後,再在Firefox浏覽器中重新整理httpd服務程式,可以看到該程式的首頁面内容已經發生了改變,如圖所示。

利用Apache部署靜态網站(一)

第六步:建立網站資料的儲存目錄,并建立首頁檔案。

[root@localhost ~]# mkdir /home/wwwroot

[root@localhost ~]# echo "The New Web Directory" > /home/wwwroot/index.html

第七步:修改httpd服務程式的主配置檔案。

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

将約第119行用于定義網站資料儲存路徑的參數DocumentRoot修改為/home/wwwroot,同時還需要将約第124行用于定義目錄權限的參數Directory後面的路徑也修改為/home/wwwroot。修改完見下圖。

利用Apache部署靜态網站(一)

第八步:重新啟動httpd服務程式并驗證效果。

浏覽器重新整理頁面後的内容如下圖所示所示。按理來說,網頁上應該顯示的是The New Web Directory,而出現下圖情況,與SELinux有關。

利用Apache部署靜态網站(一)

 SELinux(Security-Enhanced Linux)是美國國家安全局在Linux開源社群的幫助下開發的一個強制通路控制(MAC,Mandatory Access Control)的本機安全性授權。SELinux服務有三種配置模式,具體如下。

enforcing:強制啟用安全政策模式,将攔截服務的不合法請求。

permissive:遇到服務越權通路時,隻發出警告而不強制攔截。

disabled:對于越權的行為不警告也不攔截。

第九步:檢視SELinux服務主配置檔案中定義的預設狀态。

如果是permissive或disabled,建議修改為enforcing。

[root@localhost ~]# vim /etc/selinux/config

利用Apache部署靜态網站(一)

第十步:重新開機虛拟機,并擷取目前SELinux服務的運作模式,然後重新整理網頁,檢視效果。

SELinux服務主配置檔案中,定義的是SELinux的預設運作狀态。配置檔案修改完成後,重新開機虛拟機。再使用getenforce指令獲得目前SELinux服務的運作模式:

[root@localhost ~]# getenforce 

Enforcing

為了确認重新整理網頁後出現 "You don\'t have permission to access /index.html on this server"的結果是由SELinux引起的的,可以用setenforce [0|1]指令修改SELinux目前的運作模式(0為禁用,1為啟用)。

注意,這種修改隻是臨時的,在系統重新開機後就會失效。

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce

Permissive

重新重新整理網頁,如下圖所示,網頁上顯示的内容是我們想要的内容,由此證明前面的問題确實與SELinux服務有關。

利用Apache部署靜态網站(一)

   通過實驗發現,之是以出現這種問題,是因為我們将網站預設存放資料的目錄做了修改,不符合SELinux的監管原則,是以導緻通路網頁時出錯。接下來把SELinux服務恢複到強制啟用安全政策模式,然後分别檢視原始網站資料的儲存目錄與目前網站資料的儲存目錄是否擁有不同的SELinux安全上下文值。

[root@localhost ~]# setenforce 1

[root@localhost ~]# ls -Zd /var/www/html

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

[root@localhost ~]# ls -Zd /home/wwwroot

drwxr-xr-x. root root system_u:object_r:user_home_dir_t:s0 /home/wwwroot

在此情況下,使用semanage指令,将目前網站目錄/home/wwwroot的SELinux安全上下文修改為跟原始網站目錄的一樣就可以OK了。

semanage指令

semanage指令用于管理SELinux的政策,格式為“semanage [選項] [檔案]”。

SELinux服務極大地提升了Linux系統的安全性,将使用者權限牢牢地鎖在籠子裡。經常以下的參數

-l參數用于查詢;  -a參數用于添加;   -m參數用于修改;  -d參數用于删除

第十一步:向新的網站資料目錄中新添加一條SELinux安全上下文,讓此目錄以及裡面的所有檔案能夠被httpd服務程式所通路

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

第十二步:使SELinux安全上下文生效(要對指定目錄進行遞歸操作),重新重新整理頁面

執行完上述操作,無法立即通路網站,需要使用restorecon指令将設定好的SELinux安全上下文立即生效。

使用restorecon指令時,可以加上-Rv參數對指定的目錄進行遞歸操作,以及顯示SELinux安全上下文的修改過程。

[root@localhost ~]# restorecon -Rv /home/wwwroot/

restorecon reset /home/wwwroot context system_u:object_r:user_home_dir_t:s0->system_u:object_r:httpd_sys_content_t:s0

restorecon reset /home/wwwroot/index.html context system_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0

再次重新整理頁面,即可看到正常網頁内容。

利用Apache部署靜态網站(一)

Apache到這裡就基本配置完成了。還可以設定登入使用者及密碼,詳細資訊請閱讀利用Apache部署靜态網站(二)

利用Apache部署靜态網站(一)