歡迎您光臨本站 註冊首頁

Ubuntu系統網路應用伺服器Apache配置基礎

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
   

配置文件

 

官方發布的 Apache 的主配置文件是 httpd.conf, 伺服器還會讀取一個包含 MIME 文件類型的文件,其文件名由 TypesConfig 指令確定,默認值是mime.types 。

 

Ubuntu/Debian 下的 Apache 的主配置文件是 /etc/apache2/apache2.conf, 包含 MIME 文件類型的文件是 /etc/mime.types 。

 

此外,為了按邏輯分割配置,還可以用 Include 指令和通配符附加許多其他配置文件。Ubuntu 下附加了如下的配置文件:

 

# 包含動態模塊的配置:

Include /etc/apache2/mods-enabled/*.load

Include /etc/apache2/mods-enabled/*.conf

 

# 包含用戶自己的配置:

Include /etc/apache2/httpd.conf

 

# 包含埠監聽的配置:

Include /etc/apache2/ports.conf

 

# 包含一般性的配置語句片斷:

Include /etc/apache2/conf.d/[^.#]*

 

……

 

# 包含虛擬主機的配置指令:

Include /etc/apache2/sites-enabled/[^.#]*

 

配置文件的語法

 

*每一行包含一個指令,在行尾使用反斜杠”\”可以表示續行

*配置文件中的指令不區分大小寫,但是指令的參數 (argument) 通常區分大小寫

*以 ”#” 開頭的行被視為註解並在讀取時被忽略。註解不能出現在指令的後邊

*空白行和指令前的空白字元將在讀取時被忽略,因此可以採用縮進以保持配置層次的清晰

 

無論是主配置文件還是用 Include 語句包含的配置文件,都應該遵從 Apache 的配置語法。

Apache 的模塊

 

Apache 是模塊化的伺服器,它有兩種編譯方式:

 

*靜態編譯:將核心模塊和所需要的模塊一次性編譯

o

優點:運行速度快

o

缺點:要增加或刪除模塊必須重新編譯整個 Apache

*動態編譯:只編譯核心模塊和 DSO (動態共享對象)模塊 — mod_so

o

優點:各模塊可以獨立編譯,並可隨時用 LoadModule 指令載入,用於特定模塊的指令可以用 指令包含起來,使之有條件地生效。

o

缺點:運行速度稍慢

 

Ubuntu 中的 Apache 是動態編譯的。在 Ubuntu 下配置模塊:

 

1.視需要修改 mods-available/ 目錄下相關模塊的配置文件

2.使用 a2enmod 命令啟用模塊; 使用 a2dismod 命令停用模塊

 

例如: 啟用 rewrite 模塊可以用如下命令:

 

sudo a2enmod rewrite

 

停用 cgi 模塊可以用如下命令:

 

sudo a2dismod cgi

 

指令的作用域

 

從指令的作用域來劃分,Apache 中有兩類指令:

 

*普通指令:普通指令對整個伺服器都有效

*容器指令:可以放置在容器內對特定的訪問資源實施額外的配置,它只對特定的訪問資源有效

 

Apache 中常用的容器包括:

 

*和 : 用於對指定的目錄實施額外的配置

*和 : 用於對指定的文件實施額外的配置

*和 : 用於對指定的 URL 實施額外的配置

 

*容器都是成對出現的,所有在容器中使用的配置指令都應該放置在 <> 和 內,如:

 

……

 

*以上所有帶 “Match” 的容器指令與其相應的不帶 “Match” 的容器指令功能相同,只是在描述資源時可以使用正則表達式

*這些容器還可以進行嵌套,以進行更精細的配置

 

此外,Apache 還具備同時支持多個站點的能力,稱為虛擬主機。放置在 容器中的指令僅對特定虛擬主機有效。

雖然大多數指令可以包含在任意的容器中,但是也用特例。要查詢一個指令可以被應用於哪些配置段中,可以在 Apache 手冊中查看該指令的 作用域 項。

基於目錄的配置文件

 

Apache 除了使用主配置文件之外,還可以使用分佈在整個網站目錄樹中的特殊文件來進行分散配置。這樣的特殊配置文件稱為基於目錄的配置文件, 這些特殊的文件通常叫 .htaccess ,但是也可以用 AccessFileName 指令來改變它的名字。

 

顯然,基於目錄的配置文件 (.htaccess 文件)中指令的作用域是存放它的那個目錄及其所有子目錄。

 

*.htaccess 文件的語法與主配置文件相同。放在 容器中的指令都可以出現在 .htaccess 文件中,具體能出現哪些指令由主配置文件中的 AllowOverride 指令來決定

*由於客戶對伺服器的每次訪問請求都會讀取.htaccess文件,所以對這些文件的修改會立即生效,即無需使伺服器載入配置文件或重新啟動。

 

基本配置指令

伺服器標識指令

 

*ServerName : 伺服器用於辨識自己的主機名和埠號

*ServerAdmin : 伺服器返回給客戶端的錯誤信息中包含的管理員郵件地址

*ServerSignature : 配置伺服器生成頁面的頁腳(錯誤信息、mod_proxy的ftp目錄列表、mod_info的輸出)

*ServerTokens : 控制了伺服器回應給客戶端的”Server:“應答頭是否包含關於伺服器操作系統類型和編譯進的模塊描述信息

*UseCanonicalName : 決定 Apache 如何構造 URL 中 SERVER_NAME 和 SERVER_PORT 的指令。

 

文件定位指令

 

*DocumentRoot : 組成網路上可見的主文檔樹的根目錄

*ErrorLog : 存放錯誤日誌的位置

*LockFile : 當 AcceptMutex 指令的值是 fcntl 或 flock 的時候,Apache 使用的鎖文件的位置

*PidFile : 設置伺服器用於記錄父進程(監控進程) PID 的文件。

*ScoreBoardFile : 存儲子進程協調數據(coordination data)的文件(Apache 使用 scoreboard 在父進程和子進程之間進行通信)

*ServerRoot : 指定伺服器安裝的基礎目錄

 

收緊 Ubuntu 下的 Apache 配置

 

對於實際的產品伺服器,應該首先收緊 Apache 的配置。為此可以在 /etc/apache2/conf.d/ 目錄下創建一個新的 local_configs.conf 文件添加如下的配置:

 

/etc/apache2/conf.d/local_configs.conf

 

# 設置 ServerName

ServerName www.jamond.net

# 對 / 進行保護

 

# Forbid default access to file system locations

Order Deny,Allow

Deny from all

# prevent use of .htaccess files in all directories

# apart from those specifically enabled.

AllowOverride None

 

 

# 限制顯示伺服器的可用信息

ServerSignature Off

ServerTokens production

 

Apache 的管理工具

 

Apache 套件中包含了許多可執行程序,其中一部分是管理工具,本節僅介紹 apache2ctl。

apache2ctl

 

apache2ctl 是 Apache2 伺服器的前端程序。他可以幫助管理員控制 Apache2 後台守護進程的功能。

 

apache2ctl腳本有兩種操作模式:

 

*作為簡單的 apache2 的前端程序,設置所有必要的環境變數,然後啟動 apache2,並傳遞所有的命令行參數。

*作為 SysV 初始化腳本,接受簡單的一個單詞的參數,如:start, restart, stop ,並把他們翻譯為適當的信號發送給 apache2 。

 

*在 Ubuntu 的 Apache2 啟動腳本 /etc/init.d/apache2 中,就是調用 apache2ctl 實現控制的。

 

apache2ctl 有兩種語法格式:

 

apache2ctl -參數

apache2ctl 動作選項

 

使用 apache2ctl 的命令參數

 

*顯示 apache 的版本

 

apache2ctl -v

 

*顯示 apache 的版本和編譯參數

 

apache2ctl -V

 

*輸出一個可用的命令行選項的簡要說明

 

apache2ctl -h

 

*輸出一個靜態編譯在伺服器中的模塊的列表。它不會列出使用 LoadModule 指令動態載入的模塊

 

apache2ctl -l

 

*輸出一個指令的列表,並包含了各指令的有效參數和使用區域

 

apache2ctl -L

 

*僅對配置文件執行語法檢查。。如果還指定了”-D DUMP_VHOSTS”,則會顯示虛擬主機配置的詳細信息

 

apache2ctl -t

 

*顯示從配置文件中讀取並解析的設置結果 (目前僅顯示虛擬主機的設置)

 

apache2ctl -S

 

使用 apache2ctl 的動作選項

 

*啟動 apache2 後台守護進程。如果已經啟動,則產生一個錯誤。

 

apache2ctl start

 

*停止 apache2 後台守護進程。

 

apache2ctl stop

 

*重新啟動 apache2 後台守護進程。如果守護進程尚未運行,則啟動它。在重新啟動守護進程之前,此命令會使用 configtest 自動檢查配置文件,以確保 Apache 不會死掉。

 

apache2ctl restart

 

*顯示一個簡要的狀態報告。

 

apache2ctl status

 

*優雅地重新啟動 apache2 後台守護進程。如果守護進程尚未啟動,則啟動它。它和標準重新啟動的不同之處在於:不會中斷當前已經打開的連接,也不會立即關閉日誌。這意味著,如果在日誌滾動腳本使用它,則在處理日誌之前必須加入一個實實在在的延遲,以確保老的日誌文件在被處理前已經關閉。在重新啟動守護進程之前,此命令會使用 configtest 自動檢查配置文件,以確保 apache 不會死掉。

 

apache2ctl graceful

 

*優雅地停止 apache2 後台守護進程。它和標準停止的不同之處在於:不會中斷當前已經打開的連接,也不會立即關閉日誌。

 

apache2ctl graceful-stop

 

*執行一次配置文件語法檢查。它解析配置文件,並報告 Syntax Ok 或者是特定的語法錯誤詳細信息。

 

apache2ctl configtest

(責任編輯:A6)



[火星人 ] Ubuntu系統網路應用伺服器Apache配置基礎已經有454次圍觀

http://coctec.com/docs/net/show-post-68362.html