Laravel Stack: Nginx + PHP-FPM + Queue Worker konfigurieren

Ein stabiler Laravel-Stack erfordert die koordinierte Konfiguration von Nginx als Webserver, PHP-FPM für die PHP-Verarbeitung und Queue Worker für Hintergrundjobs. Mit diesem Setup können Webanfragen effizient verarbeitet und Aufgaben wie E-Mail-Versand oder Datenverarbeitung zuverlässig ausgeführt werden. Dieser Leitfaden richtet sich an Einsteiger, IT-Studierende und Junior Network Engineers und zeigt praxisnah, wie der Laravel Stack performant und sicher auf Linux konfiguriert wird.

Systemvoraussetzungen

  • Linux-Distribution: Ubuntu 22.04 LTS oder CentOS 9
  • Root- oder sudo-Zugriff
  • PHP 8.x mit PHP-FPM
  • Nginx als Webserver
  • Datenbank: MariaDB oder MySQL 8.x
  • Supervisor oder systemd für Queue Worker

Nginx für Laravel konfigurieren

Nginx dient als Webserver und Reverse-Proxy. Er leitet PHP-Anfragen an PHP-FPM weiter und kann statische Dateien direkt ausliefern.

Installation

# Ubuntu
sudo apt update
sudo apt install nginx -y

CentOS

sudo dnf install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Serverblock erstellen

sudo nano /etc/nginx/sites-available/laravel.conf
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/laravel/public;

    index index.php index.html;

    access_log /var/log/nginx/laravel.access.log;
    error_log /var/log/nginx/laravel.error.log;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

PHP-FPM optimieren

PHP-FPM verarbeitet PHP-Anfragen und sollte auf Laravel abgestimmt werden.

Installation

# Ubuntu
sudo apt install php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-curl php8.1-gd -y

CentOS

sudo dnf install php-fpm php-mysqlnd php-mbstring php-curl php-gd -y
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Pool-Konfiguration

sudo nano /etc/php/8.1/fpm/pool.d/www.conf
[www]
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
php_admin_value[memory_limit] = 256M
sudo systemctl restart php8.1-fpm

Datenbank einrichten

MariaDB oder MySQL dienen als Datenbank für Laravel.

# MariaDB installieren
sudo apt install mariadb-server mariadb-client -y

# Sicherheit konfigurieren
sudo mysql_secure_installation

Datenbank und Benutzer anlegen

sudo mysql -u root -p

CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'laraveluser'@'localhost' IDENTIFIED BY 'Str0ngP@ssw0rd';
GRANT ALL PRIVILEGES ON laravel.* TO 'laraveluser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Queue Worker konfigurieren

Queue Worker verarbeiten Hintergrundjobs wie E-Mails, Benachrichtigungen oder Datenimporte.

Supervisor für Laravel Queue

sudo apt install supervisor -y
sudo systemctl enable supervisor
sudo systemctl start supervisor

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

systemd Alternative

sudo nano /etc/systemd/system/laravel-worker.service
[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
WorkingDirectory=/var/www/laravel

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable laravel-worker
sudo systemctl start laravel-worker

Netzwerk- und Subnetzplanung

Für größere Deployments sollten Webserver, Queue Worker und Datenbank in separaten Subnetzen laufen, um Last und Sicherheit zu optimieren.

IPv4 Subnetz

<math>
Web-Server-IP = 192.168.500.10/24
Queue Worker-IP = 192.168.500.11/24
DB-IP = 192.168.500.12/24
Subnetzadresse = 192.168.500.0
Broadcastadresse = 192.168.500.255
</math>

IPv6 Subnetz

<math>
Web-Server-IP = 2001:db8:abcd:500::10/64
Queue Worker-IP = 2001:db8:abcd:500::11/64
DB-IP = 2001:db8:abcd:500::12/64
Subnetzadresse = 2001:db8:abcd:500::0
Broadcastadresse = 2001:db8:abcd:500:ffff:ffff:ffff:ffff
</math>

Best Practices

  • Dedizierte Benutzer für Nginx, PHP-FPM und Queue Worker
  • PHP-FPM Pools an Traffic anpassen
  • Supervisor oder systemd für Queue Worker nutzen
  • Logs zentralisieren und regelmäßig prüfen
  • SSL/TLS für sichere Verbindungen
  • Firewall und Subnetze für Sicherheit segmentieren
  • Datenbank-Benutzer minimal berechtigen
  • Backups und Monitoring einrichten
  • Testumgebung identisch zur Produktion
  • Environment-Dateien sicher verwalten

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles