Namestitev Apacheja in PHP-FPM v sistem AlmaLinux 9

Linux Branje: 4 min

Ta vodnik na VPS brez nadzorne plošče (unmanaged) prikazuje, kako v sistem AlmaLinux ali Rocky Linux 9 namestiš spletni strežnik Apache in PHP. Skupaj s strežnikom podatkovnih baz (glej: Namestitev MariaDB v sistem AlmaLinux 9) to daje tako imenovano okolje LAMP (Linux, Apache, MySQL/MariaDB, PHP), ki ga potrebujeta WordPress in večina aplikacij PHP.

Če strežnika ne želiš upravljati iz ukazne vrstice, razmisli o uporabi nadzorne plošče (glej: Katero nadzorno ploščo izbrati za VPS?).

Ukaze zaganjaj kot uporabnik root ali s sudo.

1. Posodobitev sistema

sudo dnf update -y

2. Namestitev Apacheja

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

Če na strežniku teče firewalld (izpis sudo firewall-cmd --state je running), odpri spletna vrata (glej: Kako nastavim požarni zid na svojem VPS?). Na cloud image AlmaLinux firewalld privzeto ni nameščen, tam ta korak odpade:

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

Takrat se v brskalniku na naslovu http://<naslov IP strežnika> že prikaže testna stran Apacheja.

3. Izbira različice PHP

AlmaLinux 9 ponuja več različic PHP kot module (module stream). Razpoložljive različice:

dnf module list php

Privzeta je različica 8.0, ki je razvijalci PHP ne podpirajo več in na kateri veliko novejših aplikacij sploh ne deluje. Izberi novejšo, na primer 8.3 (če je na seznamu):

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

Če potrebuješ novejši PHP od tistega na seznamu ali želiš vzporedno poganjati več različic PHP, lahko uporabiš repozitorij Remi. Možnosti primerja članek Namestitev PHP v sistema AlmaLinux 9 in 10.

4. Namestitev PHP in pogostih razširitev

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

WordPress in večina CMS delujeta s temi razširitvami; nameščene razširitve izpiše ukaz php -m.

V AlmaLinux 9 Apache PHP poganja prek storitve PHP-FPM, kar paket php-fpm nastavi samodejno (/etc/httpd/conf.d/php.conf). Zaženi jo in znova naloži Apache:

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

Preverjanje

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

Odpri naslov http://<naslov IP strežnika>/info.php: na podatkovnem listu PHP mora biti v vrstici Server API vrednost FPM/FastCGI. Po preverjanju datoteko izbriši, ker o strežniku izda veliko podatkov:

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

5. Navidezni gostitelj za domeno

Če želiš na strežniku streči spletne strani ene ali več domen, za vsako ustvari navideznega gostitelja. Ustvari imenik spletne strani:

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

Nato konfiguracijsko datoteko:

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>

AllowOverride All omogoči uporabo datotek .htaccess, ki jih na primer potrebujejo lepi URL-ji WordPressa (glej: Kaj je datoteka .htaccess in čemu služi?).

Preveri konfiguracijo, nato znova naloži Apache:

sudo apachectl configtest
sudo systemctl reload httpd

Zapis A domene (in poddomene www) nastavi na naslov IP strežnika. Dokler se DNS ne posodobi, lahko stran preizkusiš tudi z ukazom curl (glej: Odpravljanje težav z omrežjem).

6. SELinux

SELinux, ki je v AlmaLinuxu privzeto vklopljen, datoteke pod /var/www obravnava pravilno. Če mora spletna stran pisati (nalaganja, predpomnilnik), se povezuje z zunanjo storitvijo ali pošilja e-pošto, je za to potrebno posebno dovoljenje, na primer:

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

Podrobno: SELinux: zakaj dobim napako „Permission denied”?

7. Nastavitve PHP

Splošne nastavitve PHP so v datoteki /etc/php.ini. Najpogosteje spremenjene vrednosti:

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

Število procesov PHP-FPM uravnavaš v datoteki /etc/php-fpm.d/www.conf, z vrednostjo pm.max_children. Prilagodi jo pomnilniku strežnika, ker lahko previsoka vrednost povzroči pomanjkanje pomnilnika (glej: Zmanjkalo je pomnilnika: OOM killer in datoteka swap).

Po spremembi znova zaženi PHP-FPM:

sudo systemctl restart php-fpm

8. Potrdilo SSL

Ko domena že kaže na strežnik, s Certbotom pridobi brezplačno potrdilo Let’s Encrypt: Pridobitev potrdila Let’s Encrypt s Certbotom. Certbot navideznega gostitelja Apache samodejno dopolni z nastavitvami HTTPS.

Nginx namesto Apacheja

Če želiš namesto Apacheja spletni strežnik Nginx, je namestitev podobna: sudo dnf install nginx, nato sudo systemctl enable --now nginx php-fpm. Paket php-fpm vsebuje pripravljeno nastavitev PHP tudi za Nginx (/etc/nginx/default.d/php.conf). Navidezne gostitelje ustvariš v imeniku /etc/nginx/conf.d/, kot bloke server; za PHP v vsakega dodaj vrstico include /etc/nginx/default.d/*.conf;. Nginx datotek .htaccess ne uporablja, preusmeritve je treba navesti v bloku server. Najnovejši Nginx lahko namestiš iz lastnega repozitorija razvijalcev, glej: Namestitev Nginx mainline v AlmaLinux.

AlmaLinux 10

V AlmaLinux in Rocky Linux 10 ni modulov: 3. korak odpade, sistem pa namesti PHP 8.3. PHP 8.4 je od AlmaLinux 10.2 na voljo v sistemskem repozitoriju kot paketi s predpono php8.4- (na primer php8.4-fpm), ki nadomestijo 8.3; podrobnosti opisuje članek Namestitev PHP v sistema AlmaLinux 9 in 10. Drugi koraki so enaki.

Nazaj: Linux – članki (76)