Ga naar de inhoud
agovena.
agovena.
Aan de slag
Community

Winkelbeheer & operations

Nginx en PHP-FPM

Plaats Agovena achter Nginx en PHP-FPM met de juiste documentroot, socket en beveiligingsregels.

Op deze pagina

Gebruik deze handleiding wanneer je Nginx koos voor een native Ubuntu- of Debian-installatie. Gebruik Apache wanneer je die webserver hebt gekozen. Draai beide nooit op dezelfde HTTP-poorten.

1. Installeer Nginx en PHP-FPM

Heb je de pakketten nog niet geïnstalleerd? Gebruik dan de tab voor jouw besturingssysteem:

bash
sudo apt update
sudo apt install -y nginx php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-intl php-bcmath
sudo systemctl enable --now nginx

Start de FPM-service die bij jouw PHP-versie hoort:

bash
systemctl list-unit-files 'php*-fpm.service'
sudo systemctl enable --now php8.3-fpm

Gebruik php8.4-fpm in plaats van php8.3-fpm wanneer die versie op de server staat.

2. Maak de Nginx-site aan

Agovena bevat een veilig startsjabloon. Kopieer dit naar Nginx en bewerk de hostname:

bash
sudo cp /var/www/agovena/deploy/nginx.conf /etc/nginx/sites-available/agovena
sudo nano /etc/nginx/sites-available/agovena

Stel deze waarden in:

nginx
server_name store.example;
root /var/www/agovena/public;

Schakel de site in en verwijder de standaardsite zodat Nginx niet de verkeerde documentroot gebruikt:

bash
sudo ln -s /etc/nginx/sites-available/agovena /etc/nginx/sites-enabled/agovena
sudo rm -f /etc/nginx/sites-enabled/default

De documentroot moet eindigen op /public. Gebruik nooit /var/www/agovena als root. Het meegeleverde sjabloon blokkeert ook .env, Composerbestanden, het artisan-bestand, verborgen bestanden en PHP-uitvoering onder publieke storage. Behoud deze regels.

3. Stem de PHP-FPM-socket af

Bekijk de sockets die op deze server bestaan:

bash
ls -l /run/php/php*-fpm.sock

Open het Nginx-sitebestand en laat fastcgi_pass overeenkomen met de actieve PHP-FPM-socket:

nginx
location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
}

Gebruik de volledige meegeleverde configuratie, niet alleen dit fragment. Installeerde je de optionele Agovena-FPM-pool, gebruik dan deze socket:

text
/run/php/php8.3-fpm-agovena.sock

Nginx, PHP-FPM, de queueworker en cron moeten hetzelfde applicatiepad en een passende runtimegebruiker gebruiken. Een 502 betekent meestal dat de FPM-service, het socketpad of de socketrechten niet kloppen.

4. Stel rechten en uploadlimieten in

Geef vanuit de applicatiemap de deploymentgebruiker eigenaarschap en geef de groep www-data schrijfrechten voor runtime-mappen:

bash
cd /var/www/agovena
DEPLOY_USER="${SUDO_USER:-$USER}"
sudo chown -R "$DEPLOY_USER":www-data /var/www/agovena
sudo chmod -R ug+rwX storage bootstrap/cache

Het meegeleverde sjabloon gebruikt een Nginx-limiet van 20 MB. Houd die gelijk aan PHP:

ini
upload_max_filesize = 20M
post_max_size = 20M

Gebruik geen chmod 777, publiceer storage/app/private niet en maak geen alias naar private bestanden.

5. Schakel HTTPS in

Laat DNS naar de server wijzen en volg de HTTPS-handleiding. Stel na activering van het certificaat APP_URL in op het HTTPS-adres en stuur HTTP door naar HTTPS. Verzamel geen beheerders- of klantgegevens via gewone HTTP.

6. Test en herlaad Nginx

Test de configuratie altijd voordat je deze herlaadt:

bash
sudo nginx -t
sudo systemctl enable --now nginx
sudo systemctl reload nginx

Mislukt de test? Los dan eerst het gemelde bestand en de regel op. Vervang het volledige beveiligde sjabloon niet door een minimaal voorbeeld.

7. Controleer de winkel

Open deze URL's via de echte hostname:

  • /
  • /login
  • /admin
  • een publieke productafbeelding onder /storage
  • een route die geen fysiek bestand is

Verzoeken naar .env, Composerbestanden, artisan en private storage mogen geen inhoud teruggeven. Rond af met de handleiding voor queueworker en scheduler.

Doorzoek de documentatie

Zoek handleidingen, commando’s en API-endpoints

Waar ben je naar op zoek?

Documentatie