So hosten Sie eine Laravel-App mit MySQL-Datenbank auf Heroku

Dieser Artikel beschreibt einen schrittweisen Ansatz zum Hosten einer Laravel-App auf Heroku. Außerdem wird erläutert, wie Sie Ihre App in Heroku für die Arbeit mit MySQL-Datenbanken verwenden können, da Heroku normalerweise keine Bereitstellung für MySQL vorsieht. Nachdem ich mich einer Reihe von Herausforderungen gestellt hatte, um meine Laravel-Test-App mit MySQL-Datenbank auf Heroku zu hosten, musste ich über dieses Thema schreiben.

Bedarf

In diesem Artikel gehe ich davon aus, dass Sie Ihre Laravel-App bereits für die Bereitstellung bereit haben. Folgende Werkzeuge werden benötigt:

i) Eingabeaufforderung für Windows oder eine entsprechende Eingabeaufforderung für andere Betriebssystembenutzer.

iii) Ein Heroku-Konto. Wenn Sie keinen haben, klicken Sie hier, um ein Konto zu erstellen

iv) Heroku-Befehlszeilenschnittstelle (Command Line Interface, CLI): Heroku verfügt über eine CLI für die Interaktion mit Heroku. Sie können eine hier herunterladen.

Intro

Heroku ist eine der Plattformen als Dienst, die Entwicklern kostenlose Hosting-Dienste bietet. Auf diese Weise kann ein Entwickler die Leistung seiner Anwendung testen, bevor sie in die endgültige Produktionsumgebung verschoben wird. Einer der Nachteile dieser Plattform ist, dass sie standardmäßig keinen MySQL-Server anbietet, aber es gibt natürlich eine Möglichkeit, dies zu umgehen, da es andere Plattformen gibt, die auch kostenlose MySQL-Server wie db4free (die in diesem Artikel verwendet werden) oder anbieten ClearDB-Addons, die diesen Mangel ergänzen. Folgen Sie den Anweisungen, wie Sie Ihre Laravel-App auf Heroku hosten und den MySQL Server-Dienst von anderen Plattformen aus verwenden können.

Schritt 1

Öffnen Sie die Eingabeaufforderung. Navigieren Sie zu dem Verzeichnis, in dem sich Ihr Laravel-Projekt befindet. (Hinweis: Git Bash unterstützt Heroku CLI nicht). Loggen Sie sich in Ihr Heroku-Konto ein, indem Sie ausführen;

Heroku Login

Schritt 2

Führen Sie die folgenden Befehle aus:

git init // um ein neues Repo zu initialisieren
git add --all
git commit -m "mein erstes Commit"

Schritt 3

Erstellen Sie eine Prozessdatei. Heroku startet einen Apache-Server mit PHP, um die App aus dem Stammverzeichnis des Projekts zu bedienen, in unserem Fall dem Ordner public /. Ein Procfile ist erforderlich, um es zu konfigurieren.

Erstellen Sie eine Datei im Stammverzeichnis Ihres Projekts und nennen Sie sie Procfile.

Beachten Sie, dass keine Erweiterung erforderlich ist und der Buchstabe P in Großbuchstaben geschrieben werden muss. Kopieren Sie den folgenden String und fügen Sie ihn in das von Ihnen erstellte Protokoll ein und speichern Sie es.

web: anbieter / bin / heroku-php-apache2 public /
Der Procfile-Inhalt sollte folgendermaßen aussehen

Alternativ können Sie den folgenden Befehl ausführen, um die Prozessdatei zu erstellen

echo "web: vendor / bin / heroku-php-apache2 public /"> Procfile

Dann renne,

git füge Procfile hinzu
git commit -m "Heroku-Protokoll"

Als nächstes erstellen Sie die neue Heroku-App.

Schritt 4

Um deine Heroku-App zu erstellen, starte;

heroku erstelle 

Hinweis: oben dient als Domainname. Wenn Sie es nicht hinzufügen, generiert Heroku einen App-Namen für Sie.

Als nächstes geben Sie die Sprache der App als PHP an.

Schritt 5

So erstellen Sie ein Buildpack, in dem PHP als App-Sprache angegeben wird:

heroku buildpacks: setze heroku / php

Als Nächstes erstellen Sie einen App-Schlüssel für die Laravel-App in der Heroku-Umgebung.

Schritt 6

Führen Sie den PHP Artisan Key aus: generate --show

Kopieren Sie den generierten Schlüssel und führen Sie den folgenden Befehl aus, indem Sie den APP_KEY-Wert auf den von Ihnen kopierten Schlüssel setzen.

heroku config: set APP_KEY = 

Wir müssen das Fehlerprotokoll auf Heroku-Fehlerprotokoll setzen. Gehen Sie dazu zu config / app.php und setzen Sie "log" => "errorlog". Auf diese Weise können Sie Ihr App-Fehlerprotokoll auf Ihrem Heroku-Dashboard anzeigen. Speichern und hinzufügen und bestätigen.

Es ist Zeit, die App zu hosten!

Schritt 6

Führen Sie den folgenden Befehl aus, um die App für heroku zu hosten

git push heroku master --app 

Hinweis: Der Teil ist --app nur erforderlich, wenn Sie mehr als eine App auf Heroku gehostet haben.

Um die App von der Kommandozeile aus zu starten, führen Sie

Öffnen Sie heroku --app 

Wenn Ihr einziges Ziel darin besteht, Ihre Laravel-App ohne Datenbank zu hosten, können Sie den nächsten Abschnitt ignorieren und zum Abschluss springen.

Mysql-Datenbank in die App integrieren

Unser nächstes Ziel ist es, unserer App eine MySQL-Datenbank hinzuzufügen. Es gibt mehrere Websites, die kostenlosen MySQL-Server anbieten. Für diesen Artikel verwenden wir jedoch db4freee.net. Die Schritte sind wie folgt:

Schritt 1

Melde dich auf db4free.net an. Nach der Anmeldung werden Sie per E-Mail aufgefordert, Ihre E-Mail-Adresse zu bestätigen. Nach der Überprüfung werden Sie zu einer Seite weitergeleitet, auf der die folgenden Daten angezeigt werden:

Datenbank: [von Ihnen angegebener Datenbankname]
Benutzername: [von Ihnen angegebener Benutzername]
E-Mail: [Ihre E-Mail]

Schritt 2

Gehen Sie zu Ihrem Laravel-Projekt, navigieren Sie zu config / database.php und aktualisieren Sie es mit den zuvor erstellten MySQL-Datenbankdetails von db4free (siehe unten):

'mysql' => [
            'driver' => 'mysql',
            'host' => env ('DB_HOST', 'db4free.net'),
            'port' => env ('DB_PORT', '3306'),
            'database' => env ('DB_DATABASE', 'your_database_name from_db4free'),
            'username' => env ('DB_USERNAME', 'your_db4free_ username'),
            'password' => env ('DB_PASSWORD', 'your_db4free_password'),
            'unix_socket' => env ('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

Speichern Sie es. git add, commit und push to Heroku.

git add config / database.php
git commit -m "Datenbank aktualisieren"
git push heroku master --app 

Schritt 4

Sie müssen die Heroku-Bash verwenden, um Ihre Migrationen auszuführen. Lauf,

Heroku-Run-Bash

Als nächstes müssen Sie Ihre Migrationen ausführen und sicherstellen, dass Sie jetzt nachfolgende Befehle auf der Heroku-Bash ausführen.

PHP-Handwerker migrieren --app 

Zu diesem Zeitpunkt ist Ihre Datenbank eingerichtet. Wenn Sie die Datenbank aussäen möchten, können Sie wie folgt mit den nächsten Schritten fortfahren:

Schritt 5

php artisan db: seed --app 

Wenn Sie auf einen Fehler stoßen, der dem folgenden Screenshot ähnelt, geraten Sie nicht in Panik.

Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  • Gehen Sie zu Ihrem Laravel-Projekt und navigieren Sie zu composer.json
  • Ersetzen Sie "fzaninotto / faker" von "require-dev" durch "require"
  • Verlassen Sie die Heroku-Bash, indem Sie exit ausführen
  • Fügen Sie die Änderungen zu Ihrem Projekt hinzu und übernehmen Sie sie
git add composer.json
git commit -m "modified composer.json"
git push heroku master --app 
  • Geh zurück zu Heroku Bash,
  • Runheroku rennt bash
  • Führen Sie die Composer-Installation aus
  • Nachdem der Composer die erforderlichen Abhängigkeiten installiert hat, führen Sie die folgenden Befehle aus, um Ihre Datenbank zu migrieren und zu sortieren
PHP Handwerker migrieren: Refresh - Seed - Force

Boom! alles funktioniert jetzt gut!

Zusammenfassung

Sie haben jetzt gelernt, wie Sie Ihre großartige Laravel-App auf Heroku hosten können. Sie haben auch gelernt, wie Sie den MySQL-Server einbinden können, damit Ihre App mit der MySQL-Datenbank funktioniert. Wenn Sie mehr über Heroku erfahren möchten, besuchen Sie https://devcenter.heroku.com/. Wenn Sie auch mehr über die automatische Bereitstellung in Heroku von Git erfahren möchten, klicken Sie hier.

Vielen Dank, dass Sie sich die Zeit zum Lesen genommen haben. Ich hoffe, der Artikel hat Ihnen geholfen!