apt update
apt upgrade
apt install acl nano mc nginx php-fpm php-curl php-gd php-mbstring php-xml php-zipDodatkowo (np dla drupal)
apt install composerSprawdzenie wersji php
php -vsystemctl status php8.4-fpm # (zmień 8.2 na swoją wersję)Strony domowe - w debian
nano /var/lib/lxc/srv-nginx/configdodaj
lxc.mount.entry = /home/LO home/LO none bind,create=dir 0 0lxc-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 nginxmv /var/www/html/index.nginx-debian.html /var/www/html/index.html