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

導語

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容