Advertisement
  1. Code
  2. Laravel

Bereitstellen von PHP-Webanwendungen mit Laravel Forge

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)

Entwickler lieben es, Dinge zu automatisieren - für jeden Prozess zwischen Entwicklung und Produktion sind sie daran interessiert, ein Skript zu haben, das ihren Workflow erleichtert. Dies ist auch bei der Bereitstellung der Fall.

Der Prozess des Pushings des endgültigen Builds und der Bereitstellung der App sollte so einfach sein wie das Drücken einer Deploye now-Schaltfläche, aber das ist nicht die meiste Zeit. Am Ende investierten wir unsere Zeit und Ressourcen in die Konfiguration des Servers, die Einrichtung der Umgebung, das Verschieben von Dateien, von denen wir dachten, dass sie für Produktions-Builds nicht relevant waren, und so weiter.

Einige von uns ziehen es vor, Dateien manuell per FTP an den Server zu senden oder den Code in ein GitHub-Repository zu verschieben, während andere ein Bereitstellungstool bevorzugen, um den Prozess zu vereinfachen. Ein solches Tool, das die PHP-Bereitstellung zu einem Kinderspiel macht, ist Laravel Forge.

Lassen Sie sich vom Markennamen Laravel nicht irreführen. Abgesehen von Laravel können Sie WordPress, Symphony, Statamic oder jedes andere Webprojekt hosten, solange es sich um PHP handelt. Ich persönlich mag Laravel Forge wegen seiner Einfachheit und Gewöhnung.

In diesem Tutorial werde ich Sie durch die Schritte führen, Laravel Forge mit AWS zu verbinden und zu erkunden, was es zu bieten hat.

Überblick

Mit Laravel Forge können Sie Cloud-Server hochfahren und Deployment-Prozesse mit Git und einigen der gängigen Server-Providern abwickeln. Der Prozess wird nachfolgend erläutert:

Zunächst müssen Sie AWS oder einen anderen Cloud-Anbieter mit Ihrem Forge-Konto verbinden. Verknüpfen Sie als Nächstes Ihre Quellcodeverwaltung wie GitHub mit Forge. Sie können nun Server erstellen. Installieren Sie das Quellcodeverwaltungs-Repository auf dem Server. Drücken Sie abschließend die Schaltfläche "Bereitstellen". Einfach genug, oder?

Mit Laravel Forge bereitgestellte Server werden mit dem folgenden Stapel ausgeliefert:

  • Ubuntu 16.06
  • Nginx
  • PHP 7.2/7.1/7.0/5.6
  • MySQL/MariaDB/Postgres
  • Redis
  • Memcached

Sobald der Server erstellt wurde, können Sie die Dinge weiter konfigurieren.

Wenn Sie sich anmelden, können Sie zwischen den verschiedenen Plänen wählen, die sie anbieten. Ich entschied mich für den Basisplan von 12 $ / Monat; Sie erhalten jedoch eine kostenlose Testversion mit Zugriff auf alles auf der Liste für fünf Tage.

Sobald Sie sich eingeloggt haben, sehen Sie unten so etwas.

Screenshot of Laravel Forge main screen once youre logged inScreenshot of Laravel Forge main screen once youre logged inScreenshot of Laravel Forge main screen once youre logged in

Sie können zwischen Digital Ocean, AWS, Linode und Vultr für den Dienstanbieter wählen. Alternativ können Sie Forge auch mit einer benutzerdefinierten VPC verwenden. Was die Quellcodeverwaltung betrifft, unterstützt Forge GitHub, GitLab und Bitbucket. In diesem Lernprogramm werde ich die Grundlagen der Konfiguration von AWS zur Zusammenarbeit mit Forge und GitHub zur Quellcodeverwaltung erläutern. Sobald Sie fertig sind, können Sie eine beliebige Anzahl von Servern erstellen und bereitstellen.

Wenn Sie einen anderen Dienstanbieter in der Liste verwenden, können Sie diesen Schritt überspringen und uns später nach der Konfiguration von AWS und Laravel Forge kontaktieren.

Einrichten von Laravel Forge und AWS

Um Forge und AWS einzurichten, folgen Sie den Schritten, die Sie befolgen müssen.

1. Loggen Sie sich in Laravel Forge ein

Melden Sie sich bei Laravel Forge an und wählen Sie AWS als Dienstanbieter. Sie werden nach einer Access Key ID (Schlüssel) und einem Secret Access Key (Secret) gefragt. Sie müssen einen bestimmten IAM-Benutzer mit einer Richtlinie erstellen, die ausreichenden Zugriff auf Laravel Forge bietet. IAM ist die Methode von Amazon, um Berechtigungen für jeden Benutzer zuzuordnen, so dass Sie den Zugriff widerrufen können, wenn etwas schief geht.

2. Erstellen Sie einen neuen IAM-Benutzer

Melden Sie sich in AWS Console an und erstellen Sie einen neuen IAM-Benutzer.

Create an IAM user on AWS with programmatic accessCreate an IAM user on AWS with programmatic accessCreate an IAM user on AWS with programmatic access

Geben Sie dem Benutzer einen aussagekräftigen Namen und aktivieren Sie das Kontrollkästchen Programmatic Access.

3. Wählen Sie die richtige Richtlinie

Legen Sie die richtige Berechtigung für den laravel-forge IAM-Benutzer fest. Erstellen Sie eine neue Benutzergruppe, da Benutzergruppen ideal zum Verwalten von Berechtigungen sind. Nun ist die natürliche Frage: "Auf welche Richtlinien sollte der Schmiedebenutzer Zugriff haben?" Obwohl Sie es mit AdministratorAccess bereitstellen könnten, sollten Sie dies nicht tun.

Create a user group with the right permissionsCreate a user group with the right permissionsCreate a user group with the right permissions

Wenn Sie Forge zum Erstellen und Bereitstellen von Servern in Ihrem Namen benötigen, müssen Sie zwei Richtlinien hinzufügen:

  1. AmazonEC2FullAccess
  2. AmazonVPCFullAccess

4. Speichern Sie die Anmeldeinformationen und bestätigen Sie

Bestätigen Sie den IAM-Account und auf der nächsten Seite finden Sie den Access Key und den Secret Code.

Newly generated Access key and secretNewly generated Access key and secretNewly generated Access key and secret

Gehe zur Laravel Forge Seite und füge sie dort ein. Das ist es.

5. Verknüpfen Sie Ihr GitHub-Konto mit Forge

Verbinden Sie Ihr GitHub / Bitbucket-Konto mit Forge, falls Sie dies noch nicht getan haben. Forge fügt Ihrem Konto einen öffentlichen Schlüssel hinzu, wenn Sie einen Server erstellen. Wenn Sie einen neuen Dienstanbieter hinzufügen und / oder die Quellcodeverwaltung aktualisieren müssen, haben Sie diese Optionen in Ihrem Profil.

Einen neuen Server erstellen

Wechseln Sie zur Seite Create Server, um einen neuen Server hinzuzufügen.

Laravel Forges interface for adding a new serverLaravel Forges interface for adding a new serverLaravel Forges interface for adding a new server

Wählen Sie t2.micro mit 1 GB RAM, wenn Sie auf der kostenlosen AWS-Ebene sind. Wie für die anderen Einstellungen werde ich mit den Standardeinstellungen gehen. Dies beinhaltet MySQL für die Datenbank und PHP Version 7.2. Sie können den Datenbanknamen später anpassen. Um die Dinge einfach zu halten, habe ich beschlossen, keinen Load Balancer zu verwenden. Wenn Sie sich über das Postproduktionsrezept wundern, habe ich das gegen Ende dieses Tutorials behandelt.

Es kann bis zu fünf Minuten dauern, bis der Server erstellt wurde. Sie erhalten die Zugangsdaten für den sudo-Zugang. Bewahren Sie sie an einem sicheren Ort auf, damit Sie sie in Zukunft verwenden können. Um zu sehen, dass die Dinge wie erwartet funktionieren, gehen Sie zur IP-Adresse des Servers und Sie sollten die Ausgabe von phpinfo()auf Ihrem Bildschirm sehen.

Serververwaltungsschnittstelle

Die Schnittstelle, die Sie nach dem Erstellen eines Servers sehen, ist das Server Management Dashboard.

Server management dashboardServer management dashboardServer management dashboard

Sie können hier eine Menge Dinge tun, wie zum Beispiel:

  • Standortverwaltung
  • Hinzufügen von SSH-Schlüsseln
  • Datenbankkonfiguration
  • Aktualisierung der PHP-Einstellungen
  • eine Aufgabe planen
  • einen Daemon starten
  • Netzwerk verwalten und Firewall konfigurieren
  • Überwachung der Anwendung mit Blackfire oder Papertail
  • Konfigurieren von Metaeinstellungen

Das sind viele Features, die darin enthalten sind. Ich habe die wichtigen in diesem Tutorial behandelt. Beginnen wir mit der Websiteverwaltung. Gemäß den Forge-Dokumenten:

Sites repräsentieren jede "Domain" auf Ihrem Server. Die "Standard" -Site ist in jedem neu bereitgestellten Server enthalten. Sie sollten sie jedoch löschen und eine neue Site mit einem gültigen Domänennamen erstellen, wenn Sie Ihre Produktionsstätte starten möchten.

Wie Sie sehen können, hat Forge bereits eine Standard-Site für uns eingerichtet. Sie können beliebig viele Websites erstellen und diese an Ihre Subdomains weiterleiten. Für den Zweck dieses Tutorials bleibe ich auf der Standardseite. Das Webverzeichnis ist standardmäßig auf /public festgelegt. So sollte es für Laravel und die meisten anderen Webanwendungen konfiguriert werden.

Wenn Sie auf eine bestimmte Site klicken, sehen Sie die Site-Management-Schnittstelle. Sie können einzelne Websites von hier aus verwalten, bereitstellen und konfigurieren.

Websiteverwaltungsschnittstelle

So sieht das Interface zunächst aus.

You can add the Git repo from this screenYou can add the Git repo from this screenYou can add the Git repo from this screen

Sie können entweder von einem Git-Repository installieren oder WordPress installieren. Zum Zweck dieses Lernprogramms habe ich eine Beispielanwendung von Contact us erstellt, die Sie in Ihrem Konto ablegen können. Sie können den Namen des Projekts und die Verzweigung angeben. Sobald Sie fertig sind, sollten Sie über die Steuerelemente zum Bereitstellen Ihrer Anwendung verfügen.

Site management dashboard with deployment controlsSite management dashboard with deployment controlsSite management dashboard with deployment controls

Ich werde Ihnen einen kurzen Überblick über die verfügbaren Optionen geben.

Deploy Now and Quick Deploy

Zur Bereitstellung können Sie die Deploy now-Schaltfläche manuell bereitstellen. Alternativ können Sie die Option Quick Deploy aktivieren, mit der das Projekt automatisch bereitgestellt wird, wenn Sie Code in den Master-Zweig des ausgewählten GitHub-Repos schieben.

Deployment Script

Das Standardbereitstellungsskript ruft Code aus dem Repository ab, installiert Abhängigkeiten, startet den Server und führt bei jeder Bereitstellung der App Migrationen durch. Hier ist das eigentliche Bereitstellungsskript.

1
cd /home/forge/redmonark.com
2
git pull origin laravelapi
3
composer install --no-interaction --prefer-dist --optimize-autoloader
4
echo "" | sudo -S service php7.2-fpm reload
5
6
if [ -f artisan ]
7
then

8
    php artisan migrate --force
9
fi

Wenn Sie es optimieren und etwas hinzufügen müssen, können Sie.

Deployment Trigger URL

Sie können damit Ihre App in einen Drittanbieterdienst integrieren oder ein benutzerdefiniertes Bereitstellungsskript erstellen. Wenn die URL eine Anforderung empfängt, wird das Bereitstellungsskript ausgelöst.

Update the Repo and the Branch

Wenn Sie die Zweigstelle aktualisieren oder eine neuere Version desselben Projekts in einem anderen Repository installieren müssen, können Sie diese Optionen verwenden. Wenn Sie die Verzweigung aktualisieren, müssen Sie möglicherweise auch den Verzweigungsnamen im Bereitstellungsskript aktualisieren.

Environment

Forge generiert automatisch eine Umgebungsdatei für die Anwendung. Einige Details wie Datenbankanmeldeinformationen werden automatisch der Umgebung hinzugefügt. Wenn die Anwendung jedoch eine API verwendet, können Sie den API-Schlüssel sicher in der Umgebung platzieren. Selbst wenn Sie eine generische PHP-Webanwendung ausführen, können Sie mit der Methode getenv()auf die ENV-Variablen zugreifen.

Queue Worker

Das Starten eines Warteschlangenarbeiters in Forge ist mit dem Ausführen des Befehls artisan queue:work identisch. Forge verwaltet Warteschlangenmitarbeiter mithilfe eines Prozessmonitors namens Supervisor, sodass der Prozess dauerhaft ausgeführt wird. Sie können mehrere Warteschlangen basierend auf der Warteschlangenpriorität oder einer anderen Klassifizierung erstellen, die Sie für nützlich halten.

SSL

Das Sichern von SSL für eine Website war in der Vergangenheit alles andere als einfach und kostenlos. Mit Forge können Sie ein vorhandenes Zertifikat installieren oder ein kostenloses Zertifikat von LetsEncrypt erhalten. Es ist schnell und einfach. Wenn Sie SSL für Wildcard-Subdomänen benötigen, können Sie die kostenlosen Cloudflare-Zertifikate zu Forge hinzufügen.

Zurück zur Server Management-Oberfläche haben wir SSH-Schlüssel.

Adding SSH Keys

Obwohl die meisten konfigurierbaren Optionen im Dashboard verfügbar sind, sollten Sie SSH verwenden, wenn Sie eine Verbindung zum Server herstellen müssen. SSH ist die sicherere Methode zum Anmelden bei einem VPS und bietet mehr Schutz als Kennwörter.

Um über SSH auf den Server zugreifen zu können, müssen Sie ein Schlüsselpaar generieren, falls dies nicht bereits geschehen ist. Der öffentliche Schlüssel wird dem Server zugänglich gemacht, und der private Schlüssel befindet sich in Ihrem Host. Sie können dann das Setup verwenden, um eine Verbindung zur Serverinstanz herzustellen.

Adding SSH keys to Forge serverAdding SSH keys to Forge serverAdding SSH keys to Forge server

Hinweis: Der aus dem Server-Management-Dashboard hinzugefügte SSH-Schlüssel ist für diesen Server spezifisch. Wenn Sie von nun an automatisch alle Schlüssel zu allen Servern hinzufügen müssen, können Sie sie aus Ihren Profileinstellungen hinzufügen.

Führen Sie den folgenden Befehl aus, um ein Schlüsselpaar zu generieren.

1
ssh-keygen -t rsa

Sie werden einige Fragen gestellt, z. B. die Datei, in der Sie den Schlüssel speichern möchten, und die Passphrase für zusätzliche Sicherheit. Fügen Sie als Nächstes den SSH-Schlüssel zum ssh-agent hinzu.

1
ssh-add ~/.ssh/id_rsa

Kopieren Sie den öffentlichen Schlüssel und fügen Sie ihn zu Forges Liste der SSH-Schlüssel hinzu.

1
cat ~/.ssh/id_rsa.pub  # Copy the output of this command

Configuring PHP and MySQL

Sie können die Schnittstelle verwenden, um PHP und MySQL zu konfigurieren. Für die Datenbank umfassen die verfügbaren Optionen:

  • Erstelle neue Datenbanken.
  • Fügen Sie neue Benutzer hinzu.
  • Aktualisieren Sie den Benutzerzugriff auf eine Datenbank.
  • Update Forge Wissen über das Passwort.

Stellen Sie sicher, dass Sie die aktualisierten Daten in Ihrer .env-Datei eingeben.

Sie können die folgenden PHP-Einstellungen konfigurieren:

  • Aktualisieren Sie auf die neueste Version von PHP.
  • Ändern Sie die Größe der Upload-Datei.
  • OPCache für die Produktion optimieren, damit der kompilierte PHP-Code im Speicher abgelegt wird.

Andere wichtige Einstellungen

Hier habe ich einige der anderen verfügbaren Einstellungen aufgeführt.

Scheduling a Task

Sie können den Forge-Scheduler verwenden, um wiederkehrende Tasks zu planen oder Cron-Jobs auszuführen. Wenn Sie regelmäßig E-Mails senden, etwas bereinigen oder ein Skript ausführen müssen, können Sie den Aufgabenplaner verwenden. Es wird standardmäßig eine Aufgabe erstellt, die composer self-update jede Nacht ausführt. Sie können versuchen, eine neue mit einer Häufigkeit Ihrer Wahl zu planen.

Starting a Daemon

Ein Daemon ist ein Computerprogramm, das in einem Hintergrundprozess ausgeführt wird. Mit Laravel Forge können Sie einen Daemon starten und Supervisor verwenden, um sicherzustellen, dass der Daemon weiter läuft. Wenn der Daemon aus irgendeinem Grund abstürzt, wird Supervisor das Skript automatisch neu starten.

Monitoring the Application

Laravel Forge verfügt über eine integrierte Unterstützung für Tools, die Ihre Anwendung auf Leistungsmessungen überwachen, indem Daten zu den Ressourcen wie Arbeitsspeicher, CPU-Zeit und E / A-Vorgänge erfasst werden. Die verfügbaren Werkzeuge sind Blackfire.io und Papertrail. Um mit der Profilerstellung Ihrer Anwendung zu beginnen, müssen Sie nur die richtigen Anmeldeinformationen von der Website des Drittanbieters abrufen, und das war's.

Configuring the Server Network and Firewall

Wenn Sie die Firewalleinstellungen aktualisieren müssen, müssen Sie nicht zur AWS-Konsole wechseln, um dies zu ermöglichen. Sie können neue Firewall-Regeln über das Dashboard erstellen. Wenn Sie andere Server bereitstellen, die denselben Anbieter und dieselbe Region verwenden, können Sie ein Servernetzwerk einrichten, sodass sie problemlos kommunizieren können.

Zusammenfassung

Laravel Forge ist ein unglaubliches Werkzeug, das den Einsatz zu einem Kinderspiel macht. Es verfügt über zahlreiche Funktionen und eine einfach zu bedienende Benutzeroberfläche, mit der Sie problemlos Server erstellen und bereitstellen und Anwendungen bereitstellen können. Nachdem Sie den Dienstanbieter konfiguriert haben, sind die Chancen groß, dass Sie nicht mehr auf die AWS-Konsole zugreifen müssen, um den Server erneut zu verwalten.

In diesem Lernprogramm habe ich die Grundlagen zum Konfigurieren von AWS mit Laravel Forge und die Schritte zum Bereitstellen eines Servers und zum Bereitstellen einer Anwendung behandelt. Ich habe auch fast alle Funktionen in der Forge-Oberfläche besprochen.

Für diejenigen unter Ihnen, die gerade mit Laravel anfangen oder Ihr Wissen, Ihre Website oder Ihre Anwendung mit Erweiterungen erweitern möchten, haben wir eine Vielzahl von Dingen, die Sie in Envato Market studieren können.

Haben Sie Erfahrung mit der Bereitstellung von PHP-Anwendungen mit Laravel Forge oder einem anderen gängigen Bereitstellungstool? Lassen Sie es uns in den Kommentaren wissen.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.