Gentoo Archives: gentoo-commits

From: "Damian Kuras (shadow)" <shadow@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in xml/htdocs/proj/pl/apache/doc: troubleshooting.xml
Date: Mon, 31 Mar 2008 20:02:21
Message-Id: E1JgQCv-00018e-E1@stork.gentoo.org
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 &lt;IfDefine LAYOUT&gt;
220 &lt;IfModule !mod_layout.c&gt;
221 LoadModule layout_module modules/mod_layout.so
222 &lt;/IfModule&gt;
223 &lt;/IfDefine&gt;
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