Ramai pegawai IT di jabatan kerajaan diberi tugasan membangunkan aplikasi menggunakan Laravel, PHP atau framework lain. Tetapi bila sampai masa nak deploy ke production, persoalan yang selalu timbul ialah, "Apa sebenarnya yang perlu disediakan sebelum install web server?"
Hakikatnya, install Apache atau IIS hanyalah sebahagian kecil daripada keseluruhan proses. Jika persediaan asas tidak dibuat dengan betul, aplikasi mungkin sukar diakses, tidak selamat atau menyukarkan penyelenggaraan pada masa hadapan.
Berikut ialah checklist yang saya gunakan sebelum sesuatu aplikasi dipasang pada server on-premise.
β 1. Server Physical atau Virtual Machine (VM)
Perkara pertama ialah menentukan lokasi aplikasi akan dihoskan.
Pilihan yang biasa digunakan ialah:
Physical Server
Virtual Machine (VM) menggunakan VMware, Hyper-V atau Proxmox
Pastikan spesifikasi CPU, RAM dan storan mencukupi mengikut bilangan pengguna dan saiz aplikasi. Jangan lupa rancang ruang untuk pertumbuhan data beberapa tahun akan datang.
β 2. Static IP
Server aplikasi sepatutnya menggunakan Static IP, bukannya DHCP.
Ini penting kerana:
DNS lebih mudah dikonfigurasi
Firewall Rule lebih konsisten
Tidak berlaku perubahan IP selepas server reboot
Simpan rekod semua alamat IP supaya mudah dirujuk apabila berlaku troubleshooting.
β 3. Domain
Elakkan pengguna mengakses aplikasi menggunakan alamat IP.
Sebaliknya gunakan domain yang mudah diingati seperti:
Domain juga memberi imej yang lebih profesional dan memudahkan pengurusan SSL.
β 4. DNS
Selepas domain disediakan, pastikan rekod DNS telah dikonfigurasi dengan betul.
Semak perkara berikut:
A Record menghala ke IP server
Internal DNS berfungsi
External DNS (jika diperlukan)
Tempoh propagasi DNS
Kesilapan konfigurasi DNS sering menyebabkan aplikasi tidak boleh diakses walaupun server sebenarnya berfungsi dengan baik.
β 5. Firewall
Jangan buka semua port.
Hanya benarkan port yang benar-benar diperlukan seperti:
HTTP (80)
HTTPS (443)
SSH atau Remote Desktop untuk pentadbiran
Database hanya untuk rangkaian dalaman
Prinsip paling mudah ialah deny by default, kemudian buka hanya akses yang diperlukan.
β 6. SSL Certificate
Semua aplikasi kerajaan sepatutnya menggunakan HTTPS.
SSL membantu:
Melindungi data pengguna
Mengelakkan amaran "Not Secure"
Meningkatkan keyakinan pengguna
Pastikan juga jadual pembaharuan (renewal) sijil direkodkan supaya tidak tamat tempoh tanpa disedari.
β 7. Backup
Ramai hanya membuat backup database.
Sebenarnya backup perlu merangkumi:
Database
Source Code
Fail yang dimuat naik pengguna
Konfigurasi server
Yang lebih penting ialah uji proses restore. Backup yang tidak pernah diuji belum tentu boleh digunakan ketika berlaku bencana.
β 8. Antivirus
Walaupun server menggunakan Linux, langkah keselamatan tetap penting.
Jika menggunakan Windows Server, pastikan antivirus dikonfigurasi supaya tidak mengganggu prestasi aplikasi.
Tetapkan juga jadual kemas kini definisi virus dan imbasan berkala.
β 9. Monitoring
Jangan tunggu pengguna membuat aduan baru hendak semak server.
Pantau sekurang-kurangnya:
CPU
RAM
Disk Space
Network
Status Web Server
Database
Error Log
Monitoring membantu mengesan masalah lebih awal sebelum memberi kesan kepada pengguna.
Di bawah adalah contoh error log dalam Apache Webserver.
β 10. UPS (Uninterruptible Power Supply)
Server yang mati secara mengejut boleh menyebabkan kerosakan data atau pangkalan data menjadi tidak konsisten.
UPS memberi masa untuk:
Menyimpan kerja yang sedang berjalan
Shutdown server dengan selamat
Mengelakkan kerosakan perkakasan
Pastikan bateri UPS juga diuji secara berkala.
Bonus: Kesilapan Yang Selalu Berlaku
Sepanjang pengalaman mengurus server aplikasi, ini antara kesilapan yang paling kerap berlaku:
Install aplikasi terus tanpa perancangan.
Tiada dokumentasi konfigurasi server.
Menggunakan IP Address terus tanpa domain.
Tiada backup atau tidak pernah menguji proses restore.
SSL tamat tempoh sehingga aplikasi memaparkan amaran keselamatan.
Disk server penuh kerana log tidak pernah dibersihkan.
Membuka terlalu banyak port firewall tanpa keperluan.
Menggunakan akaun Administrator atau root untuk operasi harian.
Tiada monitoring menyebabkan masalah hanya diketahui selepas pengguna membuat aduan.
Penutup
Menyediakan web server on-premise bukan sekadar memasang Apache, IIS atau Nginx. Infrastruktur yang dirancang dengan baik akan memudahkan proses deployment, meningkatkan keselamatan dan mengurangkan masalah operasi pada masa hadapan.
Sebelum anda memasang Laravel, PHP atau apa sahaja aplikasi web, pastikan sepuluh checklist di atas telah disemak terlebih dahulu. Sedikit masa untuk membuat persediaan mampu menjimatkan banyak masa ketika proses penyelenggaraan dan troubleshooting nanti.