Site icon bintorosoft.com

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

Close up of computer web page code inside of html file. Big data and Internet of things trend. Application web source code on monitor.

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

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

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:

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

Exit mobile version