Apache之自帶工具

服務管理工具: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參數能夠是下列一個或多個字串:CCCFLAGSCFLAGS_SHLIBINCLUDEDIRLD_SHLIBLDFLAGS_SHLIBLIBEXECDIRLIBS_SHLIBSBINDIRSYSCONFDIRTARGET.

    這個參數用於手動查詢某些設置。好比,要手動處理Apache的C頭文件,能夠在Makefile中使用

    INC=-I`apxs -q INCLUDEDIR`

  配置選項

  • -S name=value

  • 此選項能夠改變apxs的上述設置。


  模板生成選項

  • -g

  • 此選項生成一個名爲name的子目錄(見選項-n)和其中的兩個文件: 一個是名爲mod_name.c的樣板模塊源程序, 能夠用做創建你本身的模塊的模板,或是學習使用apxs機制的良好開端; 另外一個則是對應的Makefile,用於編譯和安裝此模塊。 

  DSO編譯選項

  • -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到鏈接命令中,以增長鏈接器特有的參數。  

 DSO的安裝和配置選項

  • -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 對照下圖研究吧

wKiom1O5ILfzdt16AAD_Vj2WIcI631.jpg

使用實例:

        需求:僅保留近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

選項說明:

相關文章
相關標籤/搜索