apt update
apt upgrade
apt install acl nano mc nginx php-fpm php-curl php-gd php-mbstring php-xml php-zip

Dodatkowo (np dla drupal)

apt install composer

Sprawdzenie wersji php

php -v
systemctl status php8.4-fpm  # (zmień 8.2 na swoją wersję)

 

Strony domowe - w debian

nano /var/lib/lxc/srv-nginx/config

dodaj

lxc.mount.entry = /home/LO home/LO none bind,create=dir 0 0
lxc-stop -n srv-nginx 
lxc-start -n srv-nginx
lxc-attach -n srv-nginx

 

Konfiguracja Nginx do obsługi PHP

nano /etc/nginx/sites-available/default

 

server {
    # Serwer słucha na porcie 80 (standardowy HTTP)
    listen 80 default_server;
    
    # Katalog główny dla adresu http://IP_SERWERA/ (strona główna serwera)
    root /var/www/html;
    
    # Pliki, które Nginx próbuje otworzyć automatycznie po wejściu do katalogu
    index index.php index.html;

    # Obsługuj zapytania dla dowolnej nazwy hosta / adresu IP
    server_name _;

    # --------------------------------------------------------------------------
    # SEKCJA 1: Automatyczne dodawanie znaku "/" na końcu adresu użytkownika.
    # Zapobiega błędom 403 i problemom ze ścieżkami do obrazków/CSS.
    # Przykład: zamienia http://IP/~uczen na http://IP/~uczen/
    # --------------------------------------------------------------------------
    location ~ ^/~(?<user>[^/]+)$ {
        return 301 $scheme://$host/~$user/;
    }

    # --------------------------------------------------------------------------
    # SEKCJA 2: Obsługa stron domowych uczniów (~nazwa_uzytkownika)
    # Wyrażenie regularne: 
    # (?<user>[^/]+) - wycina nazwę użytkownika z adresu URL
    # (?<p>/.*)?     - wycina całą resztę ścieżki (podstrony, pliki)
    # --------------------------------------------------------------------------
    location ~ ^/~(?<user>[^/]+)(?<p>/.*)?$ {
        # Mapowanie adresu URL na fizyczną ścieżkę w kontenerze.
        # $user to nazwa ucznia, $p to ścieżka do konkretnego pliku.
        alias /home/LO/$user/public_html$p;
        
        # Pliki indeksu specyficzne dla folderu ucznia
        index index.php index.html;

        # ----------------------------------------------------------------------
        # SEKCJA 3: Obsługa PHP wewnątrz katalogów użytkowników.
        # Ten blok uruchamia się tylko dla plików kończących się na .php
        # ----------------------------------------------------------------------
        location ~ \.php$ {
            # Ładowanie standardowych ustawień komunikacji z PHP
            include fastcgi_params;
            
            # Przekazanie zapytania do procesora PHP 8.4 przez gniazdo (socket)
            # W Debianie 13 domyślnie używamy wersji 8.4.
            fastcgi_pass unix:/run/php/php8.4-fpm.sock;
            
            # KLUCZOWE: Informuje PHP, gdzie dokładnie leży plik na dysku.
            # Przy użyciu "alias", zmienna $request_filename zawiera 
            # poprawnie przetłumaczoną ścieżkę (np. /home/LO/uczen/public_html/index.php).
            fastcgi_param SCRIPT_FILENAME $request_filename;
        }
    }

    # --------------------------------------------------------------------------
    # SEKCJA 4: Obsługa standardowej strony głównej serwera (/var/www/html)
    # --------------------------------------------------------------------------
    location / {
        # Sprawdź czy plik istnieje, jeśli nie - zwróć błąd 404
        try_files $uri $uri/ =404;
    }

    # Obsługa PHP dla plików znajdujących się bezpośrednio w /var/www/html
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    }
}

 

Sprawdź konfigurację

nginx -t
systemctl restart nginx
mv /var/www/html/index.nginx-debian.html /var/www/html/index.html

Spis treści: