服務管理工具:httpd |
指令:httpd
php
語法格式: 算法
httpd [ -d serverroot ] [ -f config ] [ -C directive ] [ -c directive ] [ -D parameter ] [ -e level ] [ -E file ] [ -k start|restart|graceful|stop|graceful-stop ] [ -R directory ] [ -h ] [ -l ] [ -L ] [ -M ][ -S ] [ -t ] [ -v ] [ -V ] [ -X ]
參數說明:shell
-d serverrootapache
將ServerRoot指令設置初始值爲serverroot。它能夠被配置文件中的ServerRoot指令所覆蓋。其默認值是/usr/local/apache2緩存
-f filebash
在啓動中使用config做爲配置文件。若是config不以"/"開頭,則它是相對於ServerRoot的路徑。其默認值是conf/httpd.conf 服務器
-C "directive"ide
在讀取配置文件以前,先處理directive的配置指令工具
-c "directive"學習
在讀取配置文件以後,再處理directive的配置指令
-k start|restart|graceful|graceful-stop|stop
發送信號使httpd啓動、從新啓動或中止
-D parameter
設置參數parameter ,它配合配置文件中的<IfDefine>段,用於在服務器啓動和從新啓動時,有條件地跳過或處理某些命令
-e level
在服務器啓動時,設置LogLevel爲level 。它用於在啓動時,臨時增長出錯信息的詳細程度,以幫助排錯
-E file
將服務器啓動過程當中的出錯信息發送到文件file
-R directory
當在服務器編譯中使用了SHARED_CORE規則時,它指定共享目標文件的目錄爲directory
-h
輸出一個可用的命令行選項的簡要說明
-l
輸出一個靜態編譯在服務器中的模塊的列表。它不會列出使用LoadModule指令動態加載的模塊
-L
輸出一個指令的列表,幷包含了各指令的有效參數和使用區域
-M
輸出一個已經啓用的模塊列表,包括靜態編譯在服務器中的模塊和做爲DSO動態加載的模塊
-S
顯示從配置文件中讀取並解析的設置結果(目前僅顯示虛擬主機的設置)
-t
僅對配置文件執行語法檢查。程序在語法解析檢查結束後當即退出,或者返回"0"(OK),或者返回非0的值(Error)。若是還指定了"-D DUMP_VHOSTS",則會顯示虛擬主機配置的詳細信息
-t -D DUMP_VHOST: 顯示虛擬主機詳細信息
-t -D DUMP_MODULES:顯示全部加載模塊的詳細信息
-v
顯示httpd的版本,而後退出
-V
顯示httpd和APR/APR-Util的版本和編譯參數,而後退出
-X
以調試模式運行httpd 。僅啓動一個工做進程,而且服務器不與控制檯脫離
密碼文件生成工具:htpasswd |
指令:htpasswd
語法格式:
htpasswd [-cmdpsD] passwordfile username htpasswd -b[cmdpsD] passwordfile username password htpasswd -n[mdps] username htpasswd -nb[mdps] username password
選項說明:
-c 建立一個加密文件
-n 不更新加密文件,只將apache htpasswd命令加密後的用戶名密碼顯示在屏幕上
-m 默認apache htpassswd命令採用MD5算法對密碼進行加密
-d apache htpassswd命令採用CRYPT算法對密碼進行加密
-p apache htpassswd命令不對密碼進行進行加密,即明文密碼
-s apache htpassswd命令採用SHA算法對密碼進行加密
-b 在apache htpassswd命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼
-D 刪除指定的用戶
在Windows, NetWare and TPF 系統中 ‘-m’選項是默認的,在使用apache htpasswd命令時能夠忽略。在其餘系統中,’-p’選項可能不能工做。
使用實例:
一、如何利用htpasswd命令添加用戶?
htpasswd -bc .passwd www.leapsoul.cn php
在bin目錄下生成一個.passwd文件,用戶名www.leapsoul.cn,密碼:php,默認採用MD5加密方式
二、如何在原有密碼文件中增長下一個用戶?
htpasswd -b .passwd leapsoul phpdev
去掉c選項,便可在第一個用戶以後添加第二個用戶,依此類推
三、如何不更新密碼文件,只顯示加密後的用戶名和密碼?
htpasswd -nb leapsoul phpdev
不更新.passwd文件,只在屏幕上輸出用戶名和通過加密後的密碼
四、如何利用htpasswd命令刪除用戶名和密碼?
htpasswd -D .passwd leapsoul
五、如何利用htpasswd命令修改密碼?
htpasswd -D .passwd leapsoul
htpasswd -b .passwd leapsoul phpdev
即先使用htpasswd刪除命令刪除指定用戶,再利用htpasswd添加用戶命令建立用戶便可實現修改密碼的功能
動態模塊擴展工具:apxs |
指令:apxs
說明:apxs
是一個爲Apache超文本傳輸協議(HTTP)服務器編譯安裝擴展模塊的工具, 用於編譯一個或多個源程序或目標代碼文件爲動態共享對象, 使之能夠用mod_so
中的LoadModule
指令 在運行時刻加載到Apache服務器中。
所以,要使用這個擴展機制,你的平臺必須支持DSO特性, 並且Apache的httpd
必須內建了mod_so
模塊。 apxs
工具能自動探測是否具有這樣的條件,你也能夠本身用這個命令手動探測
# httpd -l |
語法格式:
apxs -g [-S <var>=<val>] -n <modname> apxs -q [-S <var>=<val>] <query> ... apxs -c [-S <var>=<val>] [-o <dsofile>] [-D <name>[=<value>]] [-I <incdir>] [-L <libdir>] [-l <libname>] [-Wc,<flags>] [-Wl,<flags>] [-p] <files> ... apxs -i [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> ... apxs -e [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> ...
參數說明:
-n modname
它明確設置了-i
(install)和-g
(template generation)選項的模塊名稱。 對-g
選項,它是必須的; 對-i
選項,apxs
工具會按文件名判斷至少是推測出這個模塊名稱。
-q
查詢某種apxs
設置的信息。 query參數能夠是下列一個或多個字串:CC
, CFLAGS
, CFLAGS_SHLIB
, INCLUDEDIR
, LD_SHLIB
, LDFLAGS_SHLIB
, LIBEXECDIR
, LIBS_SHLIB
, SBINDIR
, SYSCONFDIR
, TARGET
.
這個參數用於手動查詢某些設置。好比,要手動處理Apache的C頭文件,能夠在Makefile中使用
INC=-I`apxs -q INCLUDEDIR` |
-S name=value
此選項能夠改變apxs的上述設置。
-g
此選項生成一個名爲name的子目錄(見選項-n
)和其中的兩個文件: 一個是名爲mod_name.c
的樣板模塊源程序, 能夠用做創建你本身的模塊的模板,或是學習使用apxs機制的良好開端; 另外一個則是對應的Makefile
,用於編譯和安裝此模塊。
-c
此選項表示須要執行編譯操做。 它首先會編譯C源程序(.c)files爲對應的目標代碼文件(.o), 而後,鏈接這些目標代碼和files中其他的目標代碼文件(.o and .a), 以生成動態共享對象dsofile。若是沒有指定-o
選項, 則此輸出文件名由files中的第一個文件名推測獲得, 因此,缺省時,它通常會是mod_name.so
.
-o dsofile
明確指定所創建的動態共享對象的文件名。 若是沒有明確指定,並且也不能從files文件列表中推測獲得, 則其文件名將爲mod_unknown.so
。
-D name=value
此選項定義直接提交給編譯器的,以增長用於編譯的變量。
-I incdir
此選項定義直接提交給編譯器的變量,以增長用於編譯的你本身的頭文件目錄。
-L libdir
此選項定義直接提交給編譯器的變量,以增長用於編譯的你本身的庫文件目錄。
-l libname
此選項定義直接提交給編譯器的變量,以增長用於編譯的你本身的庫文件。
-Wc,compiler-flags
此選項用於附加編譯參數compiler-flags到編譯命令中,以增長編譯器特有的參數。
-Wl,linker-flags
此選項用於附加鏈接參數linker-flags到鏈接命令中,以增長鏈接器特有的參數。
-i
此選項表示須要執行安裝操做, 以安裝一個或多個動態共享對象到服務器的modules目錄中。
-a
此選項自動在httpd.conf
文件中增長一個LoadModule
行,以激活此模塊,或者,若是此行已經存在,則啓用之。
-A
與-a
選項相似,可是它增長的LoadModule
指令由一個井號前綴(#
), 即,此模塊已經準備就緒,但尚處於禁用狀態。
-e
此選項表示須要執行編輯操做,它能夠與-a
和-A
選項配合使用, 與-i
操做相似,修改Apache的httpd.conf
配置文件,可是並不安裝此模塊。
使用實例:
假設有一個擴展Apache服務器功能的Apache模塊mod_foo.c
, 使用下列命令,能夠編譯C源程序爲共享模塊,以在運行時刻加載到Apache服務器中:
# apxs -c mod_foo.c gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c ld -Bshareable -o mod_foo.so mod_foo.o |
而後,必須修改Apache的配置,以確保有一個LoadModule
指令來加載此共享對象。 爲了簡化這一步驟,apxs
能夠自動進行該操做, 以安裝此共享對象到"modules"目錄,並更新httpd.conf
文件,命令以下:
# apxs -i -a mod_foo.c cp mod_foo.so /path/to/apache/modules/mod_foo.so chmod 755 /path/to/apache/modules/mod_foo.so [activating module `foo' in /path/to/apache/etc/httpd.conf] |
如此,若是配置文件中尚不存在,會增長下列的行
LoadModule foo_module modules/mod_foo.so |
要快速測試apxs機制,能夠創建一個Apache模塊樣板及其對應的Makefile:
# apxs -g -n foo Creating [DIR] foo Creating [FILE] foo/Makefile Creating [FILE] foo/mod_foo.c |
而後,當即能夠編譯此樣板模塊爲共享對象並加載到Apache服務器中:
# cd foo # make all reload apxs -c mod_foo.c gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c ld -Bshareable -o mod_foo.so mod_foo.o apxs -i -a -n "foo" mod_foo.so cp mod_foo.so /path/to/apache/modules/mod_foo.so chmod 755 /path/to/apache/modules/mod_foo.so [activating module `foo' in /path/to/apache/etc/httpd.conf] apachectl restart /path/to/apache/sbin/apachectl restart: httpd not running, trying to start [Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module /path/to/apache/sbin/apachectl restart: httpd started |
甚至還可使用apxs
在脫離Apache源代碼樹的狀況下編譯複雜模塊,好比PHP3:
# cd php3 # ./configure --with-shared-apache=../apache-1.3 # apxs -c -o libphp3.so mod_php3.c libmodphp3-so.a gcc -fpic -DSHARED_MODULE -I/tmp/apache/include -c mod_php3.c ld -Bshareable -o libphp3.so mod_php3.o libmodphp3-so.a |
因爲apxs
能自動識別C源程序文件和目標代碼文件, 因此,只有C源程序纔會被編譯,而其他的目標代碼文件則用於鏈接操做中。
日誌輪轉工具:rotatelogs |
指令:rotatelogs
說明:Aapche服務器日誌輪循比較好的方式有三種:
第一種方法是利用Linux系統自身的日誌文件輪循機制:logrotate;
第二種方法是利用apache自帶的日誌輪循程序rotatelogs;
第三種是使用在apache的FAQ中推薦發展已經比較成熟的一個日誌輪循工具cronolog。
語法格式:
rotatelogs [-v] [-l] [-L linkname] [-p prog] [-f] [-t] [-e] [-c] <logfile> {<rotation time in seconds>|<rotation size>(B|K|M|G)} [offset minutes from UTC]
參數說明:
兩種日誌滾動形式:
第一種:按時間來滾動(單位爲妙)
例如:錯誤日誌:ErrorLog "|/data/apache/bin/rotatelogs 日誌存放目錄/%Y%m%d_error.log 86400 480"
訪問日誌:CustomLog "|/data/apache/bin/rotatelogs 日誌存放目錄/%Y%m%d_access.log 86400 480" common
其中:
/data/apache:爲apache的安裝目錄,根據本身實際狀況肯定;
86400:秒,24小時,表示生成的日誌文件按天滾動,也就是天天生成一個日誌文件;
480:分,時間偏移。
同理能夠按小時滾動日誌文件,每隔一個小時,幾個小時。。。生成一個日誌文件
第二種:按文件大小來滾動,而不是按時間或時差來滾動
例如:錯誤日誌:ErrorLog "|/data/apache/bin/rotatelogs -l 日誌存放目錄/%Y%m%d_error.log 5M"
訪問日誌:CustomLog "|/data/apache/bin/rotatelogs -l 日誌存放目錄/%Y%m%d_access.log 5M" common
當日志文件達到5M時,滾動該日誌文件
-l :使用本地時間代替GMT時間做爲時間基準。注意:在一個改變GMT偏移量(好比夏令時)的環境中使用-l會致使不可預料的結果。
logfile:它加上基準名就是日誌文件名。若是logfile中包含"%",則它會被視爲用於strftime()的格式字符串;不然它會被自動加上以秒爲單位的".nnnnnnnnnn"後綴。這兩種格式都表示新的日誌開始使用的時間。
rotationtime :日誌文件滾動的以秒爲單位的間隔時間。
offset :相對於UTC的時差的分鐘數。若是省略,則假定爲"0"並使用UTC時間。好比,要指定UTC時差爲"-5小時"的地區的當地時間,則此參數應爲"-300"。
filesizeM :指定以filesizeM文件大小滾動,而不是按照時間或時差滾動。
日誌文件格式:
errorlog.%Y-%m-%d-%H_%M_%S-------------------errorlog.YYYY-mm-dd-HH_MM_SS 對照下圖研究吧
使用實例:
需求:僅保留近3天的文件,以避免日誌文件佔滿磁盤空間。(配合shell腳本實現)
實現:
1,修改配置文件:
ErrorLog /var/log/httpd/error_log
CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/access_log 86400 400M" combined
86400 ---日誌滾動的時間是一天
400 ---日誌文件最大400M就滾動
combined ---採用複合格式
2,而後創建清除日誌文件的shell腳本,文件名爲clean_log
#! /bin/bash
logdir=/var/log/httpd
cd ${logdir}
declare -i filesum=`ls access_log.* | wc -l`
declare -i delnum=$filesum-3
if [ "${delnum}" -ge 1 ];then
rm -rf `ls -tr access_log.* | head -${delnum}`
fi
3,修改腳本權限
# chmod 755 clean_log
4,創建自動化任務
# crontab -e
01 04 * * * /usr/local/crontab/clean_log
httpd程序的控制腳本:apachectl |
指令:apachectl
語法格式:
apachectl [configtest][fullstatus][graceful][help][restart][start][status][stop]
補充說明:
apachectl是slackware內附Apache HTTP的script文件,可供管理員控制服務器,但在其餘Linux的Apache HTTP服務器不必定有這個文件
參數說明:
configtest 檢查設置文件中的語法是否正確。
fullstatus 顯示服務器完整的狀態信息。
graceful 從新啓動Apache服務器,但不會中斷原有的鏈接。
help 顯示幫助信息。
restart 從新啓動Apache服務器。
start 啓動Apache服務器。
status 顯示服務器摘要的狀態信息。
stop 中止Apache服務器
訪問日誌中IP地址解析工具:logresolve |
指令:logresolve
說明:logresolve
是一個解析Apache訪問日誌中IP地址的後處理程序。爲了使對名稱服務器的影響降到最低,它擁有極爲自主的內部散列表緩存,使每一個IP值僅僅在第一次從日誌文件中讀出時才被解析一次。
此程序從標準輸入設備上得到須要解析的Apache日誌文件,其中的IP地址必須在每行的開始處,行中其他信息必須以空格分隔。
語法格式:
logresolve [-s statfile] [-c] < input > output
參數說明:
-s statfile
指定記錄統計信息的文件名。
-c
此選項使logresolve
執行DNS驗證:在把IP地址解析爲主機名後,按主機名查找IP地址,以驗證原地址可否與其中之一相匹配。
壓力測試工具:ab |
指令:ab
語法:
ab [options] [http[s]://]hostname[:port]/path
選項說明: