éçç½ç»ææ¯çæ®åãåºç¨åWebææ¯çä¸æå®åï¼Webæå¡å·²ç»æ为äºèç½ä¸éè¦çæå¡å½¢å¼ä¹ä¸ãåæç客æ·ç«¯/æå¡å¨æ¨¡å¼æ£å¨éæ¸è¢«æµè§å¨/æå¡å¨æ¨¡å¼æå代ãæ¬æå°éç¹Apache æå¡å¨çæ
éæé¤çæå·§ã
ä¸ãæ£æ¥é
ç½®æ件çé误
Apacheæå¡å¨ç设置æ件ä½äº/etc/httpd/conf/ç®å½ä¸ï¼ä¼ ç»ä¸ä½¿ç¨ä¸ä¸ªé
ç½®æ件httpd.conf,access.confåsrm.confï¼æ¥é
ç½®Apacheæå¡å¨çè¡ä¸ºãå¨æ°çæ¬çApacheä¸ï¼ææç设置é½è¢«æ¾å¨äºhttpd.confä¸ï¼å æ¤åªéè¦è°æ´è¿ä¸ªæ件ä¸ç设置ãå
¶ä¸99% Apacheæå¡å¨é误æ¯é
ç½®æ件æ误ã
1 使ç¨apachectl configtestå½ä»¤
å¦æé
ç½®æ件æé误ï¼å¯ä»¥ä½¿ç¨apachectl configtestå½ä»¤ï¼apachectl configtestå½ä»¤å¯ä»¥æ£æ¥åºææè¯æ³é误åé»è¾é误ã
å®ä¾1
ä¸é¢æ¯ä¸ä¸ªé
ç½®æä»¶æ ·ä¾çæï¼
Locatio
erver
tatu
SetHandler server
tatu
Order deny,allow
Deny from all
Allow from
192.168
149
</
Locatio
å¦æé»ä½é¨åçé误åæäºâ<Location /server-statusâå°åäºä¸ä¸ª >ã
apachectl configtestå½ä»¤ä¼æ£æ¥å°è¿ä¸ªé®é¢ï¼è¾åºå¦ä¸ï¼
apachectl configtest
Syntax error on line
918
of
etc
httpd
conf
httpd.conf:
Locatio
directive missing closing
2 使ç¨æå¡ç®¡çå·¥å
·
å¦æé
ç½®æ件æé误ï¼ä¹å¯ä»¥ä½¿ç¨GUIå·¥å
·æ¥æ¥çãä¸é¢æ¯å®ä¾1å¨GUIå·¥å
·âæå¡é
ç½®âä¸çä½ç°ï¼å¦å¾1 ã
å¾1 使ç¨GUIå·¥å
·æ£æ¥é误
äºã å¦ä¼ä½¿ç¨é误æ¥å¿ é误æ¥å¿æ¯æéè¦çæ¥å¿æ件ï¼å
¶æ件ååä½ç½®åå³äºErrorLogæ令ãApache httpdå°å¨è¿ä¸ªæ件ä¸åæ¾è¯æä¿¡æ¯åå¤ç请æ±ä¸åºç°çé误ï¼ç±äºè¿éç»å¸¸å
å«äºåºéç»è以åå¦ä½è§£å³ï¼å¦ææå¡å¨å¯å¨æè¿è¡ä¸æé®é¢ï¼é¦å
å°±åºè¯¥æ¥çè¿ä¸ªé误æ¥å¿ãé误æ¥å¿æ¯ä½ çæåãä»»ä½é误é½ä¼å¨é误æ¥å¿ä¸ææè®°è½½ï¼æä»¥ä½ åºè¯¥é¦å
æ¥çå®ãå¦æä½ çç½ç«ç©ºé´æä¾è
ä¸å
许访é®é误æ¥å¿ï¼é£ä¹ä½ åºè¯¥èèæ¢ä¸ä¸ªç©ºé´æä¾è
ãå¦ä¼é
读é误æ¥å¿ï¼å¯ä»¥å¿«éæ¾åºé®é¢å¹¶å¿«é解å³ã 1 é误æ¥å¿æ ¼å¼ Apache é»è®¤çé误æ¥å¿é
ç½®å¦ä¸ï¼ ErrorLog logs/error_log LogLevel warn é
ç½®é误æ¥å¿ç¸å¯¹ç®åï¼åªè¦è¯´ææ¥å¿æ件çåæ¾è·¯å¾åæ¥å¿è®°å½ç级å³å¯ãæ ¼å¼ä¸ºï¼ æ¥æåæ¶é´ é误ç级 é误æ¶æ¯ 2 æ¥å¿è®°å½ç级 ä¸é¢çé说说æ¥å¿è®°å½ç级ï¼å
æ¬å
«ä¸ªçº§å«ã 1 级è±æå称emerg ï¼åºç°ç´§æ¥æ
åµä½¿å¾è¯¥ç³»ç»ä¸å¯ç¨ï¼å¦ç³»ç»å®æºç 2 级alert è±æå称ï¼éè¦ç«å³å¼èµ·æ³¨æçæ
åµ 3 级 è±æå称crit ï¼å±é©æ
åµçè¦å 4级 è±æå称error ï¼é¤äºemerg ãalertãcrit çå
¶ä»é误 5级è±æå称 warnã è¦åä¿¡æ¯ 6级è±æå称 notice ï¼éè¦å¼èµ·æ³¨æçæ
åµï¼ä½ä¸å¦errorãwarn éè¦ 7级è±æå称 info ï¼å¼å¾æ¥åçä¸è¬æ¶æ¯ 8级è±æå称 debugï¼ ç±è¿è¡äºdebug 模å¼çç¨åºæ产ççæ¶æ¯ é误æ¥å¿æä»¶ä¸¾ä¾ é误æ¥å¿çæ ¼å¼ç¸å¯¹çµæ´»ï¼å¹¶å¯ä»¥éå æåæè¿°ãæäºä¿¡æ¯ä¼åºç°å¨ç»å¤§å¤æ°è®°å½ä¸ï¼ä¸ä¸ªå
¸åçä¾åæ¯ï¼ [Wed Oct 11 14:32:52 2007] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test å
¶ä¸ï¼ç¬¬ä¸é¡¹æ¯é误åççæ¥æåæ¶é´ï¼ç¬¬äºé¡¹æ¯é误ç严éæ§ï¼LogLevelæ令使åªæé«äºæå®ä¸¥éæ§çº§å«çé误æä¼è¢«è®°å½ï¼ç¬¬ä¸é¡¹æ¯å¯¼è´é误çIPå°åï¼æ¤åæ¯ä¿¡æ¯æ¬èº«ï¼å¨æ¤ä¾ä¸ï¼æå¡å¨æç»äºè¿ä¸ªå®¢æ·ç访é®ãæå¡å¨å¨è®°å½è¢«è®¿é®æ件æ¶ï¼ç¨çæ¯æ件系ç»è·¯å¾ï¼èä¸æ¯Webè·¯å¾ãé误æ¥å¿ä¸ä¼å
å«ç±»ä¼¼ä¸è¿°ä¾åçå¤ç§ç±»åçä¿¡æ¯ãæ¤å¤ï¼CGIèæ¬ä¸ä»»ä½è¾åºå°stderrçä¿¡æ¯ä¼ä½ä¸ºè°è¯ä¿¡æ¯åå°ä¸å¨å°è®°å½å°é误æ¥å¿ä¸ãç¨æ·å¯ä»¥å¢å æå é¤é误æ¥å¿ç项ãä½æ¯å¯¹æäºç¹æ®è¯·æ±ï¼å¨è®¿é®æ¥å¿(access log)ä¸ä¹ä¼æç¸åºçè®°å½ï¼æ¯å¦ä¸è¿°ä¾åå¨è®¿é®æ¥å¿ä¸ä¹ä¼æç¸åºçè®°å½ï¼å
¶ç¶æç æ¯403ï¼å 为访é®æ¥å¿ä¹å¯ä»¥å®å¶ï¼æ以å¯ä»¥ä»è®¿é®æ¥å¿ä¸å¾å°é误äºä»¶çæ´å¤ä¿¡æ¯ã äºè§£é误代ç åé误æ示 l 常ç¨çé误ååºä»£ç å¦ä¸ï¼ 301 ï¼åç¥ç¨æ·è¯·æ±çURL å·²ç»æ°¸ä¹
ç移å¨å°æ°çURLï¼ç¨æ·å¯ä»¥è®°ä½æ°çURLï¼ä»¥ä¾¿æ¥åç´æ¥ä½¿ç¨æ°çURL è¿è¡è®¿é®ã 302 ï¼åç¥ç¨æ·è¯·æ±çURL 临æ¶ç移å¨å°æ°çURLï¼ç¨æ·æ éè®°ä½æ°çURLï¼å¦æçç¥é误ååºä»£ç ï¼é»è®¤å°±æ¯æ¤å¼ã 303 ï¼åç¥ç¨æ·é¡µé¢å·²ç»è¢«æ¿æ¢ï¼ç¨æ·åºè¯¥è®°ä½æ°çURLã 401 ï¼ææ失败ï¼å³å¯ç é误ã 403 ï¼Access denied ååé误ï¼å³ä¸å¯ä»¥è¯»å该æ件ã 404 ï¼File not found æ¾ä¸å°æ件ã 410 ï¼åç¥ç¨æ·è¯·æ±ç页é¢å·²ç»ä¸ååå¨ï¼ä½¿ç¨æ¤ä»£ç æ¶ä¸åºè¯¥ä½¿ç¨éå®åçURL åæ°ã 500 ï¼æå¡å¨å
é¨é误ï¼å¯è½æ¯Webæå¡å¨æ¬èº«åå¨é®é¢ï¼ä¹å¯è½æ¯ç¼åçç¨åºåºéã l é误æ¶æ¯æ示说æ âInvalid argument: core_output_filter: writing data to the networkâ æ¶æ¯ Apacheå¨å¯è½çå¹³å°ä¸ä½¿ç¨ç³»ç»è°ç¨sendfileæ¥å éååºçåéãä¸å¹¸çæ¯ï¼å¨æäºç³»ç»ä¸ï¼Apacheä¼å¨ç¼è¯æ¶æ£æµsendfileçåå¨ï¼å³ä½¿å®ä¸è½æ£å¸¸å·¥ä½ãè¿ç»å¸¸åçå¨ä½¿ç¨ç½ç»æå
¶ä»éæ åæ件系ç»æ¶ãè¿ä¸ªé®é¢ç表ç°çç¶å
æ¬ä¸è¿°ä¿¡æ¯åºç°å¨é误æ¥å¿éå对äºéé¶é¿åº¦æ件请æ±åéé¶é¿åº¦çååºãä¸è¬è¿ä¸ªé®é¢åªåçå¨éææ件ä¸ï¼å 为å¨ææ件é常ç¨ä¸å°sendfile ãè¦ä¿®æ£è¿ä¸ªé®é¢ï¼å¯ç¨EnableSendfileæ令å
³éæå¡å¨ææé¨å对sendfileç使ç¨å³å¯ãåæ¶åçEnableMMAPæ令ï¼å¯¹ç¸ä¼¼çé®é¢æ帮å©ã âPremature end of script headersâ æ¶æ¯ 大å¤æ°å¯¼è´è¿ä¸ªé误çCGIèæ¬é®é¢å°ä¼åæµè§å¨åéä¸ä¸ª"Internal Server Error"é误信æ¯ã âPermission deniedâ æ¶æ¯ error_logä¸ç"Permission denied"é误伴éä¸ä¸ªåéå°å®¢æ·ç«¯ç"Forbidden"ä¿¡æ¯é常表æè¿åäºæ件系ç»çæéï¼èä¸æ¯Apache HTTPçé
ç½®æ件åºäºé误ãæ£æ¥å¹¶ç¡®è®¤ç¨äºè¿è¡åè¿ç¨çUseråGroupæ访é®å¯¼è´é®é¢çæ件ç足å¤æéãåæ¶æ£æ¥ä¸ä¸å¯¼è´é®é¢çæ件æå¨çç®å½åå
¶ææç¶ç®å½æ¯å¦å
·ææ§è¡(æç´¢)æé(ä¹å°±æ¯ chmod +x)ãæè¿åè¡ç Fedora Core åå
¶å®Linuxåè¡ç使ç¨äºSELinuxè¿è¡é¢å¤ç访é®æ§å¶ï¼è¿åè¿äºéå¶ä¹ä¼å¯¼è´"Permission denied"æ¶æ¯ã "POST Method Not Allowed"æ¶æ¯ è¿è¯´æApache没æ被æ£ç¡®é
置以æ§è¡CGIç¨åºï¼éæ°é
读é
ç½®Apacheççéæ¼äºä»ä¹ã "Internal Server Error"æ¶æ¯ æ¥é
Apacheé误æ¥å¿ï¼å¯ä»¥æ¾å°CGIç¨åºäº§ççåºéæ¶æ¯"Premature end of script headers"ã对æ¤ï¼éè¦æ£æ¥ä¸åå项ï¼ä»¥æ¾åºä¸è½äº§çæ£ç¡®HTTP头çåå ã
1 æ£æ¥é误æ¥å¿ï¼
Apacheæå¡å¨å¨éå°é®é¢æ¶ä¼å°½ååå°å¯¹ä½ ææ帮å©ãå¨è®¸å¤æ
åµä¸ï¼å®ä¼éè¿å¨é误æ¥å¿ä¸åå
¥ä¸æ¡æå¤æ¡æ¶æ¯æ¥æä¾ä¸äºç»èãææ¶è¿å·²ç»è¶³å¤è®©ä½ èªå·±è¯æå解å³é®é¢äº(æ¯å¦æ件æéæ类似çé®é¢)ãé误æ¥å¿çé»è®¤ä½ç½®å¨/usr/local/apache2/logs/error_log ï¼ä½æ¯æåè¿æ¯ççé
ç½®æ件ä¸çErrorLogæ令以确认é误æ¥å¿å¨ä½ æå¡å¨ä¸çç¡®åä½ç½®ã
2 åä¸æ¬¡æ£æ¥è¯æ³
Apache é
ç½®æ件æ¯httpd.conf é¿åº¦é常å¨80-990è¡ï¼å ä¹99%Apache æ
éæ¯è¯æ³é误å¼èµ·çãå¯ä»¥æå·¥æ£æ¥/etc/httpd/conf/httpd.confï¼ä¹å¯ä»¥éè¿æµè§å¨è¾å
¥ï¼
http://192.168.1.12/server-info?configè·åå½åé
ç½®æ件ï¼å¦å¾3 ã
å¾3 å½åApacheæå¡å¨é
ç½®æ件
说æï¼æ¤æ¶ç³»ç»ä¼èªå¨æ·»å è¡å·ã
3 å¯çApacheçFAQ!
ææ°çæ¬çApache常è§é®é¢å表æ»æ¯å¯ä»¥ä»Apache主ç«ç¹å¾å°ï¼
4 å¯çApache bugæ°æ®åº
大å¤æ°æ¥åç»Apache项ç®ç»çé®é¢é½è®°å½å¨bugæ°æ®åºä¸ãå¨ä½ æ·»å ä¸ä¸ªæ°bugä¹åï¼è¯·å¡å¿
æ£æ¥å·²æçæ¥å(æå¼çåå
³éç)ãå¦æä½ åç°ä½ çé®é¢å·²ç»è¢«æ¥åäºï¼è¯·ä¸è¦æ·»å ä¸ä¸ª"æä¹æ¯"é£æ ·çæ¥åãå¦æåå§æ¥åè¿æ²¡æå
³éï¼æä»¬å»ºè®®ä½ ç»å¸¸å¨ææ§å°æ¥ççå®ãä½ ä¹å¯ä»¥èèä¸æåçæ交è
æ¥è§¦ï¼å 为æå¯è½ä¼å¨é®ä»¶äº¤æµä¸åç°æ²¡æè®°å½å¨æ°æ®åºä¸çé®é¢ã
5 å¨æ个ç¨æ·è®ºåä¸æé®
Apacheæ¥æä¸ä¸ªæ´»è·çãæ¿æå
±äº«ç¥è¯çç¨æ·ç¤¾åºãåä¸è¿ä¸ªç¤¾åºé常æ¯è·å¾è§£ççæå¿«æ好çåæ³ã
Apacheç¨æ·é®ä»¶å表ï¼
6 æ交é®é¢æ¥åå°bugæ°æ®åº
å¦æåäºä»¥ä¸å 个åéçæ¥éª¤è没æå¾å°è§£çï¼é£ä¹è¯·å¡å¿
让httpdçå¼åè
äºè§£è¿ä¸ªé®é¢ï¼å°è¿éï¼
ï¼æ交bugæ¥åã
7 è·ååä¸æ¯æ