架站101網頁伺服器 – Apache 設定指令實戰

Apache_setting_command_featured_picture

前言:

要學會架網站,有很多現成套裝或是一鍵建站的平台。但往往用了一陣子以後,就會開始需要學會更深入的設定。

什麼是網頁伺服器 Web Server? 它是網頁主機對外聯絡的窗口的服務程式;白話來說就是有使用者在瀏覽器丟下網址以後,DNS 主機把 IP分派連線過來以後,是誰來處理這個連線呢? 就是 Web Server,亦稱為http server。現在比較常見主流的 Web Server 有 Apache 、 Nginx …

然而Google 上面已經有一堆關於Apache的介紹了,因此本文將以實際常用的觀念與指令,跟大家分享實際架站需要遇到與處理的方式。

未來若要往後端或是全端工程師的方向學習,了解 Apache實際應用也是必要的知識。

本文使用方法,可以直接拉到最後倒數第二章節 實戰指令 – 調整設定檔案 ,直接照著步驟做,有不懂的再往上重頭看,或是依序往下看也是可以的。

阿帕契?
Photo by Timothy Newman on Unsplash

什麼是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 的設定檔

相關的知識可以參考這裡

實戰指令 – 調整設定檔案

實際修改檔案的指令操作思路可以是這樣

  1. 先尋找檔案在哪
  2. 照著教學或是技術文件把要修改的地方修改好
  3. 看看設定檔案有沒有問題
  4. 試跑看看
  5. 若有問題就倒出所有的vhost
  6. 同時把所有include進來的檔案都調查看看
  7. 再次修改這些檔案
  8. 重新啟動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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *