Masalah saat memuat situs web sering kali disalahkan pada koneksi Internet, namun jaringan yang diatur dengan paling sempurna pun tidak dapat membantu jika tidak ada layanan untuk membalas di tempat tujuan Anda. Salah satu server HTTP paling populer yang digunakan untuk tugas ini adalah Apache2. Sebagian besar popularitas Apache disebabkan oleh instalasi dan penggunaannya yang mudah, namun ada kemungkinan untuk mengalami masalah bahkan dengan perangkat lunak yang paling mudah sekalipun. Jika Anda mengalami masalah saat memuat halaman web, ikuti metode pemecahan masalah sederhana yang diuraikan dalam panduan ini untuk mencoba membuat server web Anda kembali aktif dan berfungsi kembali.
Pastikan layanan berjalan
Langkah pertama yang harus dilakukan dalam memecahkan masalah layanan apa pun adalah memeriksa apakah layanan tersebut berjalan dan dapat berfungsi. Pendekatan langsungnya adalah dengan memulai ulang layanan. Di server Ubuntu dan Debian gunakan perintah berikut.
sudo systemctl restart apache2
Di CentOS dan lingkungan Red Hat lainnya, layanan Apache2 menggunakan nama ‘httpd’, jadi gunakan perintah ini sebagai gantinya.
sudo systemctl restart httpd
Tergantung pada pilihan distribusi Anda, output dari perintah restart akan bervariasi. Secara subyektif Ubuntu biasanya memberikan balasan yang paling bermanfaat seperti gambar di bawah ini.
* Restarting web server apache2 [ OK ]
CentOS dan Debian mungkin tidak mengatakan apa pun selama restart tidak gagal.
Jika sistem Anda tidak dapat me-restart Apache2 kemungkinan besar Anda mendapat pesan kesalahan. Jika Anda mendapat balasan yang menyerupai salah satu contoh keluaran di bawah ini, kemungkinan besar layanan tersebut tidak terinstal dengan benar di sistem Anda atau beberapa file hilang.
apache2: unrecognized service
Failed to restart apache2.service: Unit apache.service failed to load: No such file or directory.
Jika Anda melihat kesalahan seperti ini, coba instal layanan lagi. Di server yang menjalankan Debian atau Ubuntu gunakan perintah berikut.
sudo apt-get install apache2
Dan di CentOS instal httpd dengan perintah berikutnya.
sudo yum install httpd
Setelah Anda yakin server web telah terinstal sepenuhnya, lanjutkan dan mulai ulang layanan lagi dengan perintah yang sama yang Anda gunakan sebelumnya.
Jika Anda mendapatkan pesan kesalahan yang berbeda, cobalah untuk mendapatkan informasi lebih lanjut tentang keadaan layanan web Anda. Gunakan salah satu perintah berikut yang berlaku untuk sistem Anda.
sudo systemctl status apache2
sudo systemctl status httpd
Output dari pemeriksaan status setidaknya akan memberitahukan apakah layanan sedang berjalan atau dihentikan. Sistem Debian dan CentOS biasanya menampilkan laporan yang lebih rinci termasuk waktu aktif layanan dan beberapa baris log. Di bawah ini adalah contoh tampilan status Debian, yang ada di CentOS hampir sama. Ubuntu tidak memiliki keluaran jenis ini secara default.
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2)
Active: active (running) since Fri 2015-07-31 10:44:26 EEST; 2h 14min ago
Process: 9704 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 9711 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/apache2.service
├─9726 /usr/sbin/apache2 -k start
├─9730 /usr/sbin/apache2 -k start
├─9731 /usr/sbin/apache2 -k start
├─9732 /usr/sbin/apache2 -k start
├─9733 /usr/sbin/apache2 -k start
├─9734 /usr/sbin/apache2 -k start
└─9747 /usr/sbin/apache2 -k start
Jul 31 10:44:26 debian.example.com apache2[9711]: Starting web server: apache2.
Bagian penting di sini ada pada baris ketiga, aktif dan berjalan berarti prosesnya harus berjalan, jika sebaliknya yang ditampilkan adalah aktif dan berhenti atau gagal, kemungkinan besar prosesnya telah macet.
Selanjutnya periksa proses berdasarkan namanya untuk Apache2 atau httpd.
sudo ps aux | grep -E 'apache2|httpd'
Untuk setiap penyebutan kata kunci yang dicari, grep akan mencetak baris tempat kata kunci tersebut ditemukan, ini termasuk proses pencarian itu sendiri sehingga Anda setidaknya akan melihat perintah grep. Jika ada lebih dari satu baris keluaran, semuanya kecuali baris terakhir adalah proses yang terkait dengan layanan web Anda. Contoh di bawah ini menampilkan proses Apache2 yang berjalan di Ubuntu.
root 1457 0.0 1.5 321908 16132 ? Ss Jul30 0:02 /usr/sbin/apache2 -k start
www-data 1461 0.0 2.8 326532 29172 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1462 0.0 3.1 327480 32364 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1463 0.0 2.9 326688 30260 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1464 0.0 3.1 326496 32148 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1465 0.0 2.7 326816 28040 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1841 0.0 2.0 323132 21044 ? S Jul30 0:00 /usr/sbin/apache2 -k start
www-data 1871 0.0 2.2 323396 23280 ? S Jul30 0:00 /usr/sbin/apache2 -k start
user 11669 0.0 0.0 11744 928 pts/0 S+ 15:32 0:00 grep --color=auto -E apache2|httpd
Karena perintah restart layanan tidak berfungsi sebelumnya, proses apa pun yang mungkin ada dalam daftar grep mungkin telah berhenti berfungsi dan harus ditutup sebelum layanan dapat dimulai lagi. Pada sistem Debian dan Ubuntu, hentikan semua proses Apache2 menggunakan perintah ini.
sudo killall apache2
Di server CentOS tidak hanya layanan webnya dipanggil dengan nama lain tetapi perintah kill juga berfungsi sedikit berbeda, gunakan yang berikut ini untuk hasil yang sama.
sudo kill -a httpd
Setelah perintah kill, Anda dapat menjalankan proses pengecekan kembali hanya untuk memastikan bahwa tidak ada lagi zombie yang tersisa. Kemudian coba mulai ulang layanan menggunakan perintah yang sama seperti di awal panduan ini.
sudo systemctl status apache2
sudo systemctl status httpd
Ini akan membuat layanan web berjalan asalkan tidak salah dikonfigurasi.
Periksa konfigurasi server Anda
Ketika memulai layanan gagal memberikan kesalahan yang mengacu pada file yang terletak di /etc/Apache2 atau /etc/httpd/, sistem mengalami kesulitan membaca file konfigurasi layanan. Apache2 dilengkapi dengan beberapa alat praktis untuk pemeriksaan integritas file dan sintaksis yang dapat membantu menemukan kesalahan pengetikan atau penyimpangan lain dalam konfigurasi. Dengan server Debian dan Ubuntu, periksa file konfigurasi dengan menjalankan perintah berikut.
sudo apache2ctl -t
Di mesin CentOS, panggil saja httpd saja.
sudo httpd -t
Outputnya akan menunjukkan masalah apa pun yang ditemukan dengan file konfigurasi. Atau jika semuanya sudah beres, cukup cetak konfirmasi seperti gambar di bawah ini.
Syntax OK
Opsi pemecahan masalah lain untuk layanan web adalah menampilkan host virtual yang diurai dan menjalankan pengaturan dengan perintah untuk Debian/Ubuntu dan CentOS.
sudo apache2ctl -S
sudo httpd -S
Di bawah ini adalah contoh keluaran perintah dari sistem CentOS. Pastikan server dan akar dokumen mengarah ke direktori yang benar.
VirtualHost configuration:
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48
Jika server Anda menggunakan konfigurasi host virtual khusus, seperti saat menghosting beberapa situs web di satu server, periksa apakah setiap file host virtual memiliki nama domain yang benar dan mengarah ke direktori akar yang benar. Pada mesin Debian dan Ubuntu memiliki file host virtual secara default dan disimpan di /etc/Apache2/sites-enabled/. Buka file untuk diedit.
sudo nano /etc/apache2/sites-enabled/000-default.conf
File ini biasanya memiliki beberapa instruksi tentang arti setiap parameter di komentar, yang tidak disertakan dalam contoh di bawah, tetapi bagian penting adalah ServerName dan DocumentRoot seperti yang telah disebutkan.
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
CentOS dan httpd tidak memiliki file host virtual yang sama yang ditetapkan secara default, melainkan menggunakan konfigurasi layanan httpd untuk menyimpan pengaturan default. Periksa file konfigurasi dengan perintah di bawah ini.
sudo vi /etc/httpd/conf/httpd.conf
Cari parameter yang sama ServerName dan DocumentRoot, dan pastikan keduanya disetel dengan benar.
Jika Anda membuat perubahan apa pun pada file konfigurasi, layanan perlu dimuat ulang agar perubahan dapat diterapkan. Memulai ulang layanan akan berhasil, tetapi jika Anda ingin menghindari waktu henti di server web Anda, gunakan muat ulang dengan salah satu perintah berikut.
sudo systemctl reload apache2
sudo systemctl reload httpd
Periksa Log
Ketika segala sesuatu di sisi layanan berfungsi seperti yang diharapkan dan Anda tidak dapat menemukan kesalahan, tetapi situs web tetap tidak dapat dimuat, inilah saat yang tepat untuk menggali log. Apache2 menyimpan dua set log, akses dan kesalahan. Anda dapat menemukan log yang disimpan di /var/log/apache2/ atau /var/log/httpd tergantung pada distribusi Linux pilihan Anda. Anda dapat membuat daftar semua file di direktori log server web Anda menggunakan perintah di bawah ini.
sudo ls /var/log/apache2/
sudo ls /var/log/httpd/
Daftar log akan sedikit berbeda karena sistem yang berbeda memberi nama log yang sedikit berbeda. Server Ubuntu dan Debian menyimpan log uptime saat ini ke access.log atau error.log, log sebelumnya ditandai dengan nomor berjalan, 1 adalah yang terbaru, dan log yang lebih lama dari itu juga dikompresi. Pada CentOS dan varian Red Hat lainnya, log diberi nama access_log dan error_log, log yang lebih lama diberi nama yang ditambahkan dengan tanggal penulisan log, misalnya access_log-20150108.
Cara mudah untuk mulai membaca log, ketika Anda belum tentu tahu apa yang Anda cari, adalah dengan menggunakan aplikasi pemfilteran ‘grep’. Cari kesalahan apa pun menggunakan salah satu perintah di bawah ini yang sesuai dengan nama aplikasi web sistem Anda.
sudo grep -i -r error /var/log/apache2/
sudo grep -i -r error /var/log/httpd/
Pengguna Ubuntu dan Debian mungkin juga perlu memeriksa file log terkompresi. Hal ini dapat dilakukan dengan menggunakan ‘zgrep’, namun karena keterbatasannya, Anda hanya dapat mencari satu log dalam satu waktu, misalnya menggunakan perintah berikut.
sudo zgrep error /var/log/apache2/error.log.2.gz
Tidak semua kesalahan yang dicatat oleh layanan web Anda berarti ada sesuatu yang salah dengan server Anda, namun waspadai masalah yang berulang seperti file yang hilang pada contoh kesalahan di bawah ini.
[Fri Jul 17 12:36:08.431065 2015] [:error] [pid 4649] [client 80.69.160.92] script '/var/www/html/index.php' not found or unable to start
Anda mungkin juga ingin mengaktifkan lebih banyak logging verbose jika pencarian kesalahan tidak memberikan hasil apa pun. Jumlah keluaran log dikontrol oleh parameter yang disebut ‘LogLevel’ di file konfigurasi. Pada sistem Debian dan Ubuntu, buka file konfigurasi Anda dengan perintah berikut.
sudo nano /etc/apache2/apache2.conf
Dengan CentOS dan server berbasis Red Hat lainnya, gunakan perintah di sini.
sudo vi /etc/httpd/conf/httpd.conf
Temukan parameter LogLevel dan ubah dari nilai default ‘warn’ menjadi ‘debug’, lalu simpan file dan keluar. Sekali lagi, agar perubahan dapat diterapkan, layanan perlu dimuat ulang. Anda dapat melakukannya dengan salah satu perintah berikut yang sesuai untuk sistem Anda.
sudo systemctl reload apache2
sudo systemctl reload httpd
Untuk menghasilkan beberapa entri baru menggunakan level log baru, coba akses situs web Anda lagi beberapa kali meskipun tidak berhasil. Log yang lebih panjang akan membantu mempersempit permasalahan mendasar.
Periksa layanan lainnya
Jika situs web Anda masih tidak dapat dimuat setelah semua pemecahan masalah dengan Apache, periksa layanan terkait lainnya di server cloud Anda seperti basis data, firewall, dan koneksi jaringan , yang juga memiliki petunjuk pemecahan masalah sendiri.
Jangan ragu untuk menghubungi tim dukungan kami. Ingatlah untuk menyertakan informasi relevan apa pun yang mungkin Anda temukan saat memecahkan masalah, karena setiap detail akan berguna dalam penyelidikan lebih lanjut.