Lewati ke isi

Server & Infrastruktur

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.

Terbit 6 menit baca

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
  1. Apa yang perlu disiapkan?
  2. Langkah pemasangan
  3. Langkah 1: Perbarui sistem dan cek versi AlmaLinux
  4. Langkah 2: Pasang dan nyalakan Apache
  5. Langkah 3: Buka port web di firewalld
  6. Langkah 4: Aktifkan stream PHP 8.3
  7. Langkah 5: Pasang PHP dan ekstensi umum
  8. Langkah 6: Nyalakan PHP-FPM dan muat ulang Apache
  9. Langkah 7: Buat VirtualHost untuk domainmu
  10. Langkah 8: Atur SELinux untuk folder yang ditulis aplikasi
  11. Langkah 9: Uji PHP dan pasang SSL
  12. Apa yang dicek bila halaman masih error?
  13. Di mana lokasi file penting Apache dan PHP?
  14. Pertanyaan yang sering diajukan
  15. 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.log sesuai pengaturan bawaan pool www, untuk error dari kode PHP.
  • Log layanan systemd, lewat journalctl -u httpd dan journalctl -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?

KomponenLokasi atau nama di AlmaLinux 9
Layanan web serverhttpd
Konfigurasi VirtualHost/etc/httpd/conf.d/*.conf
Log Apache/var/log/httpd/
Layanan PHPphp-fpm
Socket PHP-FPM/run/php-fpm/www.sock
Pool FPM/etc/php-fpm.d/www.conf
php.ini/etc/php.ini
User proses webapache

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 -v menampilkan 8.3 dan systemctl status php-fpm httpd keduanya aktif.
  • apachectl configtest menjawab Syntax OK.
  • Service http dan https terbuka di firewalld.
  • Folder yang ditulis aplikasi sudah diberi konteks httpd_sys_rw_content_t.
  • File info.php sudah dihapus dan HTTPS aktif.

Sumber & referensi

Baca juga