1 |
shadow 08/03/31 20:02:17 |
2 |
|
3 |
Added: troubleshooting.xml |
4 |
Log: |
5 |
move from /doc/pl/apache-troubleshooting.xml |
6 |
|
7 |
Revision Changes Path |
8 |
1.1 xml/htdocs/proj/pl/apache/doc/troubleshooting.xml |
9 |
|
10 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/pl/apache/doc/troubleshooting.xml?rev=1.1&view=markup |
11 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/pl/apache/doc/troubleshooting.xml?rev=1.1&content-type=text/plain |
12 |
|
13 |
Index: troubleshooting.xml |
14 |
=================================================================== |
15 |
<?xml version='1.0' encoding="UTF-8"?> |
16 |
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/pl/apache/doc/troubleshooting.xml,v 1.1 2008/03/31 20:02:16 shadow Exp $ --> |
17 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
18 |
|
19 |
<guide link="/proj/pl/apache/doc/troubleshooting.xml" lang="pl"> |
20 |
<title>Troubleshooting Apache</title> |
21 |
|
22 |
<author title="Author"> |
23 |
<mail link="vericgar@g.o">Michael Stewart</mail> |
24 |
</author> |
25 |
<author title="Contributor"> |
26 |
<mail link="beu@g.o">Elfyn McBratney</mail> |
27 |
</author> |
28 |
<author title="Contributor"> |
29 |
<mail link="kloeri@g.o">Bryan Østergaard</mail> |
30 |
</author> |
31 |
<author title="Contributor"> |
32 |
<mail link="hollow@g.o">Benedikt Böhm</mail> |
33 |
</author> |
34 |
<author title="Tłumacz"> |
35 |
Aleksander Kamil Modzelewski |
36 |
</author> |
37 |
|
38 |
<abstract> |
39 |
W tym dokumencie opisane zostało kilka sposobów znajdowania i rozwiązywania |
40 |
problemów z Apache. |
41 |
</abstract> |
42 |
|
43 |
<!-- The content of this document is licensed under the CC-BY-SA license --> |
44 |
<!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
45 |
<license/> |
46 |
|
47 |
<version>1.8</version> |
48 |
<date>2007-11-29</date> |
49 |
|
50 |
<chapter> |
51 |
<title>Przeszukiwanie dziennika</title> |
52 |
<section> |
53 |
<body> |
54 |
|
55 |
<p> |
56 |
Jeżeli wiadomo, że instalacja Apache jest uszkodzona, ale nie wiadomo w jaki |
57 |
sposób, to szukanie błędów należy rozpocząć od przeglądania plików dziennika |
58 |
(logów). |
59 |
</p> |
60 |
|
61 |
<p> |
62 |
Apache zazwyczaj zakłada kilka takich plików i wszystkie znajdują się wewnątrz |
63 |
katalogu <path>/var/log/apache2/</path>. Niektóre z nich mogą na danym systemie |
64 |
nie istnieć - zależy to od zainstalowanych modułów. |
65 |
</p> |
66 |
|
67 |
</body> |
68 |
</section> |
69 |
|
70 |
<section> |
71 |
<title>access_log i ssl_access_log</title> |
72 |
<body> |
73 |
|
74 |
<pre caption="access_log"> |
75 |
67.185.0.236 - - [18/Jun/2005:12:05:50 -0700] "GET / HTTP/1.0" 200 721 |
76 |
10.0.1.80 - - [18/Jun/2005:12:11:07 -0700] "GET /~jaspenelle/__journal1.jpg HTTP/1.1" 200 19079 |
77 |
66.239.233.163 - - [18/Jun/2005:12:15:06 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.0" 200 1661 |
78 |
67.185.60.155 - - [18/Jun/2005:12:18:48 -0700] "GET / HTTP/1.0" 200 721 |
79 |
67.185.0.236 - - [18/Jun/2005:12:25:39 -0700] "GET / HTTP/1.0" 200 721 |
80 |
10.0.1.80 - - [18/Jun/2005:12:28:04 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.1" 200 1661 |
81 |
10.0.1.80 - - [18/Jun/2005:12:28:46 -0700] "GET /~jaspenelle/avy7.png HTTP/1.1" 200 13066 |
82 |
</pre> |
83 |
|
84 |
<p> |
85 |
Zawartość tego pliku to lista wszystkich zapytań jakie otrzymał dany serwer. O |
86 |
ile domyślna konfiguracja nie została zmieniona, to będzie on zapisany w |
87 |
ogólnym formacie dziennika. |
88 |
</p> |
89 |
|
90 |
<pre caption="Składnia ogólnego formatu dziennika"> |
91 |
remotehost rfc931 authuser [date] "request" status bytes |
92 |
</pre> |
93 |
|
94 |
<table> |
95 |
<tr> |
96 |
<ti>remotehost</ti> |
97 |
<ti>Nazwa zdalnego komputera lub jego numer IP</ti> |
98 |
</tr> |
99 |
<tr> |
100 |
<ti>rfc931</ti> |
101 |
<ti>Login użytkownika na zdalnym komputerze</ti> |
102 |
</tr> |
103 |
<tr> |
104 |
<ti>authuser</ti> |
105 |
<ti>Login jako który użytkownik się autoryzował</ti> |
106 |
</tr> |
107 |
<tr> |
108 |
<ti>[date]</ti> |
109 |
<ti>Data oraz czas zapytania</ti> |
110 |
</tr> |
111 |
<tr> |
112 |
<ti>"request"</ti> |
113 |
<ti> |
114 |
Wiersz zapytania w dokładnie takiej formie, w jakiej przyszedł od |
115 |
klienta |
116 |
</ti> |
117 |
</tr> |
118 |
<tr> |
119 |
<ti>status</ti> |
120 |
<ti>Wartość statusu HTTP zwrócona do klienta</ti> |
121 |
</tr> |
122 |
<tr> |
123 |
<ti>bytes</ti> |
124 |
<ti>Długość przekazanego dokumentu</ti> |
125 |
</tr> |
126 |
</table> |
127 |
|
128 |
</body> |
129 |
</section> |
130 |
<section> |
131 |
<title>error_log i ssl_error_log</title> |
132 |
<body> |
133 |
|
134 |
<pre caption="error_log"> |
135 |
[Mon Feb 07 23:33:18 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2) |
136 |
[Mon Feb 07 23:33:18 2005] [notice] Digest: generating secret for digest authentication ... |
137 |
[Mon Feb 07 23:33:18 2005] [notice] Digest: done |
138 |
[Mon Feb 07 23:33:18 2005] [notice] Apache/2.0.52 (Gentoo/Linux) PHP/4.3.10 configured -- resuming normal operations |
139 |
[Sat Jun 18 13:01:54 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico |
140 |
[Sat Jun 18 13:02:14 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico |
141 |
[Sat Jun 18 13:02:18 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico |
142 |
[Sat Jun 18 13:02:21 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico |
143 |
[Sat Jun 18 13:02:24 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico |
144 |
</pre> |
145 |
|
146 |
<p> |
147 |
Jak widać, ten plik może zawierać bardzo wiele wpisów, zależnie od dyrektywy |
148 |
<c>ErrorLevel</c> w <path>httpd.conf</path>. Jest w nim zapisane czy Apache |
149 |
poprawnie wystartował, jakie wystąpiły błędy i tak dalej. W uproszczeniu |
150 |
zapisuje on wszystkie nietypowe sytuacje. Jeżeli coś nie działa to właśnie ten |
151 |
plik powinno się sprawdzić najpierw. |
152 |
</p> |
153 |
|
154 |
</body> |
155 |
</section> |
156 |
<section> |
157 |
<title>suexec_log</title> |
158 |
<body> |
159 |
|
160 |
<pre caption="suexec_log"> |
161 |
[2005-02-11 22:33:19]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi |
162 |
[2005-03-11 19:20:13]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi |
163 |
[2005-03-11 19:34:47]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi |
164 |
</pre> |
165 |
|
166 |
<p> |
167 |
Ten plik zawiera wpis dla każdego wykonania skryptu przy pomocy CGI oraz suexec. |
168 |
Jeżeli jakiś skrypt nie współpracuje z suexec to właśnie ten plik powinno się |
169 |
sprawdzić najpierw, gdyż zazwyczaj będzie on zawierał wiersz z wypisaną |
170 |
przyczyną, dla której odmówiono współpracy. |
171 |
</p> |
172 |
|
173 |
</body> |
174 |
</section> |
175 |
</chapter> |
176 |
|
177 |
<chapter> |
178 |
<title>Zainstalowany moduł nie działa!</title> |
179 |
<section> |
180 |
<body> |
181 |
|
182 |
<p> |
183 |
Samo zainstalowanie modułu nie wystarcza - musi on zostać wyraźnie włączony. |
184 |
Jest tak, aby łatwiej było włączać i wyłączać moduły, dzięki czemu łatwiej jest |
185 |
znaleźć te, które sprawiają problemy oraz łatwiej jest je testować oraz |
186 |
wyłączać. |
187 |
</p> |
188 |
|
189 |
<p> |
190 |
Kiedy moduł zostanie zainstalowany, powinien pojawić się komunikat podobny do |
191 |
tego: |
192 |
</p> |
193 |
|
194 |
<pre caption="Wiadomość po zainstalowaniu modułu"> |
195 |
* |
196 |
* To enable mod_layout, you need to edit your /etc/conf.d/apache2 file and |
197 |
* add '-D LAYOUT' to APACHE2_OPTS. |
198 |
* |
199 |
* |
200 |
* Configuration file installed as |
201 |
* /etc/apache2/modules.d/15_mod_layout.conf |
202 |
* You may want to edit it before turning the module on in /etc/conf.d/apache2 |
203 |
* |
204 |
</pre> |
205 |
|
206 |
<p> |
207 |
Opis ten mówi wprost co należy zrobić, aby uruchomić dany moduł. |
208 |
</p> |
209 |
|
210 |
<p> |
211 |
W razie braku wiadomości jest jeszcze inny sposób sprawdzenia, co należy dodać |
212 |
do <c>APACHE2_OPTS</c> w <path>/etc/conf.d/apache2</path>: sprawdzenie pliku |
213 |
konfiguracyjnego zainstalowanego przez moduł. Powinien on się znajdować w |
214 |
<path>/etc/apache2/modules.d/</path>. Należy w nim odnaleźć wiersz w którym |
215 |
znajduje się <c>IfDefine</c>: |
216 |
</p> |
217 |
|
218 |
<pre caption="Wyciąg z 15_mod_layout.conf"> |
219 |
<IfDefine LAYOUT> |
220 |
<IfModule !mod_layout.c> |
221 |
LoadModule layout_module modules/mod_layout.so |
222 |
</IfModule> |
223 |
</IfDefine> |
224 |
</pre> |
225 |
|
226 |
<p> |
227 |
Blok <c>IfDefine</c> jest wykonywany kiedy doda się <c>-D LAYOUT</c> do |
228 |
<path>/etc/conf.d/apache2</path>. <c>LAYOUT</c> jest tylko przykładem. |
229 |
</p> |
230 |
|
231 |
<p> |
232 |
Kilka opcji które można dodać do <c>APACHE2_OPTS</c> jest zdefiniowanych w |
233 |
domyślnej konfiguracji. Ich szczegółowy opis można znaleźć w pliku |
234 |
<path>/etc/conf.d/apache2</path>. |
235 |
</p> |
236 |
|
237 |
<p> |
238 |
Dokumentacja wszystkich wbudowanych modułów znajduje się w <uri |
239 |
link="http://httpd.apache.org/docs/2.0/">dokumentacji Apache 2.0</uri>. |
240 |
</p> |
241 |
|
242 |
</body> |
243 |
</section> |
244 |
</chapter> |
245 |
|
246 |
<chapter> |
247 |
<title>Apache zwraca tylko puste strony lub zwraca błąd "naruszenie ochrony pamięci" (segfault)</title> |
248 |
<section> |
249 |
<body> |
250 |
|
251 |
<p> |
252 |
Najczęściej dzieje się tak po aktualizacji, gdy złamana została binarna |
253 |
kompatybilnośćw APR (co może zdarzyć się z wielu przyczyn). Aby to naprawić |
254 |
konieczne będzie przebudowanie stosu narzędzi Apache: |
255 |
</p> |
256 |
|
257 |
<pre caption="Przebudowywanie stosu narzędzie Apache"> |
258 |
<comment>(Koniecznie należy wykonać to w tej kolejności, to naprawdę ważne!)</comment> |
259 |
|
260 |
<comment>(Najpierw usuwamy istniejącego Apache)</comment> |
261 |
# <i>emerge -aCv '=www-servers/apache-2*'</i> |
262 |
|
263 |
<comment>(Następnie przebudowujemy stos narzędzi)</comment> |
264 |
# <i>emerge -av '=dev-libs/apr-0*' '=dev-libs/apr-util-0*'</i> |
265 |
|
266 |
<comment>(Następnie ponownie instalujemy Apache)</comment> |
267 |
# <i>emerge -av '=www-servers/apache-2*'</i> |
268 |
|
269 |
<comment>(Ustalamy, które pakiety polegają na Apache)</comment> |
270 |
$ <i>equery depends www-servers/apache</i> |
271 |
[ Searching for packages depending on www-servers/apache... ] |
272 |
dev-php/phpsysinfo-2.3-r2 |
273 |
dev-php/phpsysinfo-2.1-r2 |
274 |
dev-lang/php-5.2.4_p20070914-r2 |
275 |
net-www/mod_layout-4.0.1a-r1 |
276 |
www-servers/gorg-0.5 |
277 |
|
278 |
<comment>(Następnie budujemy ponownie te, które są zainstalowane)</comment> |
279 |
# <i>emerge -av '=dev-lang/php-5.2.4_p20070914-r2' '=net-www/mod_layout-4.0.1.a-r1'</i> |
280 |
</pre> |
281 |
|
282 |
</body> |
283 |
</section> |
284 |
<section> |
285 |
<title>Lokaliwozanie uszkodzonego modułu</title> |
286 |
<body> |
287 |
|
288 |
<p> |
289 |
Jeśli po wykonaniu powyższych instrukcji problem nadal występuje, to winowajcą |
290 |
jest prawdopodobnie jeden z zainstalowanych modułów dodatkowych. |
291 |
</p> |
292 |
|
293 |
<p> |
294 |
Najpierw wyłączamy wszystkie moduły i restartujemy Apache. |
295 |
</p> |
296 |
|
297 |
<pre caption="Wyłączanie dodatkowych modułów"> |
298 |
<comment>(Modyfikujemy /etc/conf.d/apache2)</comment> |
299 |
|
300 |
<comment>(Przed zmianą)</comment> |
301 |
APACHE2_OPTS="-D PHP5 -D USERDIR -D SSL" |
302 |
|
303 |
<comment>(Po zmianie)</comment> |
304 |
APACHE2_OPTS="" |
305 |
</pre> |
306 |
|
307 |
<pre caption="Restartowanie Apache"> |
308 |
# <i>/etc/init.d/apache2 stop</i> |
309 |
<comment>(Należy się upewnić, że Apache jest całkowicie zatrzymane)</comment> |
310 |
# <i>ps -A</i> |
311 |
# <i>/etc/init.d/apache2 start</i> |
312 |
</pre> |
313 |
|
314 |
<note> |
315 |
Być może konieczne będzie dokonanie drobnych zmian w konfiguracji jeśli |
316 |
wykorzystane były dyrektywy które te moduły zapewniają w miejscach, które nie |
317 |
testują czy dany moduł jest załadowany. Zaleca się, aby umieszczać je zawsze w |
318 |
kontenerach testowych. Przykłady można znaleźć w plikach .conf w |
319 |
<path>/etc/apache2/modules.d</path>. |
320 |
</note> |
321 |
|
322 |
<p> |
323 |
Jeżeli Apache przestaje segfaultować oraz wysyłać puste strony to można być |
324 |
pewnym, że problemem był jeden z modułów dodatkowych. Aby sprawdzić który z |
325 |
nich, dodajemy je z powrotem, po jednym, za każdym razem całkowicie restartując |
326 |
Apache. |
327 |
</p> |
328 |
|
329 |
<p> |
330 |
Jeżeli Apache przestanie działać po dodaniu konkretnego modułu, to wiadomo, że |
331 |
to właśnie on sprawiał problemy. Czasem zwyczajne przebudowanie modułu rozwiąże |
332 |
kłopoty. |
333 |
</p> |
334 |
|
335 |
<p> |
336 |
Jeżeli po przebudowaniu modułu i zrestartowaniu Apache nadal występują te same |
337 |
problemy, to należy <uri link="http://bugs.gentoo.org">zgłosić błąd</uri> |
338 |
wymieniający konkretną wersję i aktualizację modułu oraz wspomnieć o tym, czy |
339 |
segfaultuje. Najpierw należy poszukać już zgłoszonych błędów! |
340 |
</p> |
341 |
|
342 |
</body> |
343 |
</section> |
344 |
</chapter> |
345 |
|
346 |
<chapter> |
347 |
<title>Serwer nie przetwarza skryptów PHP lub CGI, zamiast tego wyświetla ich kod </title> |
348 |
<section> |
349 |
<body> |
350 |
|
351 |
<p> |
352 |
W większości przypadków sytuacja, kiedy apache wyświetla kod skryptu zamiast go |
353 |
uruchomić, mimo włączenia odpowiednich modułów w pliku |
354 |
<path>/etc/conf.d/apache2</path>, jest spowodowana problemem ze starym cache po |
355 |
stronie przeglądarki. |
356 |
</p> |
357 |
|
358 |
<p> |
359 |
Często problem pojawia się, gdy łączymy się z serwerem poprzez jego nazwę DNS, |
360 |
a znika, gdy wybierzemy jego numer IP. W takim wypadku niemal na pewno jest to |
361 |
problem z cache. |
362 |
</p> |
363 |
|
364 |
<p> |
365 |
Ten problem można rozwiązać czyszcząc cache przeglądarki. |
366 |
</p> |
367 |
|
368 |
</body> |
369 |
</section> |
370 |
</chapter> |
371 |
|
372 |
<chapter> |
373 |
<title>configure: error: changes in the environment can compromise the build</title> |
374 |
<section> |
375 |
<body> |
376 |
|
377 |
<p> |
378 |
Jeśli zdarza się taki błąd, to prawdopodobnie w <c>CFLAGS</c> w |
379 |
<path>/etc/make.conf</path> znajdują się zbędne spacje. Poprawka jest prosta - |
380 |
należy usunąć dodatkowe spacje: |
381 |
</p> |
382 |
|
383 |
<pre caption="Przykładowe zmiany w /etc/make.conf"> |
384 |
<comment>(Przed zmianą)</comment> |
385 |
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe" |
386 |
|
387 |
<comment>(Po zmianie)</comment> |
388 |
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe" |
389 |
</pre> |
390 |
|
391 |
</body> |
392 |
</section> |
393 |
</chapter> |
394 |
|
395 |
<chapter> |
396 |
<title>Address already in use: make_sock: could not bind to address 0.0.0.0:443</title> |
397 |
<section> |
398 |
<body> |
399 |
|
400 |
<p> |
401 |
Taki błąd zdarza się podczas startu i jest wywołany przez istnienie w |
402 |
konfiguracji kilku wzajemnie niekompatybilnych dyrektyw <c>Listen</c>. |
403 |
Rozwiązaniem tego problemu powinno być wyszukanie w konfiguracji |
404 |
<c>Listen</c> oraz naprawienie każdego wystąpienia. |
405 |
</p> |
406 |
|
407 |
<pre caption="Znajdowanie wszystkich dyrektyw Listen"> |
408 |
<comment>(Upewnienie się, że znajduje sięw katalogu konfiguracji)</comment> |
409 |
# <i>cd /etc/apache2/</i> |
410 |
|
411 |
<comment>(Wyszukanie wszystkich dyrektyw Listen)</comment> |
412 |
# <i>grep Listen httpd.conf vhosts.d/*.conf modules.d/*.conf</i> |
413 |
</pre> |
414 |
|
415 |
<p> |
416 |
Poszukujemy konfliktów między tym, do czego próbuje dowiązać się Apache. Na |
417 |
przykład, jeżeli w <path>httpd.conf</path> znajduje się wpis <c>Listen 80</c>, a |
418 |
w innym pliku można znaleźć <c>Listen 10.0.0.15:80</c>, to serwer nie będzie w |
419 |
stanie wystartować. Dzieje się tak ponieważ Apache najpierw dowiązuje się do |
420 |
portu 80 na wszystkich adresach IP dostępnych na komputerze, a następnie do |
421 |
portu 80 na adresie 10.0.0.15, co nie udaje się, gdyż jest on już wykorzystany. |
422 |
</p> |
423 |
|
424 |
<p> |
425 |
Zalecaną konfiguracją jest umieszczenie pojedynczej dyrektywy <c>Listen 80</c> |
426 |
(tak jest w domyślnym <path>httpd.conf</path>) tak, aby dowiązać się na |
427 |
wszystkich adresach do standardowego portu HTTP, a następnie dla każdego |
428 |
<c>VirtualHost</c> z SSL stworzyć oddzielną bezwzględną dyrektywę <c>Listen</c> |
429 |
(na przykład <c>Listen 10.0.0.15:443</c>). |
430 |
</p> |
431 |
|
432 |
</body> |
433 |
</section> |
434 |
</chapter> |
435 |
|
436 |
<chapter> |
437 |
<title>Po aktualizacji do apache-2.0.54-r13 domyślne vhosty (SSL i nie-SSL) już nie działają</title> |
438 |
<section> |
439 |
<body> |
440 |
|
441 |
<p> |
442 |
W aktualizacji do apache-2.0.54-r13 dodano dwie nowe dyrektywy aby poprawić <uri |
443 |
link="http://bugs.gentoo.org/show_bug.cgi?id=100624">błąd 100624</uri>. |
444 |
</p> |
445 |
|
446 |
<p> |
447 |
Nowe dyrektywy to <c>-D DEFAULT_VHOST</c> dla aktywacji domyślnego vhosta oraz |
448 |
<c>-D SSL_DEFAULT_VHOST</c> dla aktywacji wersji z SSL. Obydwie muszą zostać |
449 |
dodane do <c>APACHE2_OPTS</c> w <path>/etc/conf.d/apache2</path> jeżeli Apache |
450 |
ma się zachowywać tak, jak dawniej. |
451 |
</p> |
452 |
|
453 |
</body> |
454 |
</section> |
455 |
</chapter> |
456 |
|
457 |
<chapter id="getting-help"> |
458 |
<title>Szukanie wsparcia</title> |
459 |
<section> |
460 |
<body> |
461 |
|
462 |
<p> |
463 |
Jeżeli żadna z powyższych rad nie pomogła w rozwiązaniu problemu lub jeśli |
464 |
występuje potrzeba zadania innych pytań, zawsze można skorzystać z kanału |
465 |
<path>#gentoo-apache</path> na <path>irc.freenode.net</path>. Można też zgłosić |
466 |
błąd na <uri link="http://bugs.gentoo.org">Bugzilli Gentoo</uri>. |
467 |
</p> |
468 |
|
469 |
</body> |
470 |
</section> |
471 |
</chapter> |
472 |
|
473 |
</guide> |
474 |
|
475 |
|
476 |
|
477 |
-- |
478 |
gentoo-commits@l.g.o mailing list |