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.