modules -> Functions 安裝與配置apache ########################################################################################### 獲取apache 從http://www.apache.org獲取apache 2.0.44 安裝apache ------------------------------ 使用APACI配置apache的安裝: ./configura 常用選項: --help #可以查看所有的可用選項 --prefix=<PATH> #指定安裝目錄 --enable-module = <xxxallmost> #xxx為名字為mod_xxx.c的模塊 --disable-module = xxx #xxx為名字為mod_xxx.c的模塊 --enable-shared = <xxxmax> #起用DSO(Dynamic Share Object),需要mod_so.c的支持 開始安裝 ------------------------------------------------------------------- make make install oks 與PHP 4.3.1 的集成 ------------------------------------------------------------------- ---/configure --with-apxs2=/usr/local/apache2/bin/apxs <假如想安裝mysql的話 --with-mysql=/usr/local/mysql > make make install 配置apache ------------------------------------------------------------------- apache的主要配置文件: httpd.conf srm.conf Access.conf mime.types magic 編輯httpd.conf 基本指令: ServerType #為standalone或者是inetd ServerRoot #apache的安裝目錄,默認為/usr/local/apache LockFile #服務器串行模式的加鎖文件位置,一般不需要改動 PidFile #記錄服務器運行時的pid的文件路徑 ResourceConfig #資源文件所在,讓srm.conf為空,則httpd.conf的相關值生效 AccessConfig #訪問權限文件的所在路徑 LoadModule #加載模塊 AddModule #加載模塊的順序 Port #監聽端口,默認為80 ServerAdmin #管理員信箱 ServerName #服務器名稱 DocumentRoot #站點文件所在路徑 測試配置是否正確 ------------------------------------------------------------------- apachectl configtest 啟動apache ------------------------------------------------------------------- apachectl start 或者 httpd -k start 重起apache ------------------------------------------------------------------- apachectl graceful 或者 httpd -k graceful 停止apache ------------------------------------------------------------------- apachectl stop 或者 httpd -k stop 創建web site ########################################################################################### apache默認的用戶和組為為apache 將站點的目錄和文件的權限賦予apache find /usr/local/apache/ -exec chown apache {}find /usr/local/apache/ chgrp apache {}find /usr/local/apache/ -type -d chmod 755 {}find /usr/local/apache/ -type -f chmod 640 {} 給適當的文件適當的權限是一個管理員的責任所在。 內容處理 ########################################################################################### 目錄內容處理 ------------------------------------------------------------------- DirectoryIndex index.htm index.Html #默認文擋 當默認文檔不存在,且<Directory>Options中Indexes生效時: HeaderName #頁面題頭文件 ReadmeName #頁面頁尾文件 IndexIgnore #隱藏文件規則 IndexOptions #控制目錄列表的外觀 目錄其他 ------------------------------------------------------------------- Alias /path/ "/<path>/" #別名定義 配置MIME(multipropuse internet mail extend protocol) ------------------------------------------------------------------- 因為不常會修改,只做浏覽 AddHandler SetHandler send-as-is # 按原狀發送 配置CGI(comment gateway interface) ------------------------------------------------------------------- <Directory>Options +ExecCGI #以允許使用CGI SetHandler cgi-script #設定CGI腳本類型 配置SSI ------------------------------------------------------------------- 因為apache方面的性能專家Dean Gaudet不鼓勵使用SSI,所以我只是浏覽了一下,沒有詳細地記錄下來 使用日志 ########################################################################################### ------------------------------------------------------------------- LogLevel <emergalertcritwarnnoticeinfodebug> 簡略-->詳細 嚴重-->輕微 ErrorLog <pathpipesyslog> 日志發送到文件:ErrorLog /var/www/log 日志發送到syslog:ErrorLog syslog:local <1-7> 默認為local 7 日志發送給管道:ErrorLog "/usr/local/apache/bin/errordb insert" 日志傳輸 ------------------------------------------------------------------- 文檔傳送日志告訴你服務器在與誰交互,交互什麼,是什麼時候交互,同哪裡交互TransferLog用法類似ErrorLog 自定義日志格式 ------------------------------------------------------------------- LogFormat %a client ip %A server ip %b 響應http標頭以外的字節數 %{eviron}e 以eviron命名的變量的值 %f 被請求文件的路徑 %h client hostname %{reqheader}i 名字為reheader的標頭的值 %l client的系統環境,IdentifyCheck為On且內容協商成功 %{modnote}n 名字為 modnote的短信的值 %p server port %P server PID %r 請求的第一行,包括URLmodth %s 原始響應信息 %>s 返回浏覽器的響應狀態 %t 請求的發生時間[18/Nov?1999:13:02:58-0600] %{timefmt}t 定義時間的顯示格式,因為基本不需要修改,所以省略了... %T 處理請求的秒數 %u 請求用戶的登陸名 %U 被請求的URL,不包括參數 %v server name %V 根據UseCanonicalName得到服務器名稱 通用日志的默認格式等價於 LogFormat "%h %l %u %t \" %r \" %>s %b" LogFormat "%401u" #記錄未認證的用戶名 apache 預先定義了四種日志的格式:<combinedcommonrefereragent> CustomLog ------------------------------------------------------------------- CoustomLog "/var/logs/httpd/access_logs" env = myCheck #否定為 env =! myCheck SetEnvIf <Remote_AddrRemote_hostRemote_userRequest_MethodRequest_protocolRequest_URL> "condition" VarName 只要檢查屬性中符合Condition,就定義名字為VarName的變量 condition為unix中的正則表達式(Regular EXPression),可以查看man regex獲取詳細資料 LogFormat CustomLog 由mod_log_config.c提供<默認> SentEnvIf mod_setenvif.c提供<默認> CookieTracking CookieName CookieExpires ------------------------------------------------------------------- 由mod_usertrack.c提供<非默認> <IfModule mod_usertrack> CookieTracking <onoff> CookieName myCookie </IfModule> CookieExpires 600 #也可以用 CookieExpires "3 weeks 2 days 4 hours 22 seconds" 注意CookieExpires不可以在<Directory>中,該選項為全局 AllowOverride ------------------------------------------------------------------- All 允許.htaccess覆蓋httpd.conf中的所有目錄設置 Authconfig 允許覆蓋認證指令AuthName AuthType AuthUserFile AuthGroupFile 等 FileInfo 允許覆蓋目錄存取文件設置AddEncodeing AddLanguage AddType CookieTracking CookieName等 Indexes 允許覆蓋目錄索引設置 Limit 允許覆蓋allow deny order require None 不允許覆蓋httpd.conf中的所有目錄設置 Options 允許覆蓋Options的設置 例子:用戶單擊流事件,引用記錄,代理記錄 虛擬主機 ########################################################################################### 基於IP的虛擬主機 ------------------------------------------------------------------- <VirtualHost 202.119.219.28> ServerName www.njfu.edu.cn ServerAdmin
[email protected] DocumentRoot /var/www/ ServerAlias njfu.edu.cn </VirtualHost> 基於域名的