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.