Cara Pasang Apache dan PHP 8.3 di AlmaLinux 9
Langkah memasang Apache httpd dan PHP 8.3 dari module stream resmi AlmaLinux 9, menyambungkan PHP-FPM, membuat VirtualHost, dan mengatur SELinux.
Jawaban singkat
Di AlmaLinux 9.6 ke atas, PHP 8.3 tersedia sebagai module stream resmi. Jalankan dnf module enable php:8.3, pasang httpd, php, dan php-fpm, nyalakan keduanya, buka port di firewalld, lalu atur konteks SELinux untuk folder yang perlu ditulis aplikasi.
Daftar isi
- Apa yang perlu disiapkan?
- Langkah pemasangan
- Langkah 1: Perbarui sistem dan cek versi AlmaLinux
- Langkah 2: Pasang dan nyalakan Apache
- Langkah 3: Buka port web di firewalld
- Langkah 4: Aktifkan stream PHP 8.3
- Langkah 5: Pasang PHP dan ekstensi umum
- Langkah 6: Nyalakan PHP-FPM dan muat ulang Apache
- Langkah 7: Buat VirtualHost untuk domainmu
- Langkah 8: Atur SELinux untuk folder yang ditulis aplikasi
- Langkah 9: Uji PHP dan pasang SSL
- Apa yang dicek bila halaman masih error?
- Di mana lokasi file penting Apache dan PHP?
- Pertanyaan yang sering diajukan
- Checklist akhir
Butuh PHP 8.3 di AlmaLinux 9, tapi dnf install php malah memasang versi lama? Itu karena AlmaLinux 9 memakai sistem module stream. Versi PHP bawaan saat pertama dirilis adalah 8.0, sedangkan versi yang lebih baru disediakan sebagai stream terpisah yang harus diaktifkan dulu.
Jawabannya: aktifkan stream dengan dnf module enable php:8.3, lalu pasang PHP bersama Apache (httpd). Stream PHP 8.3 masuk ke repositori AppStream resmi sejak AlmaLinux 9.6, jadi tidak perlu repositori pihak ketiga selama sistemmu sudah diperbarui.
Apa yang perlu disiapkan?
- VPS AlmaLinux 9 dengan akses user sudo dan koneksi SSH.
- Domain yang DNS-nya sudah atau akan diarahkan ke IP server, bila ingin memasang SSL.
- Akses konsol dari panel VPS sebagai cadangan bila salah mengatur firewall.
Langkah pemasangan
Langkah 1: Perbarui sistem dan cek versi AlmaLinux
sudo dnf upgrade -y
cat /etc/almalinux-release
Pastikan versinya 9.6 atau lebih baru. Bila lebih lama, dnf upgrade di atas akan membawanya ke rilis minor terbaru. Reboot bila ada pembaruan kernel. Perintah dnf lain yang sering dipakai ada di perintah dnf di AlmaLinux 9.
Langkah 2: Pasang dan nyalakan Apache
sudo dnf install -y httpd
sudo systemctl enable --now httpd
Di keluarga RHEL, paket Apache bernama httpd, file konfigurasi utamanya /etc/httpd/conf/httpd.conf, dan konfigurasi tambahan diletakkan di /etc/httpd/conf.d/. Bila masih menimbang web server lain, perbandingannya ada di Nginx vs Apache vs LiteSpeed.
Langkah 3: Buka port web di firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Penjelasan zona dan bedanya aturan runtime dengan permanent ada di firewalld di AlmaLinux 9. Buka IP server di browser, dan halaman uji Apache berarti web server sudah bisa dijangkau.
Langkah 4: Aktifkan stream PHP 8.3
sudo dnf module list php
sudo dnf module reset php -y
sudo dnf module enable php:8.3 -y
Perintah pertama menampilkan stream yang tersedia. Bila 8.3 tidak muncul, sistemmu belum di rilis 9.6 atau lebih baru. reset diperlukan bila sebelumnya pernah mengaktifkan stream lain.
Langkah 5: Pasang PHP dan ekstensi umum
sudo dnf install -y php php-fpm php-cli php-mysqlnd php-gd php-mbstring php-xml php-intl php-opcache php-pdo
php -v
Keluaran php -v seharusnya menampilkan PHP 8.3.
Langkah 6: Nyalakan PHP-FPM dan muat ulang Apache
sudo systemctl enable --now php-fpm
sudo systemctl restart httpd
Di AlmaLinux 9, paket PHP memasang file /etc/httpd/conf.d/php.conf yang meneruskan file .php ke PHP-FPM lewat socket /run/php-fpm/www.sock. Jadi Apache dan PHP-FPM harus sama-sama berjalan. Pengaturan pool FPM ada di /etc/php-fpm.d/www.conf, dan php.ini ada di /etc/php.ini.
Langkah 7: Buat VirtualHost untuk domainmu
sudo mkdir -p /var/www/contoh.com
Buat file /etc/httpd/conf.d/contoh.com.conf:
<VirtualHost *:80>
ServerName contoh.com
ServerAlias www.contoh.com
DocumentRoot /var/www/contoh.com
<Directory /var/www/contoh.com>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/contoh.com-error.log
CustomLog /var/log/httpd/contoh.com-access.log combined
</VirtualHost>
AllowOverride All mengizinkan file .htaccess, yang dibutuhkan WordPress dan banyak aplikasi PHP untuk URL rapi. Uji lalu muat ulang:
sudo apachectl configtest
sudo systemctl reload httpd
Langkah 8: Atur SELinux untuk folder yang ditulis aplikasi
SELinux aktif secara bawaan di AlmaLinux 9. File di bawah /var/www otomatis bisa dibaca Apache, tapi tidak bisa ditulis. Folder upload, cache, atau wp-content perlu diberi konteks khusus:
sudo dnf install -y policycoreutils-python-utils
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/contoh.com/uploads(/.*)?"
sudo restorecon -Rv /var/www/contoh.com
Bila aplikasi perlu menghubungi layanan luar (API pembayaran, pembaruan plugin, SMTP), izinkan dengan sudo setsebool -P httpd_can_network_connect 1. Untuk database di server lain, cukup sudo setsebool -P httpd_can_network_connect_db 1.
Langkah 9: Uji PHP dan pasang SSL
Buat file uji echo "<?php phpinfo();" | sudo tee /var/www/contoh.com/info.php, buka di browser, dan cari baris Server API: FPM/FastCGI. Hapus file itu setelah dicek.
Untuk HTTPS, pasang modul SSL dan Certbot (Certbot tersedia dari EPEL):
sudo dnf install -y mod_ssl epel-release
sudo dnf install -y certbot python3-certbot-apache
sudo certbot --apache -d contoh.com -d www.contoh.com
Apa yang dicek bila halaman masih error?
Mulai dari log, bukan dari menebak. Ada tiga tempat yang paling sering memberi jawaban:
- Log error VirtualHost, misalnya
sudo tail -n 50 /var/log/httpd/contoh.com-error.log, untuk masalah izin, file tidak ditemukan, atau kesalahan.htaccess. - Log PHP-FPM, yaitu
/var/log/php-fpm/www-error.logsesuai pengaturan bawaan poolwww, untuk error dari kode PHP. - Log layanan systemd, lewat
journalctl -u httpddanjournalctl -u php-fpm, untuk layanan yang gagal start. Cara menyaringnya ada di panduan membaca log dengan journalctl.
Bila log Apache menunjukkan Permission denied padahal permission file sudah benar, hampir pasti penyebabnya SELinux. Cek dengan sudo ausearch -m avc -ts recent seperti di langkah 8.
Di mana lokasi file penting Apache dan PHP?
| Komponen | Lokasi atau nama di AlmaLinux 9 |
|---|---|
| Layanan web server | httpd |
| Konfigurasi VirtualHost | /etc/httpd/conf.d/*.conf |
| Log Apache | /var/log/httpd/ |
| Layanan PHP | php-fpm |
| Socket PHP-FPM | /run/php-fpm/www.sock |
| Pool FPM | /etc/php-fpm.d/www.conf |
| php.ini | /etc/php.ini |
| User proses web | apache |
Pertanyaan yang sering diajukan
Kenapa dnf module enable php:8.3 gagal dengan pesan stream tidak ditemukan?
Stream PHP 8.3 baru tersedia di AppStream sejak AlmaLinux 9.6. Jalankan sudo dnf upgrade, reboot bila perlu, lalu cek lagi dengan dnf module list php.
Halaman PHP menampilkan 503 Service Unavailable, apa penyebabnya?
Biasanya layanan php-fpm belum berjalan, sehingga Apache tidak menemukan socket /run/php-fpm/www.sock. Jalankan sudo systemctl enable --now php-fpm.
Sampai kapan PHP 8.3 mendapat dukungan?
Jadwal dukungan resmi tiap versi PHP tercantum di halaman supported versions di php.net. Di AlmaLinux, masa pakai module stream mengikuti siklus hidup stream yang ditetapkan upstream RHEL, jadi cek keduanya saat merencanakan pembaruan.
Lebih baik Apache atau Nginx untuk AlmaLinux?
Keduanya tersedia resmi dan sama-sama stabil. Apache unggul bila aplikasimu bergantung pada .htaccess, Nginx sering dipilih untuk situs dengan banyak koneksi bersamaan. Pilih yang paling cocok dengan aplikasi dan kebiasaan timmu.
Checklist akhir
php -vmenampilkan 8.3 dansystemctl status php-fpm httpdkeduanya aktif.apachectl configtestmenjawabSyntax OK.- Service http dan https terbuka di firewalld.
- Folder yang ditulis aplikasi sudah diberi konteks
httpd_sys_rw_content_t. - File
info.phpsudah dihapus dan HTTPS aktif.


