Eine Schritt für Schritt-Anleitung für die Bereitstellung und Verwaltung einer PHP-Anwendung Auf Docker LAMP, LAPP Und LAOP Stacks
Zum Ausführen von & die Verwaltung 9 PHP - Anwendungsvorlagen (LAMP, LAPP und LAOP Stacks) in diesem Projekt auf 13 verschiedenen Wolken und Virtualisierungsplattformen (einschließlich vSphere, Openstack, AWS, Rackspace, Microsoft Azure, Google Compute Engine, DigitalOcean, IBM Strato, etc.), stellen Sie sicher , dass Sie entweder:
Anpassen & Run jede der veröffentlichten Docker PHP-Anwendungsvorlagen (einschließlich der LAMP, LAPP und LAOP Stacks) und viele andere Vorlagen (einschließlich Multi-Tier-Java-Anwendungs-Stacks, Mongo Replica Set Cluster, Drupal, Wordpress, MEAN.JS usw. )
Hintergrund
Enterprise-Anwendungen containerizing ist nach wie vor eine Herausforderung, vor allem, weil bestehende Anwendung Zusammensetzung Rahmenbedingungen befassen sich nicht mit komplexen Abhängigkeiten, externe Integrationen oder automatische Skalierung Workflows post-Bereitstellung. Außerdem bedeutete die ephemeren Design von Behältern, dass die Entwickler neue Behälter zu drehen musste und neu zu erstellen, die komplexen Abhängigkeiten und externe Integration mit jeder Version zu aktualisieren.
DCHQ, in gehosteten und On-Premise-Versionen adressiert all diese Herausforderungen und vereinfacht die Containerisierung von Enterprise-Anwendungen über eine erweiterte Anwendung Zusammensetzung Rahmen, der Docker Compose mit Quer Bild Umgebungsvariable Bindungen, erweiterbare BASH-Skript-Plug-Ins, die sein kann, erstreckt zum Zeitpunkt der Anforderung oder nach der Bereitstellung und Anwendungs-Clustering für Hochverfügbarkeit über mehrere Hosts oder Regionen mit Unterstützung für automatische Skalierung aufgerufen.
Sobald eine Anwendung bereitgestellt wird, kann ein Benutzer die CPU, Speicher überwachen und I / O der Laufbehälter, erhalten Benachrichtigungen und Alarme, und Zugriff auf Anwendungssicherungen, automatische Waage in / out-Workflows zu bekommen, und Plug-in-Ausführung Workflows aktualisieren Container ausgeführt wird. Darüber hinaus ermöglicht die automatisierte "App Run" Benutzer ihre Continuous Integration Workflows zu integrieren, um die Bereitstellung von Containern zu planen für ihre Nightly Builds oder wenn Veränderungen in GitHub verschmolzen.
In früheren Blogs haben wir gezeigt , die End-to-End - Bereitstellung Automatisierung verschiedener Java - Anwendungen (wie Pizza Shop - und Film - Store - Anwendungen) auf Multi-Tier - Docker-basierte Anwendungs - Stacks über 13 verschiedene Wolken und Virtualisierungsplattformen. Eine vollständige Auflistung dieser Blogs, können Sie diese Seite besuchen: http://dchq.co/docker-java-applications.html
Doch viele Anwender wurden auf einige der grundlegenden Aspekte der Anwendungsmodellierung immer noch verwirrt. Diese Fragen sind:
Um diese Fragen zu beantworten, haben wir eine Probe "Namensverzeichnis" PHP-Anwendung in diesem GitHub Projekt, das auf diesen Anwendungsstapel eingesetzt werden können:
In diesem Projekt werden wir einen Schritt-für-Schritt-Anleitung für die Konfiguration, Bereitstellung und Verwaltung dieser PHP-Anwendung mit verschiedenen Anwendungs-Stacks und auf verschiedenen Cloud / virtuellen Infrastruktur.
Wir behandeln:
Konfigurieren des CONFIG.PHP Die PHP-Anwendung
Sie können diese Probe "Namensverzeichnis" PHP-Anwendung von GitHub klonen.
Dies ist der wichtigste Schritt in "Dockerizing" Ihre PHP-Anwendung. Um die Umgebungsvariablen zu nutzen Sie passieren kann, wenn die Behälter läuft, müssen Sie sicherstellen, dass Ihre Anwendung in einer Weise konfiguriert ist, das Ihnen erlaubt, bestimmte Eigenschaften auf Anfrage zeit zu ändern - wie:
Um dies zu erreichen, müssen Sie zunächst konfigurieren müssen config.php .
Sie werden feststellen, dass bestimmte Datenquelleneigenschaften die folgenden Umgebungsvariablen verweisen, die zum Zeitpunkt der Anforderung weitergegeben wird:
Initialisierung der Datenbank für den PHP-Anwendung
Normalerweise empfehlen wir das Datenbankschema als Teil der Bereitstellung selbst PHP-Anwendung zu initialisieren. Auf diese Weise müssen Sie sich nicht um die Aufrechterhaltung separate SQL-Dateien kümmern, die separat auf der Datenbank ausgeführt werden müssen.
Wenn Sie jedoch bereits diese SQL - Dateien haben und Sie immer noch lieber , sie auf der Datenbank separat ausgeführt wird - dann kann DCHQ helfen, diesen Prozess durch seine Plug-in - Rahmen zu automatisieren. Sie können auf diese verweisen Abschnitt für weitere Informationen.
Um die SQL - Skripte für die Erstellung der Datenbanktabellen in der PHP - Anwendung zu schließen, müssen Sie konfigurieren Persistence.php Datei zu füllen die Datenbank mit verschiedenen SQL - Anweisungen (abhängig von der verwendeten Datenbank). Die populateDatabase () Funktion funktioniert mit MySQL, PostgreSQL und Oracle.
Gebäude Das Docker Bild mit PHP 5.6-Apache
Sobald die PHP-Anwendung konfiguriert ist, müssen Sie einfach ein Docker Bild mit Ihrem PHP-Code zu erstellen.
Nach der Anmeldung zu DCHQ (entweder der Gastgeber DCHQ.io oder On-Premise - Version), ein Benutzer navigieren kann Image - Build und dann auf die + Taste , um eine neue zu erstellen Dockerfile (Git / GitHub / BitBucket) Bild zu bauen.
Geben Sie die erforderlichen Werte wie folgt:
Sobald die erforderlichen Felder ausgefüllt sind, kann ein Benutzer klicken Sie auf Speichern .
Ein Benutzer kann dann auf die Play - Taste die Docker Bild on-demand zu bauen.
Hier ist die tatsächliche Dockerfile dieses Docker Bild von diesem GitHub-Repository zu bauen verwendet:
Der Aufbau des YAML-basierte Anwendungsvorlagen, die überall wiederverwendet werden kann auf jedem Linux-Host ausgeführt wird
Einmal DCHQ angemeldet (entweder die gehostete DCHQ.io oder On-Premise - Version) kann ein Benutzer zu navigieren App & Machine und klicken Sie dann auf die + Taste , um eine neue zu erstellen Docker Compose Vorlage.
Wir haben erstellt 9 Anwendungsvorlagen , die mit offiziellen Bilder von Docker Hub für die gleiche "Namensverzeichnis" PHP - Anwendung - aber für verschiedene Anwendungsserver und Datenbanken.
Die Vorlagen sind Beispiele für die folgenden Anwendungsstapel (für die gleiche PHP-Anwendung):
Environment Variable Bindings Über Bilder
Zusätzlich kann eine Benutzerumgebung Quer Bild Variablenbindungen erstellen , indem Sie einen Verweis auf ein anderes Bild der Umgebungsvariable zu machen. Einschließlich - In diesem Fall haben wir mehrere Bindungen gemacht | DB_HOST = {container_private_ip} {MySQL} , in dem der Datenbankcontainer IP dynamisch zur Anforderungszeit aufgelöst wird und wird verwendet , um sicherzustellen , dass die Apache-PHP - Server eine Verbindung mit dem herstellen können - Datenbank.
Hier ist eine Liste der unterstützten Umgebungsvariablen Werte:
LAMP-Stack (Linux-Apache-MySQL-PHP)LAPP Stack (Linux-Apache-PostgreSQL-PHP)LAOP Stack (Linux-Apache-Oracle-PHP)LAMP-Stack (3-Tier Nginx-PHP-MySQL)LAPP Stack (3-Tier Nginx-PHP-PostgreSQL)LAOP Stack (3-Tier Nginx-PHP-Oracle-XE)LAMP-Stack (3-Tier ApacheHTTP-PHP-MySQL)LAPP Stack (3-Tier ApacheHTTP-PHP-PostgreSQL)LAOP Stack (3-Tier ApacheHTTP-PHP-Oracle-XE)Um ein Plug-In aufrufen Initialisieren Getrennt die Datenbank auf einem Docker LAMP-Stack
Wir empfehlen, die Initialisierung der Datenbank-Schema als Teil des PHP-Anwendungsbereitstellung selbst. Doch nach wie vor, wenn Sie die SQL-Dateien auf der Datenbank separat Ausführung bevorzugen - dann kann DCHQ helfen, diesen Prozess durch seine Plug-in-Rahmen zu automatisieren.
In diesem Beispiel MySQL in diesem LAMP - Stack ist Aufrufen eines BASH - Skript - Plug-in die populate.sql Datei auszuführen. Das BASH - Skript - Plug-in wurde von der Navigation erstellt Plug-Ins und sieht wie folgt aus :
In diesem BASH - Skript - Plug-in, $ MYSQL_USER , $ MYSQL_ROOT_PASSWORD und $ MYSQL_DATABASE sind Umgebungsvariablen, die zum Zeitpunkt der Anforderung übergeben werden.
$ file_url ist ein überschreibbar Argument , die Sie definieren können , wenn das Plug-in erstellen oder wenn die Anwendung anfordert. Dies wird die URL für die populate.sql - Datei sein.
Provisioning & Auto-Skalierung der zugrunde liegenden Infrastruktur auf jeder Cloud
Sobald eine Anwendung gespeichert wird, kann ein Benutzer ein Cloud-Provider registrieren Sie sich auf 12 verschiedene Cloud-Endpunkte, einschließlich VMware vSphere, Openstack, Cloud, Amazon Web Services, Rackspace, Microsoft Azure, DigitalOcean, IBM die Bereitstellung und automatische Skalierung von Clustern zu automatisieren Softlayer, Google Compute Engine, und viele andere.
Erstens kann ein Benutzer ein Cloud - Provider für Rackspace (zum Beispiel) registrieren , um von der Navigation Cloud - Anbieter und dann auf dem Anklicken + Taste zur Auswahl von Rackspace . Die Rackspace API Key muss zur Verfügung gestellt werden - die aus dem Kontoeinstellungen Abschnitt der Rackspace Cloud Control Panel abgerufen werden können.
Ein Benutzer kann dann einen Cluster mit einer Auto-Scale - Richtlinie erstellen automatisch neue Cloud - Server zum Hochdrehen. Dies kann durch die Navigation zu erfolgen Cluster Seite und dann auf dem Anklicken + Taste. Sie können eine kapazitätsorientierte Platzierung Richtlinie auswählen und dann Weave als Netzwerkschicht , um sicher zu erleichtern, passwortgeschützten Quer Container Kommunikation über mehrere Hosts innerhalb eines Clusters. Die Auto-Scale - Politik kann beispielsweise die maximale Anzahl von VMs (oder Cloud - Server) auf 10 festgelegt.
Ein Benutzer kann jetzt Bestimmung eine Reihe von Cloud-Server auf der neu erstellten Cluster entweder über den UI-basierten Workflow oder durch ein einfaches YAML-basierten Maschine Compose Vorlage definieren, die von der Self-Service-Bibliothek angefordert werden kann.
UI-basierte Workflow - Ein Benutzer kann durch Navigieren zu Rackspace Cloud Server anfordern Maschinen und dann auf dem Anklicken + Taste zur Auswahl von Rackspace . Sobald der Cloud - Provider ausgewählt ist, kann ein Benutzer wählen Sie die Region, Größe und Bild benötigt. Ports sind standardmäßig auf Rackspace Cloud Server geöffnet einige der Port - Anforderungen (zB 32.000-59.000 für Dockarbeiter, 6783 für Weave und 5672 für RabbitMQ) gerecht zu werden . Ein Cluster wird dann ausgewählt , und die Anzahl der Cloud - Server spezifiziert werden.
YAML-basierte Maschine Compose Vorlage - Ein Benutzer kann zunächst eine Maschine Compose Vorlage für Rackspace erstellen , indem Sie auf die Navigation Maschinen und wählen Sie dann Maschine Compose .
Hier ist die Vorlage, um ein 4 GB Cloud Server für Ihr Interesse.
Die Parameter, die für die Maschine Compose Vorlage werden im Folgenden zusammengefasst:
Sobald die Maschine Compose Vorlage gespeichert wird, kann ein Benutzer dieses Gerät aus der Self-Service anfordern Bibliothek . Ein Benutzer kann klicken anpassen und dann die Auswahl Cloud - Anbieter und Cluster für die Bereitstellung von Cloud - Server diese Rackspace zu verwenden.
Bereitstellen der Multi-Tier PHP-Anwendung auf dem Cluster Rackspace
Sobald die Cloud-Server bereitgestellt werden, kann ein Benutzer eine Multi-Tier-Bereitstellung-Docker basierte PHP-Anwendungen auf die neuen Cloud-Server. Dies kann durch die Navigation auf der Self-Service-Bibliothek und klicken Sie dann auf Anpassen getan werden, um eine Multi-Tier-Anwendung zu beantragen.
Ein Benutzer kann ein Umwelt-Tag (wie DEV oder QE) auswählen und das Cluster erstellt, bevor sie auf Rackspace Ausführen klicken.
Der Zugriff auf In-Browser-Terminal für den Laufbehälter
Eine Eingabeaufforderung Symbol sollte neben dem Container 'Namen auf der Live-Apps-Seite zur Verfügung. Dies ermöglicht Benutzern, den Container mit Hilfe eines sicheren Kommunikationsprotokolls durch die Agenten-Nachrichtenwarteschlange einzugeben. Eine weiße Liste der Befehle können vom Mieter Admin definiert werden, um sicherzustellen, dass die Nutzer keine schädlichen Änderungen an den Lauf Container zu machen.
Für den PHP-Einsatz zum Beispiel, haben wir die Eingabeaufforderung, um sicherzustellen, dass der PHP-Code ist in der Tat unter dem Verzeichnis / var / www / html / Verzeichnis.
Die CPU-Überwachung, Speicher und I / O-Auslastung der Laufbehälter
Sobald die Anwendung in Betrieb ist, überwachen unsere Entwickler die CPU, Speicher, und E / A der laufenden Container Benachrichtigungen zu erhalten, wenn diese Metriken eine vordefinierte Schwelle überschreitet. Dies ist besonders nützlich, wenn unsere Entwickler funktionale Leistungsfähigkeit und Lasttests.
Ein Benutzer kann historische Monitoring Analysen durch und Fragen im Zusammenhang mit Container - Updates korrelieren oder Installationen aufzubauen. Dies kann durch einen Klick auf das getan werden Aktionen Menü der laufenden Anwendung und dann auf Überwachung . Ein benutzerdefinierten Zeitraum kann CPU, Speicher zu lesen und E / A - historisch ausgewählt werden.
Aktivieren der Continuous Integration mit automatisierten App Run
Für Entwickler, die die "unveränderliche" Container-Modell zu folgen, indem sie Bilder Docker Wiederaufbau der Anwendungscode und Spinnen neue Container mit jeder Anwendung zu aktualisieren, DCHQ stellt ein automatisiertes Bildaufbau und automatisierte App laufen Features enthält, die es Entwicklern ermöglichen, automatisch Docker Bilder von Dockerfiles erstellen oder private Projekte GitHub enthält Dockerfiles und dann voll LAMP-Stacks unter Verwendung der neuesten Bilder von planen der Bereitstellung von Anwendungen und die Anpassung der Anwendung Lease spin up.
Wie im Bild Build Docker erklärt Abschnitt kann ein Benutzer zwei parallelen Zeitplan für die PHP - Image erstellt (das auf basiert php: 5,6-Apache ).
Ein Benutzer kann dann navigieren Sie zu Bild baut und dann auf die + Taste , um eine neue "Automatisierte App Run" Richtlinie zu erstellen. Ein Benutzer kann dann füllen Sie die erforderlichen Felder - wie:
Skalieren von der PHP-Anwendung
Wenn die laufende Anwendung Ressource eingeschränkt wird, kann ein Benutzer die Anwendung zu skalieren, um die zunehmende Belastung gerecht zu werden. Darüber hinaus kann ein Benutzer die Skala während der Geschäftszeiten zu planen und die Waage in den Wochenenden zum Beispiel.
Um den Cluster von PHP - Container von 1 bis 2 skalieren, kann ein Benutzer klicken Sie auf den Aktionen Menü der laufenden Anwendung und wählen Sie dann Scale - Out . Ein Benutzer kann dann geben Sie die neue Größe für den Cluster und klicken Sie dann auf Jetzt ausführen .
Wir haben dann die BASH-Plug-in Apache HTTP Server httpd.conf-Datei zu aktualisieren, so dass sie von dem neuen Anwendungsserver hinzugefügt bewusst ist. Die BASH-Skript-Plug-Ins können auch Anwendungsfälle aufzunehmen wie Reinigung Protokolle oder Aktualisieren von Konfigurationen bei definierten Frequenzen eingeplant werden.
Zur Ausführung eines Plug-in auf einem laufenden Behälter kann ein Benutzer klicken Sie auf den Aktionen Menü der laufenden Anwendung und wählen Sie dann Plug-ins . Ein Benutzer kann dann wählen Sie die Load - Balancer (Apache HTTP Server) Container, suchen Sie nach dem Plug-in , die ausgeführt werden muss, Container Neustart mit der Toggle - Button aktivieren. Das Standardargument für dieses Plug-in alle Container IP des laufenden PHP - Container dynamisch zu lösen und sie als Teil der httpd.conf - Datei.
Eine Anwendung Zeitlinie zur Verfügung steht jede Änderung an der Anwendung für die Prüfung und Diagnose gemacht zu verfolgen. Dies kann aus dem expandierbaren Menü am unteren Rand der Seite einer laufenden Anwendung zugegriffen werden.
Warnungen und Hinweise sind für, wenn Behälter oder Hosts sind oder wenn die CPU & Speicher Nutzung entweder auf Hosts oder Behälter einen definierten Schwellenwert überschreitet.
Schlussfolgerung
Containerizing Anwendungen Enterprise PHP ist nach wie vor eine Herausforderung, vor allem, weil bestehende Anwendung Zusammensetzung Rahmenbedingungen befassen sich nicht mit komplexen Abhängigkeiten, externe Integrationen oder automatische Skalierung Workflows post-Bereitstellung.
DCHQ, in gehosteten und On-Premise-Versionen adressiert all diese Herausforderungen und vereinfacht die Containerisierung von Enterprise-PHP-Anwendungen über eine vorzeitige Anwendung Zusammensetzung Framework, das Cross-Bild-Umgebungsvariable Bindungen, erweiterbare BASH-Skript-Plug-Ins ermöglicht, die bei aufgerufen werden kann fordern Zeit oder nach der Bereitstellung und Anwendungs-Clustering für Hochverfügbarkeit über mehrere Hosts oder Regionen mit Unterstützung für automatische Skalierung.
Multi-Tier-PHPapplication Vorlagen zusammen mit Application-Lifecycle-Management-Funktionalität wie Überwachung, Container-Updates, Skala in / out und kontinuierliche Lieferung zu erhalten Zugriff auf Out-of-Box.
|
Thursday, 14 April 2016
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment