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 ideale Lösung für PHP-Projekte ist

\n

Die Entwicklung einer PHP-Anwendung ist nur die halbe Miete. Der zweite, ebenso wichtige Teil ist die fachgerechte Bereitstellung auf dem Server. Ein virtueller privater Server (VPS) bietet Flexibilität, Kontrolle und Leistung, die bei Shared Hosting nicht verfügbar sind. Sie erhalten Root-Zugriff, die Möglichkeit zur Feinabstimmung der Umgebung und vollständige Ressourcenisolierung.

\n

In dieser Anleitung gehen wir den Weg vom Serverkauf bis zur funktionierenden Anwendung am Beispiel von PHP 8.x, Nginx, MySQL und Git. Alle Schritte sind für das Betriebssystem Ubuntu 22.04 LTS beschrieben – die beliebteste Distribution für Webserver.

\n\n

1. Ersteinrichtung des VPS und Verbindung

\n\n

1.1. Auswahl und Kauf eines VPS

\n

Für eine PHP-Anwendung sind die Mindestanforderungen: 1 vCPU, 1 GB RAM, 20 GB SSD. Wir empfehlen Anbieter mit gutem Ruf: DigitalOcean, Linode, Vultr oder die heimischen Timeweb, Beget.

\n

Nach dem Kauf erhalten Sie eine IP-Adresse, ein Root-Passwort (oder einen SSH-Schlüssel).

\n\n

1.2. SSH-Verbindung und Benutzererstellung

\n

Verbinden Sie sich mit dem Server (ersetzen Sie 192.168.1.1 durch Ihre IP):

\n
ssh root@192.168.1.1
\n

Erstellen Sie einen unprivilegierten Benutzer für die tägliche Arbeit:

\n
adduser deployer\nusermod -aG sudo deployer
\n

Richten Sie SSH-Schlüssel für sicheren Zugang ein:

\n
mkdir -p /home/deployer/.ssh\ncp ~/.ssh/authorized_keys /home/deployer/.ssh/\nchown -R deployer:deployer /home/deployer/.ssh\nchmod 700 /home/deployer/.ssh\nchmod 600 /home/deployer/.ssh/authorized_keys
\n

Deaktivieren Sie den Root-Login über Passwort, bearbeiten Sie /etc/ssh/sshd_config:

\n
PermitRootLogin prohibit-password\nPasswordAuthentication no
\n

Starten Sie SSH neu: systemctl restart sshd

\n\n

1.3. Grundlegende Serversicherheit

\n
    \n
  • Pakete aktualisieren: apt update && apt upgrade -y
  • \n
  • fail2ban installieren: apt install fail2ban -y
  • \n
  • UFW (Firewall) konfigurieren:
  • \n
\n
ufw allow OpenSSH\nufw allow 'Nginx Full'\nufw enable
\n\n

2. Installation und Konfiguration des LEMP-Stacks (Linux, Nginx, MySQL, PHP)

\n\n

2.1. Installation von Nginx

\n
apt install nginx -y\nsystemctl enable nginx\nsystemctl start nginx
\n

Überprüfen Sie die Funktion, indem Sie im Browser die IP-Adresse des Servers öffnen. Sie sollten die Begrüßungsseite von Nginx sehen.

\n\n

2.2. Installation von PHP 8.x und PHP-FPM

\n

Fügen Sie das Repository für die aktuelle PHP-Version hinzu:

\n
apt install software-properties-common -y\nadd-apt-repository ppa:ondrej/php -y\napt update\napt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd -y
\n

Überprüfen Sie den Status von PHP-FPM:

\n
systemctl status php8.2-fpm
\n\n

2.3. Installation von MySQL (MariaDB)

\n
apt install mariadb-server -y\nsystemctl enable mariadb\nsystemctl start mariadb
\n

Führen Sie das Sicherheitsskript aus:

\n
mysql_secure_installation
\n

Erstellen Sie eine Datenbank und einen Benutzer für die Anwendung:

\n
mysql -u root -p\nCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';\nGRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;
\n\n

2.4. Konfiguration des virtuellen Nginx-Hosts

\n

Erstellen Sie eine Konfigurationsdatei für Ihre Domain (z.B. myapp.com):

\n
nano /etc/nginx/sites-available/myapp
\n

Inhalt der Datei:

\n
server {\n    listen 80;\n    server_name myapp.com www.myapp.com;\n    root /var/www/myapp/public;\n    index index.php index.html;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:                

Blogs

Buchempfehlungen