Kehilangan konfigurasi pada NGINX Unit setelah merestart server Anda bisa terjadi karena beberapa alasan, tetapi ada beberapa faktor yang paling mungkin menyebabkan masalah tersebut, termasuk konflik dengan Apache dan penyimpanan konfigurasi NGINX Unit yang tidak tersimpan secara persisten.
Berikut adalah beberapa penyebab utama yang mungkin terkait dengan masalah Anda:
1. Apache Mengambil Alih Port 80 Setelah Restart
Salah satu penyebab utama masalah ini adalah Apache secara otomatis dimulai setelah server di-restart, dan mengambil alih port 80 yang sebelumnya digunakan oleh NGINX Unit. Jika Apache memulai lebih dulu dan mendengarkan di port 80, maka NGINX Unit tidak akan bisa menggunakan port tersebut, karena hanya satu layanan yang bisa mendengarkan pada satu port tertentu.
- Mengapa Apache bisa mengambil alih port 80?
- Pada banyak distribusi Linux, Apache diaktifkan secara otomatis untuk dimulai setiap kali sistem di-restart, kecuali layanan tersebut dinonaktifkan secara eksplisit. Ketika Apache mulai berjalan dan mendengarkan pada port 80, ini menyebabkan NGINX Unit gagal memulai dan menangani permintaan HTTP pada port tersebut.
- Solusi:
- Nonaktifkan Apache sehingga tidak berjalan secara otomatis saat server di-restart:
sudo systemctl stop apache2
sudo systemctl disable apache2
- Pastikan NGINX Unit mendengarkan pada port 80 setelah Apache dinonaktifkan. Anda bisa memverifikasi apakah port 80 tersedia dengan:
sudo lsof -i :80
2. Konfigurasi NGINX Unit Tidak Persisten
Konfigurasi NGINX Unit secara default disimpan dalam memory dan tidak otomatis disimpan ke disk kecuali Anda menyimpannya secara eksplisit. Ini berarti bahwa jika server di-restart tanpa menyimpan konfigurasi ke disk, konfigurasi tersebut bisa hilang.
- Mengapa konfigurasi hilang?
- NGINX Unit menyimpan konfigurasi yang Anda setel melalui API dalam memory. Jika Anda tidak menyimpan konfigurasi tersebut ke file, setelah server di-restart, konfigurasi tersebut tidak akan ada lagi, dan NGINX Unit akan kembali ke konfigurasi default atau kosong.
- Solusi:
- Untuk menghindari kehilangan konfigurasi setelah restart, pastikan Anda menyimpan konfigurasi NGINX Unit ke file setelah melakukan perubahan. Anda bisa menggunakan perintah
curl
untuk mengekspor konfigurasi dan kemudian menyimpannya secara manual. Contoh untuk menyimpan konfigurasi ke file:
- Untuk menghindari kehilangan konfigurasi setelah restart, pastikan Anda menyimpan konfigurasi NGINX Unit ke file setelah melakukan perubahan. Anda bisa menggunakan perintah
curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > /path/to/config.json
- Setelah server di-restart, Anda bisa memulihkan konfigurasi dari file dengan perintah:
curl --unix-socket /var/run/control.unit.sock -X PUT --data-binary @/path/to/config.json http://localhost/config/
3. Konflik dengan Apache dan NGINX Unit
Apache dan NGINX Unit mungkin keduanya mencoba mendengarkan pada port yang sama (port 80). Hal ini menyebabkan konflik, di mana salah satu layanan (Apache) berhasil mengambil alih port 80, sementara NGINX Unit gagal memulai dan menghilangkan semua konfigurasi yang bergantung pada listener tersebut.
- Solusi:
- Nonaktifkan atau hapus Apache jika Anda sudah menggunakan NGINX Unit sepenuhnya untuk WordPress.
- Pastikan tidak ada layanan lain yang menggunakan port yang sama seperti NGINX Unit.
4. Restart Server Tanpa Menyimpan Konfigurasi Terakhir
Jika server Anda restart mendadak tanpa terlebih dahulu menyimpan konfigurasi dari NGINX Unit ke disk, konfigurasi yang belum disimpan akan hilang. Ini mirip dengan poin kedua, namun penting untuk menekankan bahwa penyimpanan konfigurasi NGINX Unit secara eksplisit diperlukan untuk menghindari kehilangan data.
- Solusi:
- Setelah membuat perubahan konfigurasi di NGINX Unit (seperti listener, routes, dan applications), pastikan untuk menyimpan konfigurasi ke file JSON untuk mencegah kehilangan saat restart mendadak.
- Buat mekanisme untuk load ulang konfigurasi secara otomatis saat server di-restart, seperti menggunakan skrip
systemd
yang memastikan NGINX Unit memuat konfigurasi yang disimpan pada startup.
5. Masalah dengan Hak Akses File atau Direktori
Jika ada masalah dengan hak akses file atau direktori tempat NGINX Unit mencoba menulis atau membaca file konfigurasi, NGINX Unit mungkin tidak dapat memulihkan atau menyimpan konfigurasi dengan benar.
- Solusi:
- Pastikan NGINX Unit memiliki hak akses yang tepat untuk direktori dan file yang digunakan untuk menyimpan konfigurasi. Anda bisa memeriksa dan memperbaiki hak akses menggunakan perintah
chmod
danchown
untuk memastikan pengguna yang menjalankan NGINX Unit memiliki izin yang tepat.
- Pastikan NGINX Unit memiliki hak akses yang tepat untuk direktori dan file yang digunakan untuk menyimpan konfigurasi. Anda bisa memeriksa dan memperbaiki hak akses menggunakan perintah
Kesimpulan
Penyebab utama hilangnya konfigurasi NGINX Unit setelah restart kemungkinan besar adalah:
- Apache mengambil alih port 80 sehingga NGINX Unit gagal memulai.
- Konfigurasi tidak disimpan secara persisten dan hilang saat server restart.
- Konflik port antara Apache dan NGINX Unit.
Untuk menghindari masalah ini di masa depan, Anda bisa:
- Menonaktifkan Apache sepenuhnya jika Anda hanya ingin menggunakan NGINX Unit.
- Menyimpan konfigurasi NGINX Unit secara manual dan memastikan konfigurasi dimuat ulang setelah restart.
- Mengatur NGINX Unit untuk berjalan di port yang benar dan tidak berbenturan dengan layanan lain seperti Apache.
Jika Anda sudah menyelesaikan konflik port dengan Apache dan menyimpan konfigurasi NGINX Unit, server Anda akan berjalan dengan stabil tanpa kehilangan konfigurasi setelah restart.