前言:
要學會架網站,有很多現成套裝或是一鍵建站的平台。但往往用了一陣子以後,就會開始需要學會更深入的設定。
什麼是網頁伺服器 Web Server? 它是網頁主機對外聯絡的窗口的服務程式;白話來說就是有使用者在瀏覽器丟下網址以後,DNS 主機把 IP分派連線過來以後,是誰來處理這個連線呢? 就是 Web Server,亦稱為http server。現在比較常見主流的 Web Server 有 Apache 、 Nginx …
然而Google 上面已經有一堆關於Apache的介紹了,因此本文將以實際常用的觀念與指令,跟大家分享實際架站需要遇到與處理的方式。
未來若要往後端或是全端工程師的方向學習,了解 Apache實際應用也是必要的知識。
本文使用方法,可以直接拉到最後倒數第二章節 實戰指令 – 調整設定檔案 ,直接照著步驟做,有不懂的再往上重頭看,或是依序往下看也是可以的。
什麼是Apache?
先來看看Wiki百科的定義
Apache HTTP Server是Apache軟體基金會的一個開放原始碼的網頁伺服器軟體,可以在大多數電腦作業系統中運行。由於其跨平台和安全性,被廣泛使用,是最流行的Web伺服器軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。
台灣很多開發者會直接俗稱它為阿帕契,你有設定好阿帕契了嗎? 大概是這樣子形容它
常見Apache設定檔基本知識與指令
了解版本
開始之前,先了解一下Apache版本吧,目前主流是2.4版
apachectl -v
啟動Apache
sudo apachectl start
當然啟動之前要先問問
找出設定檔
httpd.conf是Apache主要的設定檔案。因此可以透過下面的指令找出檔案放在哪邊。
sudo find / -name httpd.conf
可以看到同樣的檔案名稱,竟然在很多地方都有存放。但你不經會想? 既然是主要設定檔,那現在Apache軟體現在載入的是哪一個檔案? 還是全部都載入?
Apachectl 指令說明
我們不知道有哪些指令沒關係,只要打入下面的指令,就能叫出Help說明
apachectl -H
如上圖,已列出所有的指令,但有趣的是我們使用的是bitnami的system stack,簡單來說,這是被bitnami改過的linux,所以很多設定會放在不同的地方。
可以仔細看看的路徑,與傳統linux位置不大一樣。
無論如何加上 -H參數,Help說明會交代細節的。
[重要] 列出所有被Included的自訂conf 檔案
apachectl -t -D DUMP_INCLUDES
如此一來就知道被Include了哪些檔案。
很多時候,無論是系統預設,還是經過別人之手,你很難知道,到底設定檔改到哪邊去了。用這指令全部叫出來,就知道是哪邊可能有問題。同時也可以看到部分錯誤訊息,可以先除錯。
除了自訂conf設定檔案以外,我們也要了解一下一般規範上有哪些設定檔
主要設定檔:
/etc/apache2/apache2.conf
不同的系統或版本可能路徑與檔名都會有所不同
例如本文用的bitnami 系統,就會是放在
/opt/bitnami/apache/conf/bitnami.conf
而一個 bitnami.conf 的設定檔中,可以直接透過 include “檔案名.conf” 來引用外部的其他設定檔, 因此設定檔的總類很多,而且也能夠分批載,某些功能放這個檔案、某些功能放那個檔案。
總之這邊你要理解,有個主要的設定檔,再透過這主要檔案串接不同的分檔 (其他的 xxxx.conf)
看看有那些可以設定,有些設定其實不會常用到,使用預設值就好。
Apache環境變數
/etc/apache2/envvars
[常用] 網頁伺服器的變數設定:逾時值、最大連線數等…
/etc/apache2/httpd.conf
Apache監聽的IP位址與通訊埠(port)
/etc/apache2/ports.conf
可用虛擬主機的設定檔目錄
/etc/apache2/sites-available/
已啟用的虛擬主機的設定檔目錄
/etc/apache2/sites-enabled/
使用者自訂的的設定檔
/etc/apache2/conf.d
可用模組(module)的目錄
/etc/apache2/mods-available/
已啟用模組的目錄
/etc/apache2/mods-enabled/
如上面所說, 自己亦可任意命名的一個 XXXX.conf,然後透過include指令把設定載入進來
設定檔測試
那萬一自己寫的XXXX.conf 檔案有問題怎麼辦?
因此我們可以先用下面的指令執行測試
apachectl configtest
讓它測試看看整體上所有Include進來的設定檔案是否有報錯
如何修改 .conf 設定檔
知道這些設定檔的架構後,我們可以開始來修正這些副檔名為 .conf 的設定檔
相關的知識可以參考這裡
實戰指令 – 調整設定檔案
實際修改檔案的指令操作思路可以是這樣
- 先尋找檔案在哪
- 照著教學或是技術文件把要修改的地方修改好
- 看看設定檔案有沒有問題
- 試跑看看
- 若有問題就倒出所有的vhost
- 同時把所有include進來的檔案都調查看看
- 再次修改這些檔案
- 重新啟動Apache
#用指令來看上面的步驟會是這樣
#找httpd.conf
sudo find / -name httpd.conf
#用nano編輯器來編輯它 在裡面按 ctrl+o 存檔 ctrl+x 離開 按y再次確認存檔離開
sudo nano /你找到的路徑/httpd.conf
#再找出主要設定檔案 後面bitnami.conf 可以換成 apache2.conf 或 apache.conf
sudo find / -name bitnami.conf
#再用nano編輯器編輯它
sudo nano /你找到的路徑/bitnami.conf
#修改完成後,可以試著跑一下
apachectl configtest
#若沒問題就直接往下
#重新啟動Apache
sudo apachectl restart
#測試看看你要的網站是不是正常運作,若成功就不用繼續搞了
#若沒成功就把所有被加進來的檔案都倒出來看看
apachectl -t -D DUMP_INCLUDES
#這時候會列出很多檔案,逐一把懷疑有錯的進行修改
#也把vhost都列出來查察
apachectl -S
#再次用nano修改.....
#重新啟動Apache,也可先stop 再 start
sudo apachectl stop
sudo apachectl start
#若你是bitnami系統的使用者也可以用下面的指令把LAMP全部都重啟一次
sudo /opt/bitnami/ctlscript.sh restart
以上就是本文最精華的實戰指令與思路,對於一知半解或是Linux菜鳥的人,直接的解藥是有效的,特別是那些看完一堆理論卻無法下手開始的小夥伴們。
小結:
相信透過本篇文章,大家對於Apache有一定程度的認識了,如開頭所說,這類的文章其實非常非常的多,但完整調整修改實戰的文章卻很少。
一如往常,立即有用的即戰力教學文,就是我們做中學最好的參考知識。未來有用更進階的時候,再來分享相關的知識。至於修改conf的實戰,可先參考外部連結,等之後有機會再跟大家分享。
參考:
https://sites.google.com/site/linuxcooltea/apache2/a
http://lms.ctl.cyut.edu.tw/sysdata/53/20253/doc/bde3934073d34191/attach/1094276.htm