Einleitung: Von der lokalen Entwicklung zum Produktionsserver
Die Entwicklung einer PHP-Anwendung auf dem lokalen Rechner ist nur die halbe Miete. Die wahre Meisterschaft beginnt, wenn der Code auf den Server gelangt und echte Benutzer bedient. Fortgeschrittenes PHP-Deployment auf VPS ist nicht einfach nur das Kopieren von Dateien per FTP. Es ist ein komplexer Prozess, der Umgebungseinrichtung, Sicherheit, Automatisierung und Monitoring umfasst.
In diesem Artikel werden wir durchgehen, wie man einen VPS für professionelles Hosting von PHP-Anwendungen mit modernen Tools und DevOps-Praktiken einrichtet. Sie erfahren, wie Sie eine Anwendung auf dem Nginx + PHP-FPM-Stack bereitstellen, eine CI/CD-Pipeline einrichten, die Leistung optimieren und Monitoring implementieren.
Es werden grundlegende Kenntnisse in Linux, PHP und Webservern vorausgesetzt. Wir steigen auf die fortgeschrittene Ebene ein.
1. VPS-Vorbereitung und Umgebungseinrichtung
Serverauswahl und Ersteinrichtung
Wählen Sie für fortgeschrittenes Deployment einen VPS mit mindestens 2 GB RAM und einer SSD-Festplatte. Empfohlene Betriebssysteme sind Ubuntu 22.04 LTS oder Debian 12. Führen Sie nach dem SSH-Zugriff die grundlegende Einrichtung durch:
- Paketaktualisierung:
sudo apt update && sudo apt upgrade -y - Benutzer mit sudo-Rechten erstellen:
sudo adduser deployer && sudo usermod -aG sudo deployer - SSH-Schlüssel einrichten (Passwort-Login deaktivieren)
- Installation von fail2ban zum Schutz vor Brute-Force-Angriffen
- UFW konfigurieren (Ports 22, 80, 443 freigeben)
Installation des LEMP-Stacks (Nginx + PHP-FPM + MySQL)
Wir verwenden Nginx als Frontend-Server und PHP-FPM zur Verarbeitung von PHP. Installieren Sie alle Komponenten mit einem Befehl:
sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip composer git -yÜberprüfen Sie die Versionen:
php -vnginx -vmysql --versionPHP-FPM-Konfiguration für hohe Leistung
Ändern Sie für fortgeschrittenes Deployment die PHP-FPM-Konfiguration. Bearbeiten Sie die Datei /etc/php/8.3/fpm/pool.d/www.conf (die Version kann abweichen):
pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 500Wichtige php.ini-Einstellungen für die Produktion:
memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 64Mmax_execution_time = 300date.timezone = Europe/BerlinStarten Sie PHP-FPM neu: sudo systemctl restart php8.3-fpm
2. Anwendungsbereitstellung: Von Git zur Produktion
Klonen und Berechtigungseinrichtung
Erstellen Sie ein Verzeichnis für das Projekt und klonen Sie das Repository:
sudo mkdir -p /var/www/yourprojectsudo chown -R deployer:deployer /var/www/yourprojectcd /var/www/yourprojectgit clone git@github.com:yourusername/yourproject.git .Konfigurieren Sie die Zugriffsrechte:
sudo chown -R www-data:www-data /var/www/yourproject/storagesudo chown -R www-data:www-data /var/www/yourproject/bootstrap/cachesudo chmod -R 775 /var/www/yourproject/storagesudo chmod -R 775 /var/www/yourproject/bootstrap/cacheNginx-Virtual-Host-Konfiguration
Erstellen Sie eine Konfigurationsdatei für Ihre Domain:
sudo nano /etc/nginx/sites-available/yourprojectBeispiel einer fortgeschrittenen Konfiguration mit Caching und Komprimierung:
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourproject/public;
index index.php index.html;
charset utf-8;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \\.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\