Namestitev Nginx mainline v AlmaLinux iz repozitorija nginx.org

Linux Branje: 5 min

Nginx v lastnem repozitoriju AlmaLinux je stabilen, a ne najnovejši: v AlmaLinux 10 je bila v času preizkusa v njem različica 1.26.3. Razvijalci Nginx (nginx.org) vzdržujejo lasten repozitorij za sisteme na osnovi Red Hat, z dvema vejama:

  • stable: stabilna veja, dobiva le popravke napak (v času preizkusa 1.30.6);
  • mainline: razvojna veja, vanjo najprej pridejo nove funkcije in popravki napak (v času preizkusa 1.31.8).

Razvijalci Nginx sami priporočajo vejo mainline za splošno uporabo: posodablja se redno, v majhnih korakih, in tudi popravki napak se v njej pojavijo prej. Veja stable je dobra izbira, če želiš čim redkejše spremembe.

Korake smo oktobra 2026 preizkusili v sistemu AlmaLinux 10.2; v AlmaLinux 9 delujejo enako. Ukaze zaganjaj kot uporabnik root ali s sudo.

1. Nastavitev repozitorija

Ustvari datoteko /etc/yum.repos.d/nginx.repo (na primer sudo nano /etc/yum.repos.d/nginx.repo) s to vsebino:

[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

centos v URL-ju ni napaka: nginx.org pod tem imenom ponuja pakete za sisteme, združljive z Red Hat, $releasever pa v AlmaLinux da glavno različico (9 ali 10). Lastni opis nginx.org navaja naslov http://; v preizkusu je deloval tudi https://, ki ga priporočamo. Zaradi gpgcheck=1 dnf v obeh primerih pakete preveri po podpisu. module_hotfixes=true je pomemben v AlmaLinux 9: če je tam vklopljen sistemski modul nginx (dnf module list nginx), bi brez tega modul zakril pakete repozitorija.

2. Vklop veje mainline

sudo dnf config-manager --set-enabled nginx-mainline

S tem sta vklopljeni obe veji, dnf pa izbere višjo različico, torej mainline. Če želiš vejo stable, ta korak izpusti.

Razpoložljive različice:

dnf list --showduplicates nginx

3. Namestitev

sudo dnf install nginx

Ob prvi namestitvi dnf zahteva uvoz podpisnih ključev nginx.org. V preizkusu je z naslova https://nginx.org/keys/nginx_signing.key prenesel tri ključe s temi prstnimi odtisi:

8540 A6F1 8833 A80E 9C16 53A4 2FD2 1310 B49F 6B46
573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
9E9B E90E ACBC DE69 FE9B 204C BCDC D8A3 8D88 A2B3

Primerjaj jih s prstnimi odtisi, objavljenimi na strani nginx.org o paketih za Linux, in če se ujemajo, jih sprejmi (y).

4. Zagon in preverjanje

sudo systemctl enable --now nginx
nginx -v
curl -sI http://localhost | head -2
nginx version: nginx/1.31.8
HTTP/1.1 200 OK
Server: nginx/1.31.8

Tekoči Nginx 1.31.8 v sistemu AlmaLinux 10: izpis nginx -v in systemctl status nginx v stanju active (running), z glavnim procesom in dvema delavskima procesoma

Če na strežniku teče firewalld, odpri spletna vrata (sudo firewall-cmd --permanent --add-service=http --add-service=https, nato sudo firewall-cmd --reload), glej: Kako nastavim požarni zid na svojem VPS?

Paket nginx.org je preveden s podporo za HTTP/2 in HTTP/3 (QUIC); nastavitve prevajanja izpiše nginx -V (--with-http_v2_module, --with-http_v3_module).

Če je Nginx iz AlmaLinux že nameščen

Če na strežniku teče Nginx, nameščen iz repozitorija AppStream, ga dnf upgrade nginx tudi po nastavitvi repozitorija ne zamenja, temveč se ustavi z napako:

Error: Transaction test error:
  file /etc/nginx/nginx.conf from install of nginx-2:1.31.8-1.el10.ngx.aarch64 conflicts with file from package nginx-core-2:1.26.3-6.el10_2.7.aarch64

Paketa sta drugače zgrajena (Nginx iz AlmaLinux je razdeljen na paketa nginx in nginx-core), zato je treba starega odstraniti. Vrstni red:

sudo cp -a /etc/nginx /root/nginx-mentes
sudo dnf remove nginx nginx-core
sudo dnf install nginx
sudo systemctl enable --now nginx

Prva vrstica shrani celotno nastavitev: odstranitev izbriše nespremenjene konfiguracijske datoteke (na primer osnovni nginx.conf), paket nginx.org pa namesto njih prinese svoje. Lastne datoteke .conf v imeniku conf.d so v preizkusu ostale na mestu, a jih pred preverjanjem primerjaj z varnostno kopijo. Paket nginx-filesystem ostane na računalniku, od njega je odvisen paket PHP-FPM.

Razlike v primerjavi z Nginx iz AlmaLinux

  • Mesto navideznih gostiteljev je enako: datoteke *.conf imenika /etc/nginx/conf.d/. Z repozitorijem pride default.conf, ki streže osnovno stran z imenom localhost.
  • Storitev teče z uporabnikom nginx, število delavskih procesov je worker_processes auto;, torej eden na procesorsko jedro.
  • Branja /etc/nginx/default.d/ ni. Paket php-fpm iz AlmaLinux sem postavi nastavitev PHP (php.conf), vendar nginx.conf iz nginx.org tega imenika ne bere, zato moraš PHP povezati sam v vsakem bloku server (glej spodaj).
  • S SELinuxom sodeluje: datoteke pod /var/www je stregel brez težav in se je tudi po ponovnem zagonu strežnika zagnal sam (oznaka /run/nginx.pid je bila httpd_var_run_t, v dnevnik ni prišla nobena zavrnitev SELinux). Nekateri opisi za to priporočajo ločeno nastavitev tmpfiles.d; v AlmaLinux 10.2 to ni bilo potrebno. Za druge imenike glej: SELinux: zakaj dobim napako „Permission denied”?

Povezava s PHP-FPM

Namestitev PHP-FPM opisuje članek Namestitev PHP v AlmaLinux 9 in 10. Nastavitev domene, na primer v datoteki /etc/nginx/conf.d/pelda.hu.conf:

server {
    listen 80;
    server_name pelda.hu www.pelda.hu;
    root /var/www/pelda.hu/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Vrstica try_files $uri $uri/ /index.php?$args; je potrebna za lepe URL-je WordPressa in večine ogrodij PHP. Osnovna nastavitev PHP-FPM (listen.acl_users = apache,nginx) uporabniku nginx dovoli povezavo z vtičnico, zato dovoljenj ni treba spreminjati.

Preverjanje in ponovno nalaganje:

sudo nginx -t
sudo systemctl reload nginx
curl -s -H "Host: pelda.hu" http://localhost/

V preizkusu je curl vrnil različico PHP in način izvajanja fpm-fcgi. Za HTTPS pridobi potrdilo Let’s Encrypt: Pridobitev potrdila Let’s Encrypt s Certbotom. Razširitev Certbot za Nginx je v EPEL (python3-certbot-nginx).

Posodabljanje

Nginx iz nginx.org se posodablja skupaj z drugimi paketi sistema:

sudo dnf upgrade nginx

Paket ob posodobitvi poskuša tekoči strežnik med delovanjem preklopiti na novo binarno datoteko, vendar se to v preizkusu ni zgodilo: po zamenjavi paketa je nginx -v že kazal novo različico, glava Server tekočega strežnika (curl -sI http://localhost) pa še staro. Zato po posodobitvi preveri nastavitev in storitev znova zaženi:

sudo nginx -t && sudo systemctl restart nginx

Nazaj na vejo stable

sudo dnf config-manager --set-disabled nginx-mainline
sudo dnf distro-sync nginx

V preizkusu je distro-sync mainline 1.31.8 zamenjal s stable različico 1.30.6 (Downgrading); nato tudi tu storitev znova zaženi. Če se želiš vrniti k Nginx iz AlmaLinux, izbriši datoteko nginx.repo in znova namesti paket nginx (prej tudi tu shrani imenik /etc/nginx).

Če so vrata 80 zasedena

Če se Nginx ne zažene in je v dnevniku bind() to 0.0.0.0:80 failed (98: Address already in use), vrata zaseda drug program, običajno Apache. Poglej, kateri:

sudo ss -tlnp | grep ':80 '

Če je v stolpcu users httpd, ustavi in onemogoči Apache (sudo systemctl disable --now httpd) ali enega od spletnih strežnikov premakni na druga vrata.

Odstranitev

sudo systemctl disable --now nginx
sudo dnf remove nginx
sudo rm /etc/yum.repos.d/nginx.repo

Spremenjene nastavitve in lastni navidezni gostitelji lahko v imeniku /etc/nginx ostanejo; če jih ne potrebuješ več, jih po varnostnem kopiranju izbriši.

Na kateri strežnik?

Lastni Nginx lahko poganjaš na KVM VPS ali namenskem strežniku; na njih lahko z dostopom root namestiš kateri koli spletni strežnik. Če namesto Nginx želiš Apache, to opisuje članek Namestitev Apacheja in PHP-FPM.

Nazaj: Linux – članki (76)