Ubuntu 18.04 Server: Cara Mengupgrade PHP dengan Aman
Untuk mengganti PHP ke versi terbaru di Ubuntu 18.04 Server, pertama periksa dukungan dan kompatibilitas sistem operasi dan aplikasi, lalu uji PHP baru di server Ubuntu yang didukung sebelum beralih. Menambahkan repository eksternal dan melakukan upgrade paket secara penuh, seperti sebelumnya, tidak menjamin versi PHP yang diinginkan atau bahwa server web akan menggunakannya.
Poin yang perlu diperiksa terlebih dahulu di Ubuntu 18.04
Pemeliharaan keamanan umum untuk Ubuntu 18.04 LTS berakhir pada Mei 2023. Pemeliharaan keamanan diperpanjang (ESM) dari Ubuntu Pro menyediakan patch keamanan tambahan untuk paket yang berlaku, tetapi ini tidak berarti dukungan untuk semua repositori eksternal atau semua versi PHP. Periksa periode dukungan Ubuntu 18.04 dan cakupan dari langganan serta paket Anda saat ini.
Anda harus membedakan antara versi yang didukung oleh proyek PHP dan paket-paket yang mana distribusi menyediakan patch keamanan. Bahkan jika nomor versi paket Ubuntu tetap sama, perbaikan keamanan bisa diterapkan, sedangkan paket eksternal tidak secara otomatis menerima jaminan Ubuntu Pro. Periksa versi PHP yang secara resmi didukung dan kebijakan penyedia paket.
Dalam jangka panjang, disarankan untuk menginstal Ubuntu LTS yang didukung pada server baru dan memindahkan layanan. Saat meningkatkan server yang ada di tempat, Anda tidak bisa melewati versi LTS, jadi Anda perlu berpindah dari 18.04 ke 20.04 terlebih dahulu dan melanjutkan secara bertahap. Untuk langkah-langkah rinci, lihat Panduan Peningkatan Ubuntu Server.
Periksa konfigurasi PHP dan server web saat ini
Sebelum mengubah server produksi, catat versi command-line interface (CLI), ekstensi yang dimuat, dan paket yang terinstal. Perintah berikut mengambil informasi, tetapi beberapa perintah mungkin gagal jika PHP tidak terinstal.
lsb_release -a
php -v
php --ini
php -m
dpkg -l 'php*' | grep '^ii'
apt-cache policy php
php -v adalah versi CLI. Versi dan pengaturan modul Apache atau PHP-FPM (FastCGI Process Manager) yang digunakan untuk permintaan web mungkin berbeda. Di Apache, periksa modul aktif dengan apache2ctl -M, dan di konfigurasi situs Nginx atau Apache, periksa soket atau alamat yang ditunjuk FastCGI. Apakah PHP-FPM digunakan harus diperiksa bersama dengan daftar layanan dan pengaturan server web.
systemctl list-units --type=service --all 'php*-fpm.service'
sudo apache2ctl -M
Pada server yang tidak menggunakan Apache, tidak perlu menjalankan perintah kedua. Cadangkan file konfigurasi, file situs, database, dan file yang diunggah, serta tinjau prosedur pemulihan. Simpan pengaturan yang berisi kata sandi atau informasi pribadi dengan aman.
Memilih versi baru dan menyiapkan lingkungan uji
- Periksa versi PHP mana saja yang didukung oleh aplikasi, plugin, dan dependensi. Perubahan versi utama pada PHP dapat menyebabkan perilaku yang tidak kompatibel, jadi tinjau panduan migrasi PHP dari versi saat ini ke versi target.
- Pilih kombinasi Ubuntu dan PHP yang didukung dan siapkan server uji yang terpisah dari lingkungan produksi. Gunakan cadangan yang dapat dipulihkan dan perhatikan perlindungan data pengguna yang sebenarnya.
- Catat ekstensi PHP yang dibutuhkan dan temukan paket yang sesuai untuk lingkungan baru. Kebutuhan untuk driver database, pemrosesan gambar, XML, ZIP, dll., bervariasi tergantung pada aplikasi.
- Di server uji, periksa login, koneksi database, unggahan file, tugas terjadwal, dan layar utama, serta tinjau log kesalahan. Jika ada masalah, modifikasi aplikasi dan ekstensi, lalu uji lagi.
Contoh: Menginstal PHP 8.3 di server uji Ubuntu 24.04
Di bawah ini adalah contoh pemasangan PHP 8.3 CLI dan PHP-FPM pada server uji Ubuntu 24.04 LTS baru, bukan Ubuntu 18.04. PHP 8.3 tidak selalu berarti ini adalah versi terbaru. Periksa periode dukungan untuk versi Ubuntu yang dipilih dan daftar paket PHP 8.3 untuk Ubuntu 24.04, serta tambahkan hanya ekstensi yang diperlukan oleh aplikasi Anda.
Pertama, tinjau calon paket dan rencana perubahan. Jika tidak ada calon paket atau daftar penghapusan/perubahan berbeda dari yang diharapkan, jangan instal, dan periksa repositori serta dependensi.
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm
apt-get -s install php8.3-cli php8.3-fpm
Jika hasil di server uji sesuai, pasang dan periksa statusnya. Perintah di bawah ini tidak mengonfigurasi server web untuk secara otomatis menggunakan PHP-FPM.
sudo apt install php8.3-cli php8.3-fpm
php8.3 -v
php8.3 -m
systemctl status php8.3-fpm --no-pager
Sebagai contoh, jika sebuah aplikasi memerlukan koneksi MySQL atau MariaDB, tinjau php8.3-mysql secara terpisah di lingkungan itu. Karena berkas konfigurasi dan ekstensi mungkin berbeda antara CLI dan FPM, periksa pengaturan dan layanan FPM yang baru. Setelah menginstal paket, sesuaikan pengaturan FastCGI pada web server agar sesuai dengan soket FPM dari server uji, dan setelah lulus pemeriksaan konfigurasi web server, muat ulang server tersebut. Metode modul Apache dikonfigurasi secara terpisah dan tidak boleh disamakan dengan FPM.
Verifikasi konfigurasi web dan pulihkan layanan saat terjadi masalah
Anda tidak dapat memeriksa versi PHP dari sebuah website hanya menggunakan versi CLI. Verifikasi pengaturan aktif dari server web bersama dengan layanan dan log FPM, dan dalam lingkungan pengujian yang terbatas, konfirmasikan melalui halaman status aplikasi atau alat administrasi apakah permintaan web menggunakan PHP yang baru. Jangan meninggalkan halaman phpinfo() yang menampilkan pengaturan server secara rinci di lokasi yang dapat diakses publik.
Sebelum transisi yang sebenarnya, rencanakan jendela pemeliharaan, sinkronisasi data, dan titik pemulihan. Setelah mengganti layanan, periksa fungsi utama serta log kesalahan server web dan PHP. Jika terjadi masalah, kembalikan ke pengaturan koneksi server web yang sebelumnya disimpan, lakukan pemeriksaan konfigurasi dan muat ulang, atau alihkan lalu lintas kembali ke server sebelum transisi. Jika struktur database telah berubah, hanya mengembalikan versi PHP mungkin tidak akan memulihkan fungsi, sehingga rencana cadangan dan pemulihan data harus digunakan bersama.
Bersikaplah berhati-hati dengan repositori eksternal dan pembaruan penuh
Metode sebelumnya dalam artikel ini menambahkan ppa:ondrej/php dan menjalankan apt-get upgrade. Apakah repositori eksternal saat ini mendukung Ubuntu 18.04 dan versi PHP yang diinginkan ditentukan oleh penyedia, dan hanya menambahkan repositori tidak menjamin pemeliharaan keamanan. apt-get upgrade memengaruhi tidak hanya PHP tetapi juga paket lain yang dapat ditingkatkan.
Sebelum menambahkan atau menghapus repositori di server produksi, tinjau sumber paket, dependensi yang mungkin berubah, dan metode pemulihan. Anda juga harus memeriksa bagaimana server web menangani PHP secara terpisah, karena mengaktifkan hanya versi modul Apache yang berbeda sementara meninggalkan modul PHP lama seperti adanya dapat menyebabkan konflik konfigurasi.




