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

導(dǎo)語

Apache web 服務(wù)器運行著互聯(lián)網(wǎng)上超過半數(shù)的活躍的 web 站點酣胀,它憑借著靈活且強(qiáng)勁的功能而廣受歡迎。

Apache 將其功能和組件分解成能夠被獨立定制和配置的單元全度。我們稱代表著單個 web 站點的基礎(chǔ)單元為虛擬主機(jī)煮剧。借助匹配系統(tǒng),虛擬主機(jī)為服務(wù)器提供了同時運行多個 web 站點的可能。這與任何一個試圖在同一臺服務(wù)器上運行多個 web 站點的人都息息相關(guān)勉盅。

無須關(guān)心同一臺服務(wù)器上可能運行的其他 web 站點佑颇,任何一個經(jīng)過配置的 web 站點地址都會將訪問者帶領(lǐng)到存放著特定內(nèi)容的目錄。只要你的服務(wù)器能夠處理 web 站點帶來的訪客流草娜,這個方案可以不受軟件的約束而不斷擴(kuò)展漩符。

在這篇指南中,我們將示范如何在 CentOS 7 服務(wù)器上部署多個 Apache 虛擬主機(jī)驱还。在這一過程中嗜暴,你將學(xué)到如何為不同 web 站點的訪問者提供各自請求的內(nèi)容。


預(yù)備條件

在繼續(xù)閱讀這篇指南之前议蟆,請確認(rèn)你已經(jīng)完成了『CentOS 7 安裝 Apache, MySQL, PHP 指南』中的第一步 —— 安裝 Apache闷沥。

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


第一步 —— 創(chuàng)建目錄結(jié)構(gòu)

首先路狮,我們需要創(chuàng)建一個目錄結(jié)構(gòu)以支撐 web 站點提供數(shù)據(jù)服務(wù)。

我們即將部署的虛擬主機(jī)的 document root(Apache 憑借這個最高層目錄查閱并找出用以提供服務(wù)的內(nèi)容)將會被設(shè)為 /var/www 目錄下各個 web 站點自身所在的目錄蔚约。因此奄妨,我們將在 /var/www 目錄下為每個虛擬主機(jī)創(chuàng)建一個目錄。

在每個虛擬主機(jī)目錄里苹祟,我們將創(chuàng)建一個 html 目錄來存放 web 站點的實際內(nèi)容砸抛。這為我們的服務(wù)器提供了額外的一些靈活性。

假設(shè)現(xiàn)在我們有兩個 web 站點需要對外提供服務(wù)树枫,分別為 webapp1 和 webapp2直焙。我們可以使用 mkdir 命令(帶上一個 -p 標(biāo)記使我們能夠嵌套創(chuàng)建新目錄內(nèi)的新目錄)創(chuàng)建這些目錄:

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

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

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


第二步 —— 授予權(quán)限

現(xiàn)在我們已經(jīng)為文件創(chuàng)建了目錄結(jié)構(gòu)砂轻,但這些目錄結(jié)構(gòu)都為 root 用戶所有奔誓。如果希望服務(wù)器上的普通用戶也能夠修改 web 目錄下的文件,我們可以使用 chown 命令轉(zhuǎn)移目錄的所有者:

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

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

當(dāng)你提交上述 chown 命令時搔涝,$USER 變量將會取值為當(dāng)前登錄服務(wù)器的用戶厨喂。這樣,我們的普通用戶就取得了 html 子目錄的所有權(quán)体谒。

此外杯聚,我們還需要對這里的目錄權(quán)限做一點修改,確保對一般的 web 目錄及其內(nèi)部的子目錄和文件的讀取都是被允許的抒痒,這樣幌绍,網(wǎng)頁才能正常地為訪問者提供服務(wù):

$ sudo chmod –R 755 /var/www

現(xiàn)在你的服務(wù)器應(yīng)該已經(jīng)取得了為向 web 站點訪問者提供內(nèi)容所需的權(quán)限,并且服務(wù)器上的用戶現(xiàn)在應(yīng)該能夠在恰當(dāng)?shù)奈募A下創(chuàng)建內(nèi)容。


第三步 —— 為每一個虛擬主機(jī)創(chuàng)建示例頁面

現(xiàn)在目錄結(jié)構(gòu)已經(jīng)準(zhǔn)備就緒了傀广,我們可以著手創(chuàng)造一些內(nèi)容對外提供服務(wù)颁独。

出于演示的目的,我們的頁面將會非常的簡單伪冰。我們僅僅打算為每個站點創(chuàng)建一個 index.html 頁面誓酒。

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

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

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

然后,敲擊 ESC 并鍵入 :wq! 即可保存并關(guān)閉這個文件耻警。

利用下面這條命令隔嫡,我們可以將上面創(chuàng)建的模板文件復(fù)制為第二個站點的 index.html 文件:

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

現(xiàn)在我們打開文件并修改與站點相關(guān)的信息:

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

保存并退出這個文件。現(xiàn)在你已經(jīng)將測試虛擬主機(jī)配置需要用到的頁面準(zhǔn)備妥當(dāng)了甘穿。


第四步 —— 創(chuàng)建新的虛擬主機(jī)文件

虛擬主機(jī)文件是一類指定各個 web 站點配置和決定 Apache web 服務(wù)器如何響應(yīng)訪問者對不同站點的請求的文件腮恩。

首先,我們需要創(chuàng)建用以存放虛擬主機(jī)的目錄温兼,以及用以向 Apache 表明一臺虛擬主機(jī)已經(jīng)做好準(zhǔn)備向訪問者提供服務(wù)的目錄秸滴。 sites-available 目錄將會存放所有的虛擬主機(jī)文件,而 sites-enabled 目錄將會存放我們想對外提供服務(wù)的主機(jī)的符號鏈接妨托。我們可以借助下列命令來創(chuàng)建這兩個目錄:

$ sudo mkdir /etc/httpd/sites-available

$ sudo mkdir /etc/httpd/sites-enabled

注:這里的目錄布局是由 Debian 社區(qū)的貢獻(xiàn)者引入的缸榛,出于為虛擬主機(jī)添加靈活性的原因吝羞,我們在此采用這種方案(這種方式更容易臨時啟用和禁用虛擬主機(jī))兰伤。

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

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

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

IncludeOptional sites-enabled/*.conf

在添加完上面這一行后恨溜,保存并關(guān)閉文件》危現(xiàn)在我們已經(jīng)準(zhǔn)備好創(chuàng)建第一個虛擬主機(jī)文件了。


創(chuàng)建第一個虛擬主機(jī)文件

我們從使用 root 權(quán)限創(chuàng)建 webapp1 虛擬主機(jī)文件開始:

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

注:依據(jù)我們上面配置文件中的概述糟袁,所有的主機(jī)文件名必須以 .conf結(jié)尾判族。

在文件 webapp1.conf 里,我們首先指定虛擬主機(jī) webapp1 監(jiān)聽的端口號是 8080项戴,以及一個表明文件中內(nèi)容是虛擬主機(jī)配置的序?qū)Γ?/p>

接著形帮,為了方便未來使用域名訪問虛擬主機(jī),我們將聲明服務(wù)器的名稱為 www.webapp1.com。同時辩撑,我們也為服務(wù)器指定了一個別名webapp1.com界斜,以便向 www.webapp1.com 和 webapp1.com 發(fā)送的請求得到的內(nèi)容是相同的。

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

在寫下這些條目后,你就可以保存并關(guān)閉這個文件了君躺。


復(fù)制并定制其余虛擬主機(jī)文件

現(xiàn)在我們已經(jīng)創(chuàng)建好了第一個虛擬主機(jī)文件峭判,我們可以復(fù)制那個文件以創(chuàng)建并按需修改從而得到第二個虛擬主機(jī)文件。

我們從使用 cp 命令復(fù)制文件開始:

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

接著以 root 權(quán)限打開并編輯這個新文件:

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

現(xiàn)在我們需要修改新文件中的所有配置信息指向第二個 web 站點棕叫。當(dāng)你編輯完成時朝抖,你的第二個虛擬主機(jī)文件可能像下面這樣子:

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


第五步 —— 啟用新的虛擬主機(jī)文件

現(xiàn)在我們已經(jīng)創(chuàng)建好了虛擬主機(jī)文件治宣,我們需要啟用它們以便 Apache 知道使用它們向訪問者提供服務(wù)。為此砌滞,我們可以在 sites-enabled 目錄下為每個虛擬主機(jī)創(chuàng)建符號鏈接:

$ 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

當(dāng)你完成這些步驟后侮邀,重啟 Apache 使得這些變更生效。


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

現(xiàn)在我們需要使用 FirewallD 允許 Apache 在 8080 和 8086 端口上穿過網(wǎng)絡(luò)防火墻:

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

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

重啟網(wǎng)絡(luò)防火墻服務(wù)使變更生效:

$ sudo firewall-cmd --reload


第七步 —— 測試你的結(jié)果

現(xiàn)在你已經(jīng)設(shè)置好了虛擬主機(jī)贝润,你可以在瀏覽器里輸入下列地址來測試你的結(jié)果:

http://8.8.8.8:8080

你應(yīng)該看到一個像下面這樣子的頁面:

同樣的绊茧,如果你訪問另一個虛擬主機(jī)地址(http://8.8.8.8:8086),你應(yīng)該看到之前為之創(chuàng)建的內(nèi)容打掘。

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


結(jié)論

現(xiàn)在尊蚁,通過不同的端口號亡笑,你可以使用一臺 CentOS 7 服務(wù)器運行多個 web 站點。遵循上述步驟横朋,在服務(wù)器的負(fù)載范圍內(nèi)仑乌,你可以不受軟件約束,擴(kuò)展任意多臺的虛擬主機(jī)琴锭。


參考鏈接:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晰甚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子决帖,更是在濱河造成了極大的恐慌厕九,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件地回,死亡現(xiàn)場離奇詭異扁远,居然都是意外死亡腺阳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門穿香,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亭引,“玉大人,你說我怎么就攤上這事皮获”候荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵洒宝,是天一觀的道長购公。 經(jīng)常有香客問我,道長雁歌,這世上最難降的妖魔是什么宏浩? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮靠瞎,結(jié)果婚禮上比庄,老公的妹妹穿的比我還像新娘。我一直安慰自己乏盐,他們只是感情好佳窑,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著父能,像睡著了一般神凑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上何吝,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天溉委,我揣著相機(jī)與錄音,去河邊找鬼爱榕。 笑死瓣喊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呆细。 我是一名探鬼主播型宝,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼絮爷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梨树,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤坑夯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抡四,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柜蜈,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡仗谆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淑履。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隶垮。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秘噪,靈堂內(nèi)的尸體忽然破棺而出狸吞,到底是詐尸還是另有隱情,我是刑警寧澤指煎,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布蹋偏,位于F島的核電站,受9級特大地震影響至壤,放射性物質(zhì)發(fā)生泄漏威始。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一像街、第九天 我趴在偏房一處隱蔽的房頂上張望黎棠。 院中可真熱鬧,春花似錦镰绎、人聲如沸葫掉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俭厚。三九已至,卻和暖如春驶臊,著一層夾襖步出監(jiān)牢的瞬間挪挤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工关翎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留扛门,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓纵寝,卻偏偏與公主長得像论寨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爽茴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容