Einrichten einer Staging-Umgebung

Es ist üblich, lokal an einem Projekt zu arbeiten und Revisionen auf einen Produktionsserver zu verschieben. Der Schritt, den die Benutzer jedoch häufig überspringen, ist der Staging-Server. Ein Staging-Server ist eine Mischung aus Produktion und Entwicklung. Sie können Ihre App wie in der Produktion testen. Lassen Sie uns einige der Probleme, die Sie berücksichtigen müssen, sowie die Schritte zum Replizieren einer Produktionsplattform als Service (PAAS) überprüfen..

Es ist mehr als einmal passiert: Ich stelle eine Revision meiner App in Produktion, nur um ein Problem zu finden, nachdem es öffentlich ist. Diese Probleme können so einfach sein wie das Vergessen, Bilder zu Ihrem Repository hinzuzufügen, oder sie können so groß sein wie das lokale Ändern der Datenbankstruktur und das Aktualisieren der Produktionsdatenbank. Probleme passieren jedem, vor allem, wenn Sie Termine eingehalten haben. In diesen Situationen ist es eine kluge Idee, eine Staging-Umgebung einzurichten. Die Idee ist, einen Server zu haben, der die Produktionsumgebung genau repliziert, um Ihre App vor der Veröffentlichung zu testen.

In Bereitstellungsumgebungen werden nicht nur Fehler von Menschen, sondern auch Softwareprobleme erfasst.

Sie können diese Probleme finden und beheben, da der Bereitstellungsbereich über dieselbe Software verfügt wie Ihre Produktionsumgebung. Dies steht im krassen Gegensatz zu Ihrem lokalen Computer, auf dem möglicherweise verschiedene Softwareversionen (z. B. PHP 5.3 gegenüber PHP 5.4) oder sogar andere Funktionen installiert sind. Ich habe Code verschoben, der Anrufe enthielt file_get_contents Nur um festzustellen, dass der Produktionsserver diese Funktion nicht unterstützte.

Wie können Sie einen Staging-Server einrichten? Nun, der erste Schritt ist eine kleine Aufklärung.


Es liegt alles in den Details (meistens)

Probleme passieren jedem, vor allem, wenn Sie Termine eingehalten haben.

Das Erstellen einer Staging-Umgebung ist spezifisch für Ihre Produktionsumgebung. Es gibt keine magische Lösung, die in jeder Situation funktioniert. Die meisten Fälle folgen jedoch einem ähnlichen Muster, und ich werde alle wichtigen Punkte behandeln, während wir weitergehen.

Man kann davon ausgehen, dass die meisten Leute ihre Apps mit einem Versionierungstool (wie GIT) bereitstellen. Bei der seltenen Chance, dass Sie an einem alten Projekt arbeiten, das immer noch FTP verwendet, können Sites wie ftploy.com oder deployHQ.com als Puffer zwischen GIT und Ihrem Server fungieren. Jeffrey Way hat ein informatives Video zusammengestellt, in dem beschrieben wird, wie das eingerichtet wird.

Neben GIT müssen Sie auch über die Sprachen, Software und "besonderen" Funktionen nachdenken, die Ihre Produktionsserver bieten. Ich verwende ein auf PHP basierendes PAAS mit dem Namen Fortrabbit, da es aktuelle Unterstützung für PHP, Apache und GIT bietet. Sie bieten auch die Möglichkeit, der GIT-Commit-Nachricht ein Schlüsselwort hinzuzufügen, durch das Composer die Abhängigkeiten Ihres Projekts installiert.

Dies ist das System, das ich im Rest dieses Artikels einrichten werde. Fortrabbit ist mit seinen Standardfunktionen sowie der speziellen Komponistenfunktion ideal für eine Vielzahl von Hosts. Denken Sie daran: Dies ist keine magische Lösung, aber die Schritte folgen dem gleichen Muster, das Sie für die Einrichtung einer Staging-Umgebung für die meisten Projekte verwenden würden. Passen Sie den Prozess an Ihre spezifischen Bedürfnisse an.

Also, ohne weiteres, springen wir rein.


Server erstellen

Das Erstellen einer Staging-Umgebung ist spezifisch für Ihre Produktionsumgebung.

Es gibt viele verschiedene Betriebssysteme, die Sie auf einem Server ausführen können. Fortrabbit führt Debian Squeeze auf ihren Servern aus, und da wir versuchen, sie zusammenzubringen, habe ich beschlossen, es auch auszuführen.

Ich werde Vagrant benutzen, um das einzurichten. Machen Sie sich keine Sorgen, wenn Sie Vagrant noch nie angewendet haben. wir werden nichts weiter machen. Stellen Sie sicher, dass Sie VirtualBox und Vagrant installiert haben (Vagrant ist eine CLI für VirtualBox; daher ist VirtualBox erforderlich)..

Vagrant erstellt eine virtuelle Momentaufnahme eines Betriebssystems als Basisbox, und Sie können dann mehrere VMs aus diesem Image erstellen. Zuerst müssen wir die Basisbox für Debian Squeeze herunterladen. Ich bin nicht ganz sicher, wo meine Kopie herkommt, also habe ich sie in DropBox hochgeladen, damit Sie sie herunterladen und verwenden können. Öffnen Sie zur Installation ein Terminalfenster und geben Sie Folgendes ein:

 vagrant box add debian https://dl.dropbox.com/u/30949096/debian.box

Dadurch wird Vagrant die Box mit dem Namen "debian" hinzugefügt. Wir können jetzt eine Instanz dieser Box für unseren Bereitstellungsbereich erstellen. Zuerst erstellen wir einen neuen Ordner:

 mkdir ~ / staging_server cd ~ / staging_server

Als Nächstes erstellen Sie die Vagrant-Konfigurationsdatei, indem Sie Folgendes eingeben:

 vagrant init debian

Dadurch wird eine Konfigurationsdatei mit dem Namen "VagrantFile" erstellt, die alle Einstellungen für Ihren Server enthält. Es sieht ziemlich voll aus, wenn Sie es öffnen, aber die meisten Zeilen sind Kommentare. Sie müssen nur die Zeile mit dem Kommentar kommentieren: config.vm.network: überbrückt. Wenn Sie alle anderen Kommentare löschen, erhalten Sie eine Datei, die wie folgt aussieht:

 Vagrant :: Config.run do | config | config.vm.box = "debian" config.vm.network: überbrücktes Ende

Diese Optionen weisen Vagrant an, eine neue virtuelle Maschine basierend auf unserer Debian Squeeze-Basisbox zu erstellen. Dann wird der Netzwerkmodus auf "Bridged" gesetzt. Eine VM mit einem überbrückten Netzwerk wird Ihrem Router als neue physische Maschine angezeigt, sodass sie automatisch ihre eigene IP-Adresse abruft. Dadurch können Sie von jedem Gerät in Ihrem Netzwerk (möglicherweise außerhalb Ihres Netzwerks, wenn Sie Ihren Router konfigurieren) auf das Gerät zugreifen..

Jetzt können wir unsere VM mit dem Befehl starten: "vagrant up" (ohne die Anführungszeichen).

Sie sollten die Ausgabe von Vagrant sehen, die Ihre VM erstellt. Wenn an Ihrem Computer mehrere NICs mit dem Netzwerk verbunden sind, werden Sie von Vagrant aufgefordert, die zu überbrückende NIC auszuwählen.

Wir verwenden SSH, um sich anzumelden, aber wir müssen das integrierte Vagrant verwenden. "vagrant ssh"Befehl zum Anmelden. Gemäß den bewährten Methoden von Vagrant sollten alle Benutzer einen Benutzer namens" vagrant "mit dem Kennwort sowohl für root als auch für vagrant" vagrant "haben. Der vagrant - Benutzer wird als Sudo Benutzer, der kein Passwort eingeben muss, damit Sie ihn direkt verwenden können Sudo Befehle.

Fahren wir fort und richten Sie die Serversoftware ein.


Die Software

Fortrabbits Setup beinhaltet:

  • Apache 2.2
  • PHP 5.4
  • Komponist

Darüber hinaus verwenden sie das Dotdeb-Repository, um den größten Teil davon zu installieren. Für diejenigen, die nicht vertraut sind, ist dotdeb ein Projekt von Guillaume Plessis, das die aktuellsten Versionen gängiger Webserverpakete installiert.

Wir sind bereit zu beginnen. Stellen Sie sicher, dass Ihr Terminalfenster geöffnet ist und über SSH beim Server angemeldet ist. Fügen Sie zunächst das dotdeb-Repo zu APT (dem Paketmanager) hinzu, indem Sie eine neue Datei hinzufügen quellen.d Verzeichnis:

 sudo vim /etc/apt/sources.list.d/dotdeb.list

Dies öffnet eine neue Datei mit dem Namen dotdeb.list in vim (ein Texteditor). Der Name ist nicht wichtig, da alle Dateien in diesem Verzeichnis in APT eingelesen werden. Wir müssen dieser Datei vier Zeilen hinzufügen. Wenn Sie VIM noch nie verwendet haben, geben Sie einfach "ich"um in den Einfügemodus zu gelangen und die nächsten vier Zeilen zu kopieren / einfügen:

 deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all deb http://packages.dotdeb.org squeeze-php54 alle deb-src http: //packages.dotdeb .org squeeze-php54 alle

Zum Speichern drücken Sie die Esc Schlüssel und Typ : wq. Dies ist der Befehl zum Schreiben und Beenden, was im Wesentlichen Speichern und Beenden bedeutet.

Durch Drücken der Eingabetaste wird die Datei gespeichert und Sie kehren zur Befehlszeile zurück.

Wir haben jetzt die Repos hinzugefügt, müssen aber noch die Signatur hinzufügen, bevor wir sie verwenden können. Geben Sie Folgendes ein, um den GNU-Schlüssel hinzuzufügen:

 curl http://www.dotdeb.org/dotdeb.gpg | sudo apt-key hinzufügen -

Dadurch wird der dotdeb-Schlüssel heruntergeladen und als signierte Quelle hinzugefügt. Aktualisieren Sie nun APT, um das neue Paket einzulesen, indem Sie Folgendes eingeben:

 sudo apt-get update

Dies kann etwa eine Minute dauern, aber nach Abschluss werden alle dotdeb-Pakete in APT aufgelistet. Aufgrund der Einrichtung von dotdeb und dem Laden von APT-Abhängigkeiten können wir Apache und PHP gleichzeitig installieren, indem Sie Folgendes eingeben:

 sudo apt-get install php5

Mit dieser einzigen Zeile installiert und konfiguriert APT Apache2 und PHP5. Wenn Sie das Memcache-Add-On von Fortrabbit verwenden, können Sie es mit folgendem Befehl installieren:

sudo apt-get install memcached

Aber ich werde in unserem Beispiel in diesem Artikel nicht auf Memcache eingehen.

Nun müssen wir die Erweiterungen installieren, die Fortrabbit verwendet. Führen Sie den folgenden Befehl aus:

 sudo apt-get install php5-xdebug php5-tidy php5-sqlite php5-redis php5-pgsql \ php5-mysqlnd php5-memcache php5-memcached php5-mcrypt php5-imagic php5-http -apc php5-intl

Das letzte, was wir installieren müssen, ist Composer. Ich werde es global installieren, da wir es an verschiedenen Orten einsetzen werden. Die Befehle für die globale Installation von Composer sind:

 curl -s https://getcomposer.org/installer | php sudo mv composer.phar / usr / local / bin / composer

Der erste Befehl lädt das Installationsprogramm herunter und führt es aus. Der zweite Befehl verschiebt Composer in den Ordner bin, sodass wir ihn verwenden können, ohne den Pfad anzugeben. Lassen Sie uns zur Konfiguration übergehen.


Apache einrichten

Die Chancen stehen gut, dass Sie an mehr als einem Projekt arbeiten. Wenn dies der Fall ist, führt ein Staging-Server für jedes Projekt zu einem erheblichen Aufwand. Um mehrere Sites auf einem einzigen Server zuzulassen, müssen wir Apache namenbasierte virtuelle Hosts hinzufügen. Für jedes Projekt sollten Verzeichnisse und Repos getrennt werden.

Beginnen wir mit einem virtuellen Host.

Ich werde vim weiterhin verwenden, aber ich weiß, dass Sie, wenn Sie in Ihren eigenen Programmen arbeiten möchten, es kopieren und einfügen oder in der Datei speichern können staging_server Ordner, den Sie auf Ihrem Computer erstellt haben.

Dieser Ordner ist für Ihre VM freigegeben, und Sie können auf die Dateien in der VM zugreifen Landstreicher Wurzelverzeichnis. Sie können dann verwenden: Sudo cp / vagrant / file newfile oder sudo mv / vagrant / filee neue datei um die Dateien zu kopieren bzw. zu verschieben.

Um einen neuen virtuellen Host zu erstellen, müssen Sie eine Datei im erstellen / etc / apache2 / sites-available / Verzeichnis. Um dies mit VIM zu tun, geben Sie Folgendes ein:

 sudo vim /etc/apache2/sites-available/demo.site

Geben Sie im Folgenden Folgendes ein (erinnern Sie sich, drücken Sieich"für den Einfügemodus):

  ServerAdmin [email protected] ServerName demo.dev DocumentRoot / var / www / demo  Optionen Indizes FollowSymLinks MultiViews AllowOverride ALL Order erlauben, alle zulassen  ErrorLog $ APACHE_LOG_DIR /demo.log LogLevel-Debug 

In der ersten Zeile wird ein virtueller Host deklariert, der an Port 80 Anforderungen an eine beliebige IP-Adresse abfragt. Als Nächstes legen wir die Admin-E-Mail-Adresse des Servers und den Servernamen fest. Die E-Mail dient der Fehlerberichterstattung, und die Option für den Servernamen informiert Apache, wann dieser virtuelle Host gelesen werden soll. Regelmäßige virtuelle Hosts arbeiten mit IPs. Zum Beispiel hört jeder vhost auf eine andere IP; So unterscheidet Apache sie.

Da Sie wahrscheinlich nur über eine IP verfügen, können wir namenbasierte virtuelle Hosts verwenden, sodass Sie einen anderen Namen für dieselbe IP angeben können.

In unserem Beispiel werden alle an demo.dev gerichteten Anforderungen von diesem virtuellen Host abgerufen.

In der nächsten Zeile wird der Stammordner des Dokuments festgelegt. Hier ruft Apache Dateien für diesen vhost ab. Die Aussagen im Verzeichnis Die Direktive legt die Berechtigungen für diesen vhost fest. Ich werde nicht zu sehr ins Detail gehen, aber wir legen zuerst die Apache-Optionen für die Verzeichnisse fest, dann legen wir fest, was in einer .htaccess-Datei überschrieben werden kann, und schließlich legen wir fest, wer auf die Site zugreifen kann (in unserem Fall kann jeder).

In den letzten beiden Zeilen wird angegeben, wie die Protokolldatei benannt werden soll und was in das Protokoll geschrieben werden soll. Unsere Protokolldatei heißt demo.log im Apache-Protokollordner unter / var / log / apache2 / auf dieser VM.

Um diesen vhost zu aktivieren, geben Sie Folgendes ein:

 sudo a2ensite demo.site

Dadurch wird ein Symlink zwischen der Datei im Ordner mit den verfügbaren Sites und einer Datei im Ordner mit den aktivierten Sites erstellt. Nachdem Sie diesen Befehl ausgeführt haben, werden Sie aufgefordert, Apache neu zu starten. Sie erhalten eine Fehlermeldung, wenn Sie versuchen, Apache neu zu starten, da das Verzeichnis der Site nicht erstellt wurde. Dies ist leicht zu beheben Demo Ordner, auf den wir in der vhost-Datei verwiesen haben:

 sudo mkdir / var / www / demo

Wir möchten nicht, dass der root-Benutzer den Ordner besitzt. Ändern Sie ihn daher in den vagrant-Benutzer mit chown Befehl:

 sudo chown -R vagrant: vagrant / var / www / demo

Starten Sie jetzt Apache neu:

 Sudo-Dienst apache2 neu starten

Unsere neue Site sollte jetzt voll funktionsfähig sein. Unser nächster Schritt ist die Einrichtung von GIT.


Folgen Sie etwas GIT Magic

Stellen Sie sicher, dass Sie sich im Basisverzeichnis befinden, indem Sie Folgendes eingeben cd ~. Erstellen Sie einen neuen Ordner für das Repo: mkdir demo.git, Geben Sie den Ordner ein und initialisieren Sie ein neues, reines GIT-Repo:

 cd demo.git git init --bare

Ein Bare-Repo ist im Wesentlichen ein Standard-Repo ohne Arbeitsverzeichnis. Wenn Sie mehr über GIT erfahren möchten, schauen Sie sich die Videoserie von Andrew Burgess an.

Wir müssen jetzt die Möglichkeit haben, Code in den Ordner der Site zu pushen. Dafür gibt es viele Möglichkeiten. Aber ich mag es, die Dinge so nah wie möglich an den Dienst zu bringen, den ich nacheifere. Hier ist ein Bild von fortrabbits Git-Prozess von ihrer Site:

Sie sehen, dass der Push-Prozess drei Schritte durchläuft. Wenn eine Verbindung hergestellt wird, wird eine Aktualisierungsnachricht angezeigt und die Site wird im Verzeichnis bereitgestellt. Im letzten Schritt wird alles installiert, wenn die Commit-Nachricht die Schlüsselwörter "[trigger: composer]" enthält. Nachdem diese drei Schritte abgeschlossen sind, wird ">> All Done" angezeigt <

Bevor wir die Haken erstellen, möchte ich über Farben sprechen.

Die meiste Arbeit erledige ich im Terminal, und meistens lassen Terminal-Apps alles die gleiche Farbe. Durch Hinzufügen verschiedener Farben zu Ihrer App wird nicht nur die Lesbarkeit erhöht, sondern auch die Like-Fähigkeit erhöht. Um also besser "Farbpraktiken" in Terminal-Apps zu verbreiten, werde ich mir einen Moment Zeit nehmen, um zu diskutieren, wie sie funktionieren.


Terminalfarben

Die Terminals verfügen über 16 ANSI-Farben, die im gesamten Terminal konfiguriert und verwendet werden können. Hier ist ein Bild des iTerm2-Einstellungsbildschirms mit den sechzehn Farbschlitzen:

Sie können auf sie im Terminal zugreifen, indem Sie das Escape-Zeichen gefolgt von der offenen eckigen Klammer und dem Farbcode eingeben. Sie können in diesem Bild sehen, dass die Farben in zwei Linien aufgeteilt sind: eine mit "Normal" und die andere mit "Hell". Die Codes für die normalen Farben sind die Zahlen 30-37, gefolgt von dem Buchstaben "m", und die hellen Farben sind von 90-97, gefolgt von einem m. Sie können dies in Ihrem Terminalfenster mit testen Echo. Um das Escape-Zeichen zu erstellen, geben Sie ein ctrl-v gefolgt von Strg- [. Sie erhalten einen Charakter, der aussieht ^ [, Es funktioniert jedoch nicht, wenn Sie einfach "^ [" (Shift-6 und dann eckige Klammer öffnen) eingeben. Geben Sie also im Terminalfenster Folgendes ein:

 echo "^ [[31m Hallo Welt ^ [[0m"

Wieder der erste ^ [ wurde nicht eingegeben, sondern wurde mit erstellt ctrl-v und dann Strg- [. Das 0m Zeichencode ist der Rücksetzcode; es entfernt alle Formatierungen. Dies liegt daran, dass die Farbcodes nicht nach dem nächsten Wort enden, sondern solange fortgesetzt werden, bis sie einen anderen Code erhalten.

Bei korrekter Ausführung gibt der obige Code die Wörter "Hallo Welt" in Rot aus (sofern Sie diesen Steckplatz nicht auf eine andere Farbe eingestellt haben)..

Im weiteren Verlauf des Tutorials füge ich den Befehlen Farben hinzu. Fühlen Sie sich frei, ihnen zu folgen oder sie wegzulassen. Sie sind nicht unbedingt erforderlich. Wenn Sie jedoch Farben verwenden möchten, können Sie gerne meine farbunterstützende Klasse verwenden. Nun gehen wir zurück zum Schreiben der Haken.


Die Haken erstellen

Wenn Sie das Fortrabbit-Bild noch einmal betrachten, wird vor dem Aktualisieren des Repos die Meldung "Schritt 1: Repository aktualisieren" angezeigt. Um dies richtig zu machen, müssen wir diese Nachricht in den Pre-Receive-Hook einfügen, der ausgeführt wird, bevor das Repo aktualisiert wird. Geben Sie im Terminalfenster Folgendes ein:

 vim ~ / demo.git / hooks / pre-receive

Dies öffnet den Haken zum Bearbeiten. Fügen Sie den folgenden Code hinzu:

 #! / usr / bin / php 

Die erste Zeile teilt dem Betriebssystem mit, dass es sich um eine PHP-Datei handelt und diese als solche ausgeführt wird. Dann weisen wir den Farben eine Farbe und die Rücksetzsequenz zu. Der letzte Schritt Echos die Linie.

Der nächste Haken ist etwas komplizierter, da der Rest der Aktionen ausgeführt wird. Wir machen es Schritt für Schritt, speichern Sie also den ersten Haken (: wq) und öffnen Sie den nächsten Haken:

 vim ~ / demo.git / hooks / post-receive

Der Post-Receive-Hook wird ausgeführt, nachdem das Repo aktualisiert wurde. Wir müssen zuerst die Site aktualisieren und dann nach dem Composer-Auslöser suchen. Hier ist ein Skelett unseres Programms, das jegliche neue Logik auslässt:

 #! / usr / bin / php  ". $ cyan." OK ". $ blank." \ n "; echo $ yellow." Schritt2: Bereitstellen ". $ blank." \ n "; / * TODO: Bereitstellung auf Site * / echo" -> ". $ cyan. "OK". $ blank. "\ n"; / * TODO: Prüfen Sie, ob der Auslöser * / echo $ yellow ist. ">> All Done <<" . $blank . "\n"; ?>

Dies ist nur ein Überblick, aus dem gearbeitet werden kann. Als Erstes müssen wir die neue Version des Repos in das Verzeichnis der Site ziehen. Normalerweise würde ich einfach Folgendes eingeben, wenn ich im Ordner wäre:

 git fetch ursprung git reset --hard ursprung / master

Sie könnten so etwas verwenden git ziehen, Dies kann jedoch zu Fehlern führen. Wenn eine Datei direkt geändert wurde oder Sie ein Commit verpasst haben, dann git ziehen Außerdem können Sie Ihre nicht aufgespürten Dateien nicht ziehen oder löschen.

Dies sind zwei einfache Befehle, aber Sie erhalten eine Fehlermeldung, wenn Sie versuchen, sie vom Hook aus auszuführen.

GIT legt einige Umgebungsvariablen fest, bevor die Hooks ausgeführt werden. Sie können dies mit einer von zwei Lösungen umgehen, und ich werde Ihnen beide zeigen.

Die erste besteht darin, die Umgebungsvariablen zu überschreiben und die Informationen direkt zu übergeben. Die zweite löscht die Variablen vollständig. Ich werde die erste Option in diesem Beispiel und die zweite Option verwenden, wenn wir am Trigger des Komponisten arbeiten. Ersetzen Sie den Kommentar, den ich oben hinzugefügt habe, wo "TODO Deploy to site" steht, durch Folgendes:

 $ git = "git --git-dir = / var / www / demo / .git / --work-tree = / var / www / demo /"; exec ("$ git fetch -q origin"); exec ("$ git reset --hard origin / master");

Dies überschreibt die Umgebungsvariablen und ruft die zuvor genannten Funktionen auf. Das fügte hinzu -q Der Parameter weist GIT an, "leise" zu sein, und verhindert, dass GIT Meldungen sendet.

Nun müssen wir nach dem Composer-Trigger suchen. Lassen Sie uns das in zwei Schritte aufteilen. Wir prüfen zunächst den Trigger und führen dann den Composer aus. Ersetzen Sie den zweiten TODO-Kommentar durch Folgendes:

 $ msg = exec ("$ git log -n 1 --format = format:% s% b"); if (strpos ($ msg, "[trigger: composer]")! == false) echo $ yellow. "Schritt 3: Composer Hook". $ leer "\ n"; echo "-> Auslösen installieren - erhalten Sie ein". $ cyan. "Kaffee" . $ leer "\ n"; // führe composer echo "->" aus. $ cyan. "OK" . $ leer "\ n"; 

Die erste Zeile ruft die Festschreibungsnachricht mit dem Befehl ab Git Log Befehl und Übergabe in einem speziellen Format, um zusätzliche Informationen auszuschließen. Als Nächstes prüfen wir, ob der String das spezielle Triggerwort hat, und wiederholen den dritten Schritt und die OK-Nachricht. Wir suchen nach dem Composer-Schlüsselwort. Sie können jedoch mehrere Schlüsselwörter für andere Funktionen implementieren, z. B. für die Migration in Laravel oder für Komponententests. Fügen Sie alles hinzu, um Ihren Workflow zu verbessern.

Der letzte Schritt ist das Ausführen von Composer. Composer hat zwei Befehle: Komponist installieren und Komponist Update.

Der Installationsbefehl liest das nicht composer.json Datei, wenn eine gefunden wird composer.lock, und weil einige Leute hinzufügen könnten composer.lock In ihrer .gitignore-Datei ist das Ausführen sicherer Komponist Update (schaut immer auf die composer.json Datei.

Das zweite Problem ist, dass Composer manchmal GIT zum Herunterladen von Paketen verwendet, und diese Versuche schlagen aufgrund der Umgebungsvariablen fehl. Hier ist also ein guter Ort, um einfach die Umgebungsvariable "GIT_DIR" zu entfernen. Ersetzen Sie den Kommentar zum Ausführen von Composer durch Folgendes:

 chdir ("/ var / www / demo"); putenv ("GIT_DIR"); exec ("composer update");

Dieser Code ist unkompliziert. Wir verschieben den PHP-Prozess in den Ordner der Site und entfernen den GIT_DIR Umgebungsvariable, damit GIT normal funktioniert. Die letzte Zeile führt Composer aus.


Lose Enden binden

Wir haben jetzt beide Hooks eingerichtet, sind aber noch nicht vollständig bereit, unseren Server zu nutzen. Zuerst müssen wir diese Hooks ausführbar machen:

 chmod a + x ~ / demo.git / hooks / vor dem Empfang chmod a + x ~ / demo.git / hooks / nach dem Empfang

Als Nächstes erstellen Sie ein GIT-Repo im Ordner der Site. Wir würden eine Fehlermeldung erhalten, wenn wir versuchen, unsere Hooks auszuführen, da der Ordner der Site kein GIT-Repo ist. Um diesen Typ zu beheben:

 cd / var / www / demo git init git remote hinzufügen ursprung /home/vagrant/demo.git

Die ersten beiden Zeilen erstellen das Repo, und dann fügen wir das bloße Repository als Ursprung dieses Repos hinzu.

Sie sollten Ihren öffentlichen Schlüssel auch zu den autorisierten Hosts dieses Servers hinzufügen, damit Sie ohne Kennwort auf den Server über GIT zugreifen können. Sie können Ihren öffentlichen Schlüssel kopieren, indem Sie auf Ihrem Computer (nicht auf der VM) Folgendes eingeben:

 cat ~ / .ssh / id_rsa.pub | pbcopy

Dann fügen Sie es einfach in der Datei auf den Server ein ~ / .ssh / authorised_keys:

 vim ~ / .ssh / authorised_keys

Fügen Sie es einfach der Datei hinzu, aber lassen Sie alles, was bereits vorhanden ist.

Als nächstes müssen wir die IP-Adresse dieses Servers zu unserer hosts-Datei hinzufügen. Um die IP zu finden, geben Sie Folgendes ein:

 ip -4 -o addr show label eth *

Dies zeigt Ihnen die IP aller Netzwerkgeräte auf dieser VM. Fügen Sie die Verbindung hinzu, die eine Verbindung zu Ihrem lokalen Netzwerk herstellt. Wenn Sie die zu verwendende IP-Adresse nicht ermitteln können, kopieren Sie sie und fügen Sie sie in Ihren Browser ein. Wenn eine Verbindung hergestellt wird, haben Sie die richtige IP-Adresse.

Nehmen Sie die IP-Adresse und fügen Sie sie der hosts-Datei Ihres Computers hinzu (nicht der hosts-Datei der VM). Die hosts-Datei auf einem Mac befindet sich unter etc / hosts:

 Sudo vim / etc / hosts

Fügen Sie dann die folgende Zeile hinzu:

 #Format: IP-Adresse Site-Name 192.168.0.110 demo.dev

Wenn dies funktioniert, können Sie zu navigieren http://demo.dev in Ihrem Browser Erstellen Sie, während Sie sich noch auf Ihrem Mac befinden, einen Ordner und initialisieren Sie ein GIT-Repo:

 mkdir ~ / demo cd ~ / demo git init echo "Hello World"> index.php git add. git commit -am "addierte index.php" git remote fügt staging [email protected] hinzu: demo.git git push staging master

Wenn alles gut gelaufen ist, sollten Sie eine Antwort von unseren GIT-Hooks sehen. Navigieren zu http://demo.dev sollte die Meldung "Hello World" in Ihrem Browser anzeigen.


Fazit

So können Sie eine Staging-Umgebung erstellen, die die Funktionalität eines typischen PAAS nachahmt. Wenn Sie Probleme hatten oder mehrere Staging-Umgebungen einrichten mussten, habe ich ein Skript erstellt, das den Prozess vollständig automatisiert. Weitere Informationen finden Sie unter stagr.gmanricks.com.

Ich hoffe der Artikel hat dir gefallen. Fühlen Sie sich frei, um Fragen zu stellen, die Sie in den Kommentaren haben könnten. Danke fürs Lesen.