Start, Stop, dan Restart Apache: Perintah dan Bedanya dengan graceful

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDiperiksa 2026-10-29

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.

TugasKeluarga RHEL (httpd)Keluarga Debian (apache2)
Menjalankansystemctl start httpdsystemctl start apache2
Menghentikansystemctl stop httpdsystemctl stop apache2
Restartsystemctl restart httpdsystemctl restart apache2
Membaca ulang konfigurasi (graceful)systemctl reload httpdsystemctl reload apache2
Memeriksa statussystemctl status httpdsystemctl status apache2
Otomatis berjalan saat bootsystemctl enable httpdsystemctl 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 apache2
Unit 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 httpd

start menjalankan Apache yang sedang berhenti. Untuk memastikan sudah berjalan, gunakan systemctl status.

systemctl stop httpd

stop menghentikan Apache. Sampai dijalankan lagi, Apache tidak menerima permintaan web.

systemctl restart httpd

restart 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 80

active (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 httpd
active

Saat 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 httpd
enabled

enabled 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=mixed

Baris 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.

🔁 Yang berubah pada tiga cara restart Apache
Diagram penjelasan
🔁 Perintah
$ systemctl restart httpdhttpd -k restartsystemctl reload httpd
① Proses induk (Main PID)Mati lalu berjalan ulangNomor Main PID berubah.TetapMenerima sinyal HUP dan membaca ulang file konfigurasi.TetapMenerima sinyal USR1 dan membaca ulang file konfigurasi.
② Permintaan yang sedang diprosesDiselesaikan, lalu berhentiPenghentiannya graceful-stop (WINCH), jadi permintaan yang sedang diproses diselesaikan.Langsung terputusLangsung menghentikan proses anak dan menjalankan proses anak baru.Diproses sampai selesaiSetiap anak diganti dengan anak berkonfigurasi baru setelah permintaannya selesai.
③ Koneksi baru yang masukTidak diterima sampai berjalan lagiMenutup port saat berhenti.Diproses setelah anak baru berjalanMembiarkan port terbuka dan memprosesnya setelah anak baru berjalan.Tidak terputusMembiarkan port terbuka sehingga sistem operasi menahan koneksi.
systemctl restart httpd menghentikan Apache lalu menjalankannya lagi, sehingga proses induknya pun berjalan ulang dan koneksi baru tidak bisa diterima di antaranya.
httpd -k restart mengirim sinyal HUP ke proses induk dan langsung mengakhiri proses anak, sehingga permintaan yang sedang diproses terputus.
systemctl reload httpd dan apachectl graceful membiarkan proses induk apa adanya dan mengganti proses anak sesuai urutan selesainya permintaan.

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 -t
Syntax OK

Saat 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 httpd

Jika 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.

Simulator perintah Apachehttpd keluarga RHEL
[root@server work]#
Gunakan tombol ↑↓ pada keyboard untuk memanggil kembali perintah yang diketik sebelumnya.

🔢 FAQ & Konten yang Direkomendasikan

Saat kami mengetik apachectl fullstatus di AlmaLinux 9, muncul error bahwa opsi fullstatus tidak didukung (not supported) dengan kode keluar 2. apachectl keluarga RHEL adalah skrip yang dipasang menggantikan apachectl bawaan Apache, jadi hanya menerima start, stop, restart, status, graceful, graceful-stop, configtest, -t, dan -v.

Menurut manual httpd.service, unit httpd secara bawaan nonaktif (disabled), dan preset: disabled di baris [Loaded] pada systemctl status adalah nilai bawaan itu. Jika Anda menjalankan systemctl enable httpd sekali, Apache berjalan setiap kali boot, dan jika menambahkan --now pada enable, Apache juga langsung berjalan saat itu juga.

Menurut manual httpd.service, menjalankan httpd langsung dari shell root membuat layanan berjalan di luar systemd, dan pembatasan keamanan bawaan seperti SELinux tidak diterapkan. Karena itu, jalankan dan hentikan layanan dengan systemctl atau apachectl, dan gunakan perintah httpd hanya untuk opsi yang tidak menjalankan layanan, seperti pemeriksaan sintaks -t.

ℹ️ 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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 10   +   9   =