Bereitstellung einer PHP-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung

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
```html

Einleitung

Die Entwicklung einer PHP-Anwendung ist nur die eine Hälfte der Arbeit. Der zweite, nicht weniger wichtige Teil ist das Deployment, also das Ausrollen des fertigen Codes auf dem Produktionsserver. Viele angehende Entwickler stoßen beim Übertragen eines Projekts von der lokalen Maschine auf einen VPS (Virtual Private Server) auf Schwierigkeiten. Die Einrichtung der Umgebung, die Arbeit mit dem Webserver, Datenbanken und Sicherheit mögen komplex erscheinen, sind aber in Wirklichkeit ein logischer und nachvollziehbarer Prozess.

In diesem Artikel gehen wir Schritt für Schritt durch, wie man ein PHP-Anwendungs-Deployment auf einem VPS korrekt durchführt. Sie erfahren, wie Sie den Server vorbereiten, Nginx und PHP-FPM konfigurieren, eine MySQL-Datenbank anbinden und die Auslieferung von Updates über Git automatisieren. Das Material richtet sich an diejenigen, die bereits grundlegende Kenntnisse in der Arbeit mit Linux und Git haben, aber ihr Wissen systematisieren möchten.

1. Servervorbereitung und Installation des LEMP-Stacks

Als Erstes müssen Sie sich per SSH mit Ihrem VPS verbinden und die grundlegende Software, bekannt als LEMP (Linux, Nginx, MySQL, PHP), installieren.

Verbinden Sie sich mit dem Server:

ssh root@ihre-ip-adresse

Aktualisieren Sie die Pakete und installieren Sie Nginx, MySQL und PHP mit den erforderlichen Erweiterungen:

sudo apt update && sudo apt upgrade -y
sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y

Starten Sie nach der Installation die Dienste und fügen Sie sie zum Autostart hinzu:

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php8.1-fpm  # Version kann abweichen
sudo systemctl enable php8.1-fpm

An diesem Punkt ist die grundlegende Infrastruktur bereit. Nun gehen wir zur Konfiguration der Datenbank und des Webservers über.

2. MySQL-Konfiguration und Datenbankerstellung

Die meisten PHP-Anwendungen (z. B. WordPress, Laravel oder eigene Projekte) benötigen eine Datenbank. Führen Sie die erste MySQL-Konfiguration durch:

sudo mysql_secure_installation

Folgen Sie den Anweisungen: Setzen Sie ein Passwort für root, entfernen Sie anonyme Benutzer, verbieten Sie die Remote-Anmeldung als root und entfernen Sie die Testdatenbank.

Erstellen Sie nun eine Datenbank und einen Benutzer für Ihre Anwendung. Melden Sie sich in der MySQL-Konsole an:

sudo mysql -u root -p

Führen Sie die SQL-Abfragen aus (ersetzen Sie myapp, myuser und mypassword durch Ihre eigenen Werte):

CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Die Datenbank ist bereit. Notieren Sie sich den Datenbanknamen, den Benutzer und das Passwort – diese werden bei der Anwendungskonfiguration benötigt.

3. Code-Ablage und Konfiguration des Nginx Virtual Hosts

Jetzt ist es an der Zeit, den Code Ihrer PHP-Anwendung auf den Server zu übertragen. Der bequemste Weg ist die Verwendung von Git. Angenommen, Ihr Projekt ist auf GitHub oder GitLab gehostet.

Erstellen Sie ein Verzeichnis für das Projekt und klonen Sie das Repository:

sudo mkdir -p /var/www/myapp
sudo chown -R $USER:$USER /var/www/myapp
git clone https://github.com/ihr-benutzername/ihr-repository.git /var/www/myapp

Wenn das Projekt Composer verwendet (z. B. Laravel oder Symfony), führen Sie die Installation der Abhängigkeiten durch:

cd /var/www/myapp
composer install --no-dev --optimize-autoloader

Konfigurieren Sie die Zugriffsrechte. Normalerweise benötigt der Webserver Schreibzugriff auf einige Ordner (z. B. storage und bootstrap/cache in Laravel):

sudo chown -R www-data:www-data /var/www/myapp/storage
sudo chown -R www-data:www-data /var/www/myapp/bootstrap/cache

Erstellen wir nun die Konfiguration des Virtual Hosts für Nginx. Erstellen Sie die Datei:

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

Fügen Sie die folgende Konfiguration ein (passen Sie sie an):

```

Blogs

Buchempfehlungen