Bereitstellung einer PHP-Anwendung auf VPS: Schritt-für-Schritt-Anleitung von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum VPS die beste Wahl für ein PHP-Projekt ist?

Die Entwicklung einer Webanwendung in PHP ist nur die halbe Miete. Der zweite, ebenso wichtige Teil ist die fachgerechte Bereitstellung. Wenn Sie Shared Hosting mit seinen Einschränkungen entwachsen sind und die volle Kontrolle über die Umgebung wünschen, ist ein virtueller privater Server (VPS) die ideale Lösung. In diesem Artikel gehen wir den Weg vom Serverkauf bis zum Start Ihrer PHP-Anwendung im Produktionsmodus. Sie erfahren, wie Sie das Bundle Nginx + PHP-FPM + MySQL konfigurieren, eine Domain, ein SSL-Zertifikat einrichten und Code-Updates automatisieren.



Schritt 1: Ersteinrichtung des VPS und Verbindung

1.1 Betriebssystemauswahl und erster Login

Wir empfehlen die Verwendung von Ubuntu 22.04 LTS – stabil und mit langfristigem Support. Nach dem Kauf des VPS erhalten Sie eine IP-Adresse und ein Root-Passwort.

Verbindung per SSH herstellen:

ssh root@ihre_SERVER_IP


1.2 Benutzer erstellen und Sicherheit einrichten

Als root zu arbeiten ist eine schlechte Praxis. Wir erstellen einen separaten Benutzer mit sudo-Rechten:

adduser deployerusermod -aG sudo deployer

Jetzt richten wir SSH-Schlüssel für einen bequemen und sicheren Login ein. Generieren Sie auf Ihrem lokalen Rechner einen Schlüssel (falls nicht vorhanden):

ssh-keygen -t rsa -b 4096

Kopieren Sie den öffentlichen Schlüssel auf den Server:

ssh-copy-id deployer@ihre_SERVER_IP

Nachdem Sie den Login per Schlüssel überprüft haben, deaktivieren Sie den Passwort-Login und den Root-Zugriff:

sudo nano /etc/ssh/sshd_config# Ändern Sie:PermitRootLogin noPasswordAuthentication no# Starten Sie SSH neu:sudo systemctl restart sshd


Schritt 2: Installation und Konfiguration des LEMP-Stacks (Nginx, PHP, MySQL)

2.1 Nginx installieren

Pakete aktualisieren und den Webserver installieren:

sudo apt update && sudo apt upgrade -ysudo apt install nginx -y

Status überprüfen:

sudo systemctl status nginx


2.2 PHP 8.x und erforderliche Erweiterungen installieren

Repository mit der aktuellen PHP-Version hinzufügen:

sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt updatesudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip -y


2.3 MySQL (MariaDB) installieren

sudo apt install mariadb-server mariadb-client -ysudo mysql_secure_installation

Datenbank und Benutzer für Ihre Anwendung erstellen:

sudo mysql -u rootCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';FLUSH PRIVILEGES;EXIT;


Schritt 3: Virtuellen Host (Server Block) in Nginx konfigurieren

Konfigurationsdatei für unsere Domain erstellen (z.B. myapp.de):

sudo nano /etc/nginx/sites-available/myapp

Fügen Sie folgende Vorlage für PHP-FPM ein:

server {    listen 80;    server_name myapp.de www.myapp.de;    root /var/www/myapp/public;    index index.php index.html;

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

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

location ~ /\\.ht { deny all; }}

Website aktivieren und Nginx neu laden:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t  # Konfiguration prüfensudo systemctl reload nginx


Schritt 4: Bereitstellung des Anwendungscodes (Git + Composer)

4.1 Repository klonen

Verzeichnis für das Projekt erstellen und Code klonen (z.B. von GitHub):

sudo mkdir -p /var/www/myappsudo chown -R deployer:depl                

Blogs

Buchempfehlungen