Apache és PHP-FPM telepítése AlmaLinux 9 rendszerre

Ez az útmutató egy vezérlőpult nélküli (unmanaged) VPS-en mutatja be, hogyan telepíthető az Apache webszerver és a PHP AlmaLinux vagy Rocky Linux 9 rendszerre. Az adatbázis-kiszolgálóval (lásd: MariaDB telepítése AlmaLinux 9 rendszerre) együtt ez adja a WordPresshez és a legtöbb PHP alkalmazáshoz szükséges úgynevezett LAMP környezetet (Linux, Apache, MySQL/MariaDB, PHP).

Ha nem szeretné a szervert parancssorból kezelni, fontolja meg egy vezérlőpult használatát (lásd: Melyik vezérlőpultot válasszam VPS-hez?).

A parancsokat root felhasználóként vagy sudo-val futtassa.

1. A rendszer frissítése

sudo dnf update -y

2. Az Apache telepítése

sudo dnf install -y httpd
sudo systemctl enable --now httpd

Nyissa meg a webes portokat a tűzfalon (lásd: Hogyan állítsak be tűzfalat a VPS-emen?):

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Ekkor a böngészőben a http://<szerver IP-címe> címen már megjelenik az Apache tesztoldala.

3. A PHP verzió kiválasztása

Az AlmaLinux 9 több PHP verziót kínál modulként (module stream). Az elérhető verziók:

dnf module list php

Az alapértelmezett a 8.0-s verzió, amelyet a PHP fejlesztői már nem támogatnak, és sok újabb alkalmazás nem is fut rajta. Válasszon újabbat, például a 8.3-ast (ha a listában szerepel):

sudo dnf module reset php -y
sudo dnf module enable php:8.3 -y

Ha a listában szereplőnél újabb PHP-ra van szüksége, vagy több PHP verziót szeretne párhuzamosan futtatni, a Remi tárolót használhatja.

4. A PHP és a gyakori bővítmények telepítése

sudo dnf install -y php php-fpm php-cli php-mysqlnd php-gd php-xml php-mbstring php-intl php-opcache php-pecl-zip

A WordPress és a legtöbb CMS ezekkel a bővítményekkel működik; a telepített bővítményeket a php -m parancs listázza.

AlmaLinux 9-en az Apache a PHP-t a PHP-FPM szolgáltatáson keresztül futtatja, ezt a php-fpm csomag automatikusan beállítja (/etc/httpd/conf.d/php.conf). Indítsa el, és töltse újra az Apache-ot:

sudo systemctl enable --now php-fpm
sudo systemctl restart httpd

Ellenőrzés

php -v
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php

Nyissa meg a http://<szerver IP-címe>/info.php címet: a PHP adatlapján a Server API sorban az FPM/FastCGI értéknek kell szerepelnie. Ellenőrzés után törölje a fájlt, mert sok információt árul el a szerverről:

sudo rm /var/www/html/info.php

5. Virtuális host a domainhez

Ha egy szerveren egy vagy több domain weboldalát szeretné kiszolgálni, mindegyikhez hozzon létre egy virtuális hostot. Hozza létre a weboldal könyvtárát:

sudo mkdir -p /var/www/example.hu/public_html
sudo chown -R apache:apache /var/www/example.hu

Majd a konfigurációs fájlt:

sudo nano /etc/httpd/conf.d/example.hu.conf
<VirtualHost *:80>
    ServerName example.hu
    ServerAlias www.example.hu
    DocumentRoot /var/www/example.hu/public_html

    <Directory /var/www/example.hu/public_html>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/httpd/example.hu-error.log
    CustomLog /var/log/httpd/example.hu-access.log combined
</VirtualHost>

Az AllowOverride All engedélyezi a .htaccess fájlok használatát, amelyre például a WordPress szép URL-jeihez van szükség (lásd: Mi az a .htaccess fájl és mi célja?).

Ellenőrizze a konfigurációt, majd töltse újra az Apache-ot:

sudo apachectl configtest
sudo systemctl reload httpd

Állítsa a domain A rekordját (és a www aldomainét) a szerver IP-címére. Amíg a DNS nem frissül, a curl paranccsal is kipróbálhatja az oldalt (lásd: Hálózati hibakeresés).

6. SELinux

Az AlmaLinux alapból bekapcsolt SELinuxa a /var/www alatti fájlokat helyesen kezeli. Ha a weboldalnak írnia kell (feltöltések, gyorsítótár), külső szolgáltatáshoz kapcsolódik, vagy levelet küld, ehhez külön engedély kell, például:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/example.hu/public_html/wp-content(/.*)?"
sudo restorecon -Rv /var/www/example.hu
sudo setsebool -P httpd_can_network_connect on

Részletesen: SELinux: miért kapok „Permission denied” hibát?

7. A PHP beállításai

A PHP általános beállításai a /etc/php.ini fájlban vannak. A leggyakrabban módosított értékek:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
date.timezone = Europe/Budapest

A PHP-FPM folyamatok számát a /etc/php-fpm.d/www.conf fájlban, a pm.max_children értékkel szabályozhatja. Ezt a szerver memóriájához igazítsa, mert a túl magas érték memóriahiányt okozhat (lásd: Elfogyott a memória: OOM killer és swap fájl).

Módosítás után indítsa újra a PHP-FPM-et:

sudo systemctl restart php-fpm

8. SSL tanúsítvány

Ha a domain már a szerverre mutat, igényeljen ingyenes Let’s Encrypt tanúsítványt a Certbottal: Let’s Encrypt tanúsítvány igénylése Certbottal. A Certbot az Apache virtuális hostot automatikusan kiegészíti a HTTPS beállításokkal.

Nginx Apache helyett

Ha Apache helyett Nginx webszervert szeretne, a telepítés hasonló: sudo dnf install nginx, majd sudo systemctl enable --now nginx php-fpm. A php-fpm csomag az Nginxhez is tartalmaz kész PHP beállítást (/etc/nginx/default.d/php.conf). A virtuális hostokat a /etc/nginx/conf.d/ könyvtárban, server blokkokként hozhatja létre; a PHP-hoz mindegyikbe vegye fel az include /etc/nginx/default.d/*.conf; sort. Az Nginx a .htaccess fájlokat nem használja, az átirányításokat a server blokkban kell megadni.

AlmaLinux 10

AlmaLinux és Rocky Linux 10-en nincsenek modulok: a 3. lépés kimarad, és a rendszer PHP 8.3-at telepít. A többi lépés ugyanaz.