Gentoo Logo

Mengatasi Masalah Apache

Daftar Isi:

1.  Memeriksa Log

Jika ada yang tidak beres dengan Apache anda tetapi anda tidak tahu cara mencari penyebab masalahnya, petunjuk pertama anda ada di file-fil log.

Ada beberapa file log. Semuanya terletak di /var/log/apache2/. Tidak semua file log pada contoh di bawah ini ada di sistem anda; hal ini tergantung pada modul apa saja yang diaktifkan.

access_log dan ssl_access_log

Daftar Kode 1.1: access_log

67.185.0.236 - - [18/Jun/2005:12:05:50 -0700] "GET / HTTP/1.0" 200 721
10.0.1.80 - - [18/Jun/2005:12:11:07 -0700] "GET /~jaspenelle/__journal1.jpg HTTP/1.1" 200 19079
66.239.233.163 - - [18/Jun/2005:12:15:06 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.0" 200 1661
67.185.60.155 - - [18/Jun/2005:12:18:48 -0700] "GET / HTTP/1.0" 200 721
67.185.0.236 - - [18/Jun/2005:12:25:39 -0700] "GET / HTTP/1.0" 200 721
10.0.1.80 - - [18/Jun/2005:12:28:04 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.1" 200 1661
10.0.1.80 - - [18/Jun/2005:12:28:46 -0700] "GET /~jaspenelle/avy7.png HTTP/1.1" 200 13066

File ini hanya berisi daftar semua file yang diminta dari server anda. Kecuali anda telah mengubah konfigurasi defaultnya, file ini menggunakan Common Log Format:

Daftar Kode 1.2: Sintaks Common Log Format

remotehost rfc931 authuser [date] "request" status bytes
remotehost Nama host atau alamat IP remote
rfc931 Nama user remote yang masuk
authuser Nama user yang digunakan olehnya untuk melakukan otentikasi
[date] Tanggal dan waktu request
"request" baris request persis seperti yang datang dari klien
status Kode status HTTP yang dikembalikan ke klien
bytes Panjangnya isi dokumen yang dikirimkan

error_log dan ssl_error_log

Daftar Kode 1.3: error_log

[Mon Feb 07 23:33:18 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Mon Feb 07 23:33:18 2005] [notice] Digest: generating secret for digest authentication ...
[Mon Feb 07 23:33:18 2005] [notice] Digest: done
[Mon Feb 07 23:33:18 2005] [notice] Apache/2.0.52 (Gentoo/Linux) PHP/4.3.10 configured -- resuming normal operations
[Sat Jun 18 13:01:54 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:14 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:18 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:21 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:24 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico

Seperti yang dapat anda lihat, file ini bisa berisi banyak sekali baris, tergantung kepada direktif ErrorLevel di file httpd.conf anda. File ini menyatakan apakah apache telah dijalankan dengan benar, error apa saja yang dialami,..... Secara umum, file ini akan memberitahukan kepada anda apa yang tidak beres. Jika ada yang tidak beres, ini adalah file yang pertama kali harus anda periksa untuk mendapatkan informasi.

suexec_log

Daftar Kode 1.4: suexec_log

[2005-02-11 22:33:19]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi
[2005-03-11 19:20:13]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi
[2005-03-11 19:34:47]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi

File ini berisi entri log setiap ketika sebuah skrip dijalankan menggunakan CGI dan suexec. Jika skrip anda tidak dapat berfungsi dengan suexec, anda perlu memeriksa log ini karena biasanya di dalmnya akan terdapat sebuah baris yang menyatakan kenapa skrip tersebut tidak bisa dijalankan.

2.  Saya telah menginstal modul, tetapi tidak berfungsi!!!

Hanya menginstal modul saja tidak cukup - anda perlu mengaktifkannya secara ekspilisit. Kami menerapkan metode ini agar setiap modul dapat diaktifkan dan dinonaktifkan dengan mudah, jadi anda lebih mudah mengetahui modul mana yang menyebabkan masalah dan kemudian menguji modul-modul tersebut dan menonaktifkannya dengan mudah.

Ketika anda menginstal sebuah modul, seharusnya anda mendapatkan pesan yang mirip dengan di bawah ini:

Daftar Kode 2.1: Pesan setelah instalasi dari emerge

 *
 * To enable mod_layout, you need to edit your /etc/conf.d/apache2 file and
 * add '-D LAYOUT' to APACHE2_OPTS.
 *
 *
 * Configuration file installed as
 *     /etc/apache2/modules.d/15_mod_layout.conf
 * You may want to edit it before turning the module on in /etc/conf.d/apache2
 *

Pesan ini sangat mudah dimengerti. Anda diberitahukan tentang apa saja yang perlu anda lakukan untuk mengaktifkan modul yang baru saja anda instal.

Jika anda tidak sempat membaca pesan ini, ada cara lain untuk mengetahui apa saja yang perlu anda tambahkan ke APACHE2_OPTS di /etc/conf.d/apache2: periksalah file konfigurasi dan lihat apakah modul tersebut telah terinstal. File konfigurasi modul seharusnya telah ditambahkan ke /etc/apache2/modules.d/. Carilah modul tersebut dan temukan baris yang berisi IfDefine:

Daftar Kode 2.2: Potongan 15_mod_layout.conf

<IfDefine LAYOUT>
  <IfModule !mod_layout.c>
    LoadModule layout_module    modules/mod_layout.so
  </IfModule>
</IfDefine>

Blok IfDefine dijalankan ketika anda menambahkan -D LAYOUT ke /etc/conf.d/apache2. LAYOUT hanyalah contoh.

Ada beberapa opsi yang dapat anda tambahkan ke APACHE2_OPTS dan ditentukan di konfigurasi default yang dijelaskan secara mendalam di /etc/conf.d/apache2.

Dokumentasi dari semua modul built-in bisa anda baca di dokumentasi Apache 2.0.

3.  Apache memberikan halaman kosong atau segfault

Hal ini sering terjadi setelah upgrade karena kompatibilitas binari di APR rusak (yang bisa terjadi karena beberapa sebab). Untuk memperbaikinya, anda perlu me-rebuilt stack tool Apache:

Daftar Kode 3.1: Rebuild stack tool Apache

(anda harus melakukan proses ini secara berurutan!!)

(pertama, kita perlu membuang apache yang sekarang terinstal)
# emerge -aCv '=www-servers/apache-2*'

(kemudian rebuild stack tool)
# emerge -av '=dev-libs/apr-0*' '=dev-libs/apr-util-0*'

(lalu instal ulang apache)
# emerge -av '=www-servers/apache-2*'

(mencari paket-paket yang bergantung kepada apache)
$ equery depends www-servers/apache
[ Searching for packages depending on www-servers/apache... ]
dev-php/phpsysinfo-2.3-r2
dev-php/phpsysinfo-2.1-r2
dev-lang/php-5.2.4_p20070914-r2
www-apache/mod_layout-4.0.1a-r1
www-servers/gorg-0.5

(kemudian kompilasi ulang semua modul yang telah anda instal)
# emerge -av '=dev-lang/php-5.2.4_p20070914-r2' '=www-apache/mod_layout-4.0.1.a-r1'

Mencari modul tambahan yang buggy

Jika anda masih mendapatkan masalah setelah mengikuti petunjuk-petunjuk di atas, kemungkinan penyakitnya ada di salah satu modul tambahan yang anda instal.

Mulailah dengan menonaktifkan semua modul tambahan lalu restart Apache.

Daftar Kode 3.2: Menonaktifkan modul tambahan

(edit /etc/conf.d/apache2)

(sebelumm perubahan)
APACHE2_OPTS="-D PHP5 -D USERDIR -D SSL"

(setelah perubahan)
APACHE2_OPTS=""

Daftar Kode 3.3: Restart Apache

# /etc/init.d/apache2 stop
(pastikan agar apache benar-benar telah dihentikan)
# ps -A
# /etc/init.d/apache2 start

Catatan: Anda mungkin perlu membuat sedikit perubahan di beberapa file konfigurasi jika anda telah menambahkan Directive yang disediakan oleh modul-modul ini di tempat-tempat yang tidak teruji ketika modul tersebut di-load. Anda dianjurkan untuk menempatkan Directive seperti ini di sebuah tempat pengujian. Lihat setiap contoh file .conf di /etc/apache2/modules.d

Jika apache tidak lagi segfault dan memberikan halaman kosong, berarti itu memang disebabkan oleh modul-modul tambahan. Untuk mengetahui modul mana yang menyebabkannya, tambahkan satu persatu dengan selalu me-restart apache kembali.

Ketika Apache rusak setelah sebuah modul ditambahkan kembali, maka kita tahu bahwa modul itulah yang menyebabkan masalah. Terkadang, masalah tersebut dapat diatasi hanya dengan mengkompilasi ulang modul.

Jika apache masih segfault dan memberikan halaman kosong setelah anda me-rebuild modul dan me-restart apache, anda perlu melaporkan bug dengan mencantumkan versi dan revisi modul yang tepat dari modul tersebut, dan jangan lupa juga untuk menyatakan bahwa apache mengalami segfault. Pastikan untuk mencari bug yang telah ada sebelum membuat laporan!

4.  Webserver tidak menginterpretasikan skrip PHP atau CGI namun menampilkan kode-kodenya

Terkadang Apache menampilkan kode PHP atau CGI, bukan menjalankannya lalu menampilkan outputnya. Jika hal ini terjadi sedangkan anda telah mengaktifkan modul yang diperlukan di /etc/conf.d/apache2, kemungkinan ini disebabkan oleh cache. Bersihkanlah cache browser untuk mengatasinya.

Terkadang masalah ini hanya timbul ketika mengakses webserver dengan menggunakan nama DNS, tetapi tidak ketika mengaksesnya dengan alamat IP. Ini merupakan indikasi yang kuat bahwa masalah ini disebabkan oleh cache.

Masalah ini dapat anda atasi dengan membersihkan cache browser dan proxy web seperti squid atau wwwoffle.

5.  configure: error: changes in the environment can compromise the build

Jika anda mendapatkan error ini, maka kemungkinan terdapat spasi yang tidak diperlukan pada variabel CFLAGS anda di /etc/make.conf. Cara mengatasinya mudah, hapus spasi tersebut:

Daftar Kode 5.1: Contoh perubahan di /etc/make.conf

(sebelum perubahan)
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3  -pipe"

(setelah perubahan - perhatikan spasi yang telah dihapus)
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe"

6.  Address already in use: make_sock: could not bind to address 0.0.0.0:443

Error ini terjadi ketika start-up dan disebabkan banyaknya direktif Listen yang tidak cocok di konfigurasi anda. Untuk mengatasinya, anda perlu meng-grep Listen di file konfigurasi lalu perbaiki semuanya.

Daftar Kode 6.1: Menemukan semua direktif Listen

(Pastikan agar anda telah berada di direktori konfigurasi)
# cd /etc/apache2/

(Tampilkan semua direktif Listen)
# grep Listen httpd.conf vhosts.d/*.conf modules.d/*.conf

Yang anda cari adalah konflik dengan apa yang akan diikatkan ke Apache. Contohnya, jika ada Listen 80 di httpd.conf dan ada Listen 10.0.0.15:80 di file lain, maka Apache tidak akan dapat dijalankan. Ini karena pertama Apache terikat ke port 80 pada semua alamat IP di sistem itu lalu mencoba untuk diikat ke 80 pada alamat IP 10.0.0.15 kemudian gagal karena port 80 telah digunakan.

Konfigurasi yang dianjurkan adalah, anda hanya memiliki satu Listen 80 (ini merupakan default httpd.conf) jadi anda mengikatnya ke semua alamat secara default untuk port standar HTTP. Lalu untuk setiap VirtualHost SSL yang anda jalankan, anda dapat membuat sebuah direktif Listen absolut terpisah (seperti Listen 10.0.0.15:443).

7.  Setelah upgrade ke apache-2.0.54-r13 vhosts default (SSL dan non-SSL) tidak berfungsi lagi

Dengan melakukan upgrade ke apache-2.0.54-r13, ada dua direktif baru yang ditambahkan untuk mengatasi bug 100624.

Direktif yang baru adalah -D DEFAULT_VHOST untuk mengaktifkan vhost default dan -D SSL_DEFAULT_VHOST untuk mengaktifkan vhost default SSL. Keduanya perlu ditambahkan ke variabel APACHE2_OPTS di /etc/conf.d/apache2 jika anda ingin agar Apache bekerja seperti sebelumnya.

8.  Mencari Bantuan

Jika anda masih belum terbantu dengan semua contoh di atas, atau jika anda memiliki pertanyaan lain, mampirlah ke channel IRC kami, #gentoo-apache di irc.freenode.net. Atau anda juga boleh melaporkan bug ke Bugzilla Gentoo.



Print

Diperbarui 29 November 2007

Versi asli dari dokumen ini terakhir diupdate 29 November 2007

Rangkuman: Dokumen ini berisi sejumlah cara untuk mengetahui bagaimana memperbaiki instalasi Apache anda ketika ada yang tidak berfungsi dengan benar.

Michael Stewart
Author

Elfyn McBratney
Contributor

Bryan Østergaard
Contributor

Benedikt Böhm
Contributor

Dzikri Aziz
Translator

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.