Start, Stop, dan Restart Apache: Perintah dan Bedanya dengan graceful
Di server Linux, Apache dijalankan, dihentikan, dan di-restart dengan perintah systemctl, dan nama layanannya httpd di keluarga RHEL serta apache2 di keluarga Debian. Setelah membaca output systemctl status, file unit httpd, dan skrip apachectl di server AlmaLinux 9, kami melihat bahwa restart mematikan Apache lalu menyalakannya lagi, sedangkan graceful membiarkan proses induk tetap berjalan dan hanya membaca ulang konfigurasi.
Karena stop dan restart benar-benar menghentikan layanan, kami tidak menjalankan start, stop, maupun restart di server uji. Sebagai gantinya, kami memeriksa perilakunya lewat dokumentasi resmi Apache, manual httpd.service, dan catatan reload yang tersisa di server. Nama host, nomor port, waktu, dan jumlah permintaan pada output di bawah adalah nilai contoh.
1️⃣ Perintah start, stop, dan restart Apache
Nama layanan Apache berbeda menurut keluarga distribusinya. Keluarga RHEL seperti RHEL, AlmaLinux, dan Rocky Linux mendaftarkannya ke systemd dengan nama httpd, sedangkan Ubuntu dan Debian dengan nama apache2.
| Tugas | Keluarga RHEL (httpd) | Keluarga Debian (apache2) |
|---|---|---|
| Menjalankan | systemctl start httpd | systemctl start apache2 |
| Menghentikan | systemctl stop httpd | systemctl stop apache2 |
| Restart | systemctl restart httpd | systemctl restart apache2 |
| Membaca ulang konfigurasi (graceful) | systemctl reload httpd | systemctl reload apache2 |
| Memeriksa status | systemctl status httpd | systemctl status apache2 |
| Otomatis berjalan saat boot | systemctl enable httpd | systemctl enable apache2 |
Jalankan perintah di tabel sebagai root. Jika memakai akun biasa, tambahkan sudo di depan perintah.
Jika Anda tertukar keluarga dan memakai nama yang lain, perintah tidak berjalan. Saat kami menanyakan status dengan apache2 di server keluarga RHEL, muncul error bahwa unit tidak ditemukan.
systemctl status apache2Unit apache2.service could not be found.Kode keluarnya saat itu 4, dan setelah nama diganti menjadi httpd di server yang sama, output normal muncul.
Di keluarga RHEL, Apache dijalankan, dihentikan, dan di-restart dengan tiga perintah di bawah.
systemctl start httpdstart menjalankan Apache yang sedang berhenti. Untuk memastikan sudah berjalan, gunakan systemctl status.
systemctl stop httpdstop menghentikan Apache. Sampai dijalankan lagi, Apache tidak menerima permintaan web.
systemctl restart httpdrestart menjalankan stop dan start secara berurutan. Jika Anda hanya mengubah file konfigurasi, terapkan dengan reload (graceful) yang tidak memutus koneksi.
Di AlmaLinux 9, apachectl adalah skrip shell yang dipasang menggantikan apachectl bawaan Apache. Saat menerima start, stop, restart, dan status, skrip ini meneruskannya apa adanya ke systemctl, sehingga apachectl restart dan systemctl restart httpd bekerja sama persis.
2️⃣ Memeriksa status layanan Apache
Untuk mengetahui apakah Apache sedang berjalan dan kapan mulai berjalan, gunakan systemctl status.
systemctl status httpd● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-10-17 08:30:49 UTC; 1 week 4 days ago
Docs: man:httpd.service(8)
Process: 2930107 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 741 (httpd)
Status: "Total requests: 52418; Idle/Busy workers 75/0;Requests/sec: 0.0528; Bytes served/sec: 3.9KB/sec"
Tasks: 224 (limit: 4615)
Memory: 184.3M (peak: 593.8M)
CPU: 47min 33.944s
CGroup: /system.slice/httpd.service
├─ 741 /usr/sbin/httpd -DFOREGROUND
├─2930111 /usr/sbin/httpd -DFOREGROUND
├─2930143 /usr/sbin/httpd -DFOREGROUND
└─2930144 /usr/sbin/httpd -DFOREGROUND
Oct 28 15:00:00 server systemd[1]: Reloading The Apache HTTP Server...
Oct 28 15:00:00 server systemd[1]: Reloaded The Apache HTTP Server.
Oct 28 15:00:00 server httpd[741]: Server configured, listening on: port 80active (running) di baris [Active] berarti Apache sedang berjalan, dan waktu setelah since adalah saat mulai berjalan. Server ini dijalankan 11 hari sebelumnya dan tidak pernah berhenti sekali pun, dan [Main PID] 741 adalah proses induk yang berjalan saat itu.
Di bawah [CGroup], yang berderet di bawah 741 adalah proses anak yang benar-benar menangani permintaan (lihat Proses). Baris [Status] menampilkan jumlah permintaan yang sudah ditangani serta jumlah worker yang menganggur dan yang sedang bekerja.
Tiga baris log di bagian paling bawah output adalah catatan reload yang muncul sekali sehari pada jam yang sama: alat logrotate, yang memotong log per tanggal, menjalankan systemctl reload httpd setelah selesai merotasi, dan manual httpd.service juga menyebutkan bahwa httpd di-reload setelah logrotate.
Di skrip dan perintah pemeriksaan, gunakan is-active dan is-enabled yang hanya mencetak satu kata.
systemctl is-active httpdactiveSaat berjalan, hasilnya active dengan kode keluar 0. Bahkan dengan apache2 yang tidak ada di server, hasilnya inactive dengan kode keluar 3, sama seperti layanan yang berhenti, jadi di skrip periksa dulu apakah nama layanannya benar.
systemctl is-enabled httpdenabledenabled berarti Apache terdaftar agar otomatis berjalan saat boot.
3️⃣ Beda restart Apache dan graceful
restart dan graceful (reload) berbeda dalam menangani permintaan yang sedang diproses dan proses induk. Perbedaan itu pertama-tama kami periksa di baris file unit httpd yang dipakai untuk reload dan stop.
systemctl cat httpd | grep -E "Exec|Kill"ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
KillSignal=SIGWINCH
KillMode=mixedBaris ExecReload berarti reload menjalankan httpd -k graceful, dan baris KillSignal berarti sinyal yang dikirim saat stop adalah SIGWINCH (graceful-stop).
Karena itu systemctl restart httpd menghentikan Apache dengan graceful-stop lalu menjalankannya lagi. Permintaan yang sedang diproses diselesaikan dulu sebelum mati, tetapi proses induknya sendiri berjalan ulang, sehingga nomor [Main PID] berubah. Di antara berhenti dan berjalan lagi, port ditutup sehingga koneksi baru tidak diterima. File unit apache2.service di paket Debian juga menjalankan apachectl graceful-stop saat berhenti.
httpd -k restart mengirim sinyal HUP ke proses induk. Menurut dokumentasi resmi Apache, proses induk tetap ada, tetapi proses anak langsung dihentikan, sehingga permintaan yang sedang diproses terputus dan statistik permintaan kembali ke 0.
graceful mengirim sinyal USR1 ke proses induk. Proses induk membaca ulang file konfigurasi, dan setiap proses anak diganti dengan proses anak berkonfigurasi baru begitu selesai menangani permintaannya. Koneksi yang masuk selama itu ditahan oleh sistem operasi, sehingga tidak hilang.
Ibaratnya toko yang tetap buka, sementara setiap kasir yang selesai melayani pelanggan bergantian dengan rekan dari jadwal sif yang baru.
Perbedaan ini kami periksa lewat Main PID. Meski reload berjalan setiap hari, Main PID 741 dan waktu Active tetap sama seperti 11 hari sebelumnya, dan nomor proses anak (2930111 dan seterusnya) datang tepat setelah 2930107 di baris [Process] dari reload terakhir.
systemctl reload httpd, apachectl graceful, dan httpd -k graceful semuanya graceful yang sama. Di AlmaLinux 9, apachectl mengirim SIGUSR1 ke proses induk dengan systemctl kill saat menerima graceful, dan apachectl -k graceful yang diberi -k di depannya juga membuang -k lalu bekerja sama persis.
graceful hanya membaca ulang konfigurasi, jadi tidak cocok setelah paket httpd diperbarui. Menurut manual httpd.service, reload tidak aman jika modul yang diperbarui memakai fitur yang hanya ada di httpd baru, karena itu paket httpd otomatis me-restart Apache dengan systemctl try-restart saat diperbarui.
4️⃣ Memeriksa sintaks konfigurasi Apache
Meski Anda menerapkan perubahan dengan graceful agar koneksi tidak terputus, Apache tidak beralih ke konfigurasi baru jika file konfigurasi berisi salah ketik. Menurut dokumentasi resmi Apache, restart dan graceful memeriksa sintaks lebih dulu sebelum berjalan, dan jika ada error hanya menampilkan pesan error tanpa me-restart.
Karena itu, setelah mengubah konfigurasi, periksa dulu sintaksnya dengan apachectl -t.
apachectl -tSyntax OKSaat apachectl -t dijalankan, muncul satu baris Syntax OK, dan apachectl configtest memberi hasil yang sama. apachectl keluarga RHEL menjalankan httpd -t apa adanya saat menerima -t.
Saat kami memeriksa file konfigurasi uji yang salah menulis satu nama direktif, alih-alih Syntax OK muncul error AH00526 bersama nomor baris dan direktif yang tidak dikenali ([Invalid command 'DirectoryIndx']), dengan kode keluar 1. Perbaiki baris yang disebut di pesan error lalu periksa lagi.
systemctl reload httpdJika lolos pemeriksaan, terapkan konfigurasi dengan reload. Menurut dokumentasi resmi Apache, pemeriksaan sintaks hanya melihat sintaks, jadi penerapan masih bisa gagal walaupun lolos. Setelah reload, periksa sekali lagi baris [Active] di systemctl status dan log di bagian paling bawah.
🔲 Simulator perintah Apache
Di server virtual pada simulator di bawah, Anda bisa mengetik sendiri perintah systemctl, apachectl, dan httpd -k. Setelah reload, Main PID tetap sama dan hanya nomor proses anak yang berubah. Setelah restart, Main PID pun berganti ke nomor baru.
🔢 FAQ & Konten yang Direkomendasikan
Apache · Error restart
Error restart Apache | (20014)Internal error: Error retrieving pid file logs/httpd.pid
Penyebab error file pid pada perintah seperti apachectl restart dan langkah membereskan httpd.pid yang kosong.
Apache · php-fpm
Peringatan php-fpm max_children: Cari Penyebabnya di Log Sebelum Menambah Worker
Catatan tentang cara kami menemukan lewat log penyebab menumpuknya peringatan max_children di server WordPress dengan Nginx, Apache, dan php-fpm.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.