Apache Webserver

 apache相關檔案
/usr/sbin/httpd  Apache主要的二進位執行檔
/etc/httpd/conf/httpd.conf apache主要設定檔
/etc/webalizer.conf  簡單的分析軟體webalizer設定檔
/etc/mime.types 記錄表頭中content-type和檔案類型的對應關係,參數為typesconfig
ps:常用mime有application,audio,image,message,model,multipart,text,video,可參考www.iana.org/assignments/media-types
.htaccess  per-directory組態設定檔名稱,優先權大於主設定檔,但無法使用所有的指令功能
 個別目錄擁有者可在該網頁目錄下建立.htaccess,以設定httpd.conf裡option的參數值

////////////////////////////////////////
apache相關目錄
/etc/httpd/conf.d/  可將額外參數獨立出來寫進.conf,啟動Apache時,這個檔案會被讀入主要設定檔當中
  php.conf  PHP設定參數
  webalizer.conf  webalizer設定參數

/usr/lib/httpd/modules/  模組放置目錄
libphp4.so  讓Apache能夠跑php的模組
mod_status.so 可查詢主機狀態的模組
mod_info.so 可查詢主機組態的模組
mod_access.so 可使用allow,deny,order的模組
mod_autoindex.so 可使用目錄索引功能的模組
mod_auth_basic.so 使用檔案方式的基本驗證模組(authtype=basic),普遍支援,不加密
mod_auth_digest.so 使用md5驗證模組(authtype=digest),http1.1才支援,有加密
mod_auth_ldap 用ldap目錄儲存驗證資料庫的驗證模組
mod_authn_anon 允許匿名存取的模組
mod_authn_dbm 用database management驗證的模組
mod_authn_file 用純文字檔案的驗證方式
mod_auth_msql 用mssql資料庫的驗證
mod_auth_mysql 用mysql資料庫的驗證
mod_auth_kerberos 使用kerberos的驗證
mod_auth_radius 使用radius的驗證
mod_auth_smb 使用windows nt基本驗證
mod_auth_pam 使用pluggable authentication module的驗證
mod_bandwidth 可限制頻寬,mod_limitipconn也有同功能也有同功能
ps:apache可用模組清單,modules.apache.org/search

/var/log/httpd/  Apache登錄檔目錄
error_log 錯誤記錄檔:記錄各種可能的錯誤訊息
access_log 存取記錄檔:也叫傳送記錄檔transfer log,記錄所有使用者連線狀況,要分析系統負載可參考
 ps:可選格式有:combined,common,referer,agent

/var/www/html/  httpd.conf檔內參數documentroot預設的首頁目錄
/var/www/error/  瀏覽器上出現的錯誤訊息以這個目錄的預設訊息為主
/var/www/icons/  提供Apache預設給予的一些小圖示,url為http://localhost/icons/
/var/www/cgi-bin/  預設給CGI放置的目錄,url為http://localhost/cgi-bin/


////////////////////////////////////////
apache command
可參考http://httpd.apache.org/docs/2.0/programs/

gpg  //先執行import,在執行verify
 –import KEYS //匯入apache的keys檔
 –verify httpd-2.*.*.tar.gz.asc //檢查httpd-2.*.*.tar.gz的檔案是否正確

./configure 參數1 參數2 //用來產生makefile,安裝用參數可參考httpd.apache.org/docs-2.0/install.html
-h //查詢可用編譯選項
–prefix=/usr/local/apache //設定apache要安裝的地方
–with-mpm=name //指定欲進行編譯的mpm名稱為name(有prefork預設,worker,perchild)
–enable-so //啟動dso(dynamic shared objects),讓apache功能模組化,並有載入.so模組的功能
–enable-mods-shared=’mod1 mod2…’ //將mod以dso編譯成單獨的模組,有需要才載入,或用all將全部變成模組
–enable-modules=all //啟動各種內建的模組
(httpd.apache.org/docs-2.0/mod/  將列出安裝時所包含的模組清單)

ratatelogs //記錄檔輪替管理
 用法:在httpd.conf內的CustomLog改成此格式  “|rotatelogs_path /log_save_path interval” common
  rotatelogs_path是此命令的路徑
  log_save_path是被輪替下的舊紀錄儲存位置
  interval是輪替時間,以每秒為單位(86400為一天)
  common是系統內定的紀錄格式
ex:若要設定每天(86400)進行輪替
CustomLog “|/usr/local/devtest/bin/rotatelogs /usr/local/devtest/logs/access_log 86400” common

httpd

 -l //列出所有己安裝模組清單,列出編譯進apache的功能(也就是列出沒有變成模組的功能)

logresolve
 //處理記錄檔內容的dns解析
 語法:logresolve [-s file] [-c] < source > result
 -s 指定用file檔案儲存該程式執行過程
 -c 檢驗ip,dns對應資料
  source 指定要處理的紀錄檔
  result 指定儲存處理結果的檔案

/usr/sbin/apachectl
Apache主要shell script執行檔,可主動偵測系統上面的設定值讓啟動Apache時更簡單
apachectl [start|restart|graceful|stop|configtest]
 graceful:動新啟動不斷線
 configtest:測試httpd.conf是否正確

apxs
apache extension tool,若apache安裝時支援dso,即可為伺服器擴充模組
-c mod_name.c //將mod_name.c原始檔變成共享模組共享模組mod_name.la
-i -a mod_name.la //將mod_name.la載入,apache重啟後模組才會生效
-i 表示安裝
-a 增加LoadModule行到httpd.conf並啟用
-A 增加#LoadModule行到httpd.conf

ab,apache benchmarks
模擬多使用者連線,並將以回報
格式:ab [option] [http://]hostname[:port]/path
option有
 -n 進行幾次連線
 -c 同時連線數
 -t 設定timeout時間
 -C 設定cookie
 -A 帳:密,用以支援basic認證
 -e 將處理過程記在檔案
 -p 指定一檔案,將檔案內資料post給要測試的程式
 -k 開啟keeplive
 -x 指定proxy server
 -P 指定proxy server帳號密碼




參考來源
鳥哥的私房菜
apache2.0深入研究
linux伺服器建置與管理