CentOS 7 Apache 多端口部署 Web Apps 指南


轉載自簡書,原作者xuyan0,鏈接https://www.jianshu.com/p/b34c78bf9bf0,如有侵權,請聯系刪除

導語

Apache web 服務器運行着互聯網上超過半數的活躍的 web 站點,它憑借着靈活且強勁的功能而廣受歡迎。

Apache 將其功能和組件分解成能夠被獨立定制和配置的單元。我們稱代表着單個 web 站點的基礎單元為虛擬主機。借助匹配系統,虛擬主機為服務器提供了同時運行多個 web 站點的可能。這與任何一個試圖在同一台服務器上運行多個 web 站點的人都息息相關。

無須關心同一台服務器上可能運行的其他 web 站點,任何一個經過配置的 web 站點地址都會將訪問者帶領到存放着特定內容的目錄。只要你的服務器能夠處理 web 站點帶來的訪客流,這個方案可以不受軟件的約束而不斷擴展。

在這篇指南中,我們將示范如何在 CentOS 7 服務器上部署多個 Apache 虛擬主機。在這一過程中,你將學到如何為不同 web 站點的訪問者提供各自請求的內容。

 

預備條件

在繼續閱讀這篇指南之前,請確認你已經完成了『CentOS 7 安裝 Apache, MySQL, PHP 指南』中的第一步 —— 安裝 Apache。

注:這篇指南將 8.8.8.8 作為示例服務器地址,我們將在地址 8.8.8.8:8080 和 8.8.8.8:8086 分別部署一個 web 站點。實際操作過程中,請將 8.8.8.8 替換成你的服務器的 IP 地址,8080 和 8086 替換成你實際部署 web 站點時使用的端口號。

 

第一步 —— 創建目錄結構

首先,我們需要創建一個目錄結構以支撐 web 站點提供數據服務。

我們即將部署的虛擬主機的 document root(Apache 憑借這個最高層目錄查閱並找出用以提供服務的內容)將會被設為 /var/www 目錄下各個 web 站點自身所在的目錄。因此,我們將在 /var/www 目錄下為每個虛擬主機創建一個目錄。

在每個虛擬主機目錄里,我們將創建一個 html 目錄來存放 web 站點的實際內容。這為我們的服務器提供了額外的一些靈活性。

假設現在我們有兩個 web 站點需要對外提供服務,分別為 webapp1 和 webapp2。我們可以使用 mkdir 命令(帶上一個 -p 標記使我們能夠嵌套創建新目錄內的新目錄)創建這些目錄:

$ sudo mkdir –p /var/www/webapp1/html

$ sudo mkdir –p /var/www/webapp2/html

注:你需要將上面路徑中的 webapp1 和 webapp2 替換成實際需要部署的 web app 的名稱。

 

第二步 —— 授予權限

現在我們已經為文件創建了目錄結構,但這些目錄結構都為 root 用戶所有。如果希望服務器上的普通用戶也能夠修改 web 目錄下的文件,我們可以使用 chown 命令轉移目錄的所有者:

$ sudo chown –R $USER:$USER /var/www/webapp1/html

$ sudo chown –R $USER:$USER /var/www/webapp2/html

當你提交上述 chown 命令時,$USER 變量將會取值為當前登錄服務器的用戶。這樣,我們的普通用戶就取得了 html 子目錄的所有權。

此外,我們還需要對這里的目錄權限做一點修改,確保對一般的 web 目錄及其內部的子目錄和文件的讀取都是被允許的,這樣,網頁才能正常地為訪問者提供服務:

$ sudo chmod –R 755 /var/www

現在你的服務器應該已經取得了為向 web 站點訪問者提供內容所需的權限,並且服務器上的用戶現在應該能夠在恰當的文件夾下創建內容。

 

第三步 —— 為每一個虛擬主機創建示例頁面

現在目錄結構已經准備就緒了,我們可以着手創造一些內容對外提供服務。

出於演示的目的,我們的頁面將會非常的簡單。我們僅僅打算為每個站點創建一個 index.html 頁面。

我們就從 webapp1 開始。通過下面這條命令,我們可以創建一個 index.html 文件:

$ sudo vi /var/www/webapp1/html/index.html

這將會打開一個空白的文件,敲擊小寫字母 I 即可進行編輯。我們可以在文件中鍵入HTML代碼來表明這個頁面所連接的 web 站點。在這份指南中,我們的這個站點文件是這樣子的:

 
 

然后,敲擊 ESC 並鍵入 :wq! 即可保存並關閉這個文件。

利用下面這條命令,我們可以將上面創建的模板文件復制為第二個站點的 index.html 文件:

$ sudo cp /var/www/webapp1/html/index.html /var/www/webapp2/html/index.html

現在我們打開文件並修改與站點相關的信息:

$ sudo vi /var/www/webapp2/html/index.html

 
 

保存並退出這個文件。現在你已經將測試虛擬主機配置需要用到的頁面准備妥當了。

 

第四步 —— 創建新的虛擬主機文件

虛擬主機文件是一類指定各個 web 站點配置和決定 Apache web 服務器如何響應訪問者對不同站點的請求的文件。

首先,我們需要創建用以存放虛擬主機的目錄,以及用以向 Apache 表明一台虛擬主機已經做好准備向訪問者提供服務的目錄。 sites-available 目錄將會存放所有的虛擬主機文件,而 sites-enabled 目錄將會存放我們想對外提供服務的主機的符號鏈接。我們可以借助下列命令來創建這兩個目錄:

$ sudo mkdir /etc/httpd/sites-available

$ sudo mkdir /etc/httpd/sites-enabled

注:這里的目錄布局是由 Debian 社區的貢獻者引入的,出於為虛擬主機添加靈活性的原因,我們在此采用這種方案(這種方式更容易臨時啟用和禁用虛擬主機)。

接下來,我們需要告知 Apache 到 sites-enabled 目錄里尋找虛擬主機。為了達到這個目的,我們將編輯 Apache 的主配置文件,添加一行用以聲明額外配置文件所在的可選目錄:

$ sudo vi /etc/httpd/conf/httpd.conf

將下面這一行添加到文件的末尾:

IncludeOptional sites-enabled/*.conf

在添加完上面這一行后,保存並關閉文件。現在我們已經准備好創建第一個虛擬主機文件了。

 

創建第一個虛擬主機文件

我們從使用 root 權限創建 webapp1 虛擬主機文件開始:

$ sudo vi /etc/httpd/sites-available/webapp1.conf

注:依據我們上面配置文件中的概述,所有的主機文件名必須以 .conf結尾。

在文件 webapp1.conf 里,我們首先指定虛擬主機 webapp1 監聽的端口號是 8080,以及一個表明文件中內容是虛擬主機配置的序對:

 
 

接着,為了方便未來使用域名訪問虛擬主機,我們將聲明服務器的名稱為 www.webapp1.com。同時,我們也為服務器指定了一個別名webapp1.com,以便向 www.webapp1.com 和 webapp1.com 發送的請求得到的內容是相同的。

 
 

最后,我們以指定存放外界能夠接觸到的 web 文件所在的根目錄來結束創建第一個主機文件。我們也將告知 Apache 將這個 web 站點上的錯誤信息和請求紀錄存放在何處:

 
 

在寫下這些條目后,你就可以保存並關閉這個文件了。

 

復制並定制其余虛擬主機文件

現在我們已經創建好了第一個虛擬主機文件,我們可以復制那個文件以創建並按需修改從而得到第二個虛擬主機文件。

我們從使用 cp 命令復制文件開始:

$ sudo cp /etc/httpd/sites-available/webapp1.conf /etc/httpd/sites-available/webapp2.conf

接着以 root 權限打開並編輯這個新文件:

$ sudo vi /etc/httpd/sites-available/webapp2.conf

現在我們需要修改新文件中的所有配置信息指向第二個 web 站點。當你編輯完成時,你的第二個虛擬主機文件可能像下面這樣子:

 
 

在完成這些變更后,你就可保存並退出這個文件。

 

第五步 —— 啟用新的虛擬主機文件

現在我們已經創建好了虛擬主機文件,我們需要啟用它們以便 Apache 知道使用它們向訪問者提供服務。為此,我們可以在 sites-enabled 目錄下為每個虛擬主機創建符號鏈接:

$ sudo ln -s /etc/httpd/sites-available/webapp1.conf /etc/httpd/sites-enabled/webapp1.conf

$ sudo ln -s /etc/httpd/sites-available/webapp2.conf /etc/httpd/sites-enabled/webapp2.conf

當你完成這些步驟后,重啟 Apache 使得這些變更生效。

 

第六步 —— 允許 Apache 穿越防火牆

現在我們需要使用 FirewallD 允許 Apache 在 8080 和 8086 端口上穿過網絡防火牆:

$ sudo firewall-cmd --permanent --add-port=8080/tcp

$ sudo firewall-cmd --permanent --add-port=8086/tcp

重啟網絡防火牆服務使變更生效:

$ sudo firewall-cmd --reload

 

第七步 —— 測試你的結果

現在你已經設置好了虛擬主機,你可以在瀏覽器里輸入下列地址來測試你的結果:

http://8.8.8.8:8080

你應該看到一個像下面這樣子的頁面:

 
 

同樣的,如果你訪問另一個虛擬主機地址(http://8.8.8.8:8086),你應該看到之前為之創建的內容。

如果你能夠正常訪問我們上面配置的這些站點,那么你已經成功地為 CentOS 7 服務器配置了新的 Apache 虛擬主機。

 

結論

現在,通過不同的端口號,你可以使用一台 CentOS 7 服務器運行多個 web 站點。遵循上述步驟,在服務器的負載范圍內,你可以不受軟件約束,擴展任意多台的虛擬主機。

 

參考鏈接:

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7

https://devops.profitbricks.com/tutorials/how-to-set-up-ip-and-port-based-virtual-hosting-vhosts-with-apache-web-server-on-centos-7/

https://httpd.apache.org/docs/2.4/vhosts/examples.html#port



作者:xuyan0
鏈接:https://www.jianshu.com/p/b34c78bf9bf0
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

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



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