Mengatasi Masalah Apache
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 |
# emerge -aCv '=www-servers/apache-2*'
# emerge -av '=dev-libs/apr-0*' '=dev-libs/apr-util-0*'
# emerge -av '=www-servers/apache-2*'
$ 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
# 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 |
APACHE2_OPTS="-D PHP5 -D USERDIR -D SSL"
APACHE2_OPTS=""
|
Daftar Kode 3.3: Restart Apache |
# /etc/init.d/apache2 stop
# 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 |
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe"
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 |
# cd /etc/apache2/
# 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.
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|