So stellen Sie eine Play-Anwendung auf AWS bereit
Amazon Web Services – AWS – ist eine der beliebtesten Cloud-Plattformen. Sie beherbergt über 200 einzigartige Dienste, darunter Docker-Container-Hosting, Load Balancer, Datenbank-Hosting und Dateispeicher.
CloudCaptain – Boxfuse
CloudCaptain (früher bekannt als Boxfuse) ist ein Tool, das minimale unveränderliche Instanzen Ihrer Anwendung erstellt und es Ihnen ermöglicht, diese einfach auf AWS bereitzustellen. Da es sich im Grunde um VM-Instanzen handelt, stellen sie sicher, dass die gesamte Umgebung dieselbe ist, egal ob Sie sie auf Ihrem lokalen Rechner, in einer Test- oder Produktionsumgebung ausführen.
Die ersten Dinge, die Sie tun müssen, um CloudCaptain zu nutzen, sind:
- CloudCaptain-Konto anlegen
- Ihr AWS-Konto mit dem CloudCaptain-Konto verbinden
- Installation des CloudCaptain-Clients
- Installieren von VirtualBox
Verbindung zur Datenbank herstellen
Wenn Ihr Projekt PostgreSQL- oder MySQL-JDBC-Treiber verwendet, erkennt CloudCaptain dies automatisch, erstellt die Datenbank durch „Database auto-provisioning“ und konfiguriert die Datenquelle in der Konfiguration von Play. In der dev
Umgebung wird es eine VM mit einer konfigurierten Datenbank starten. Für test
und prod
Umgebungen wird automatisch eine Verbindung zu einer AWS RDS-Instanz mit einer oder mehreren AWS-AZs hergestellt.
Wenn Sie nicht explizit eine Datenbankverbindung zur Datenquelle von CloudCaptain
herstellen wollen, können Sie Umgebungsvariablen verwenden, die der erstellten VM übergeben werden.
BOXFUSE_DATABASE_URL
– database JDBC urlBOXFUSE_DATABASE_USER
– usernameBOXFUSE_DATABASE_PASSWORD
– password
Eine weitere nützliche Variable ist BOXFUSE_HOST_IP
. Sie steht für die IP-Adresse Ihres Host-Rechners. Damit können Sie eine Verbindung zu einer Datenbank herstellen, die auf Ihrem Rechner über LAN gehostet wird – es funktioniert also nur in einer dev
Umgebung. Wenn Sie „Database auto-provisioning“ nicht verwenden wollen, sollten Sie -db.type=none
Ausführungsbefehl hinzufügen.
Konfiguration abspielen
Since CloudCaptain runs Play application in production mode you will need to set Play’s application secret in application.conf. Next thing that needs to be set is allowed hosts filter
. Sie müssen Verbindungen von allen IPs zulassen. Er sollte wie folgt aussehen:
play.filters.hosts.allowed = ["."]
Gebäude Play Anwendung
Nach der Konfiguration ist es nun an der Zeit, Ihre Anwendung zu erstellen. Sie müssen cd
in das Hauptverzeichnis Ihrer Anwendung kopieren und ausführen:
sbt clean dist
Dieser Befehl entfernt frühere Build-Daten und erstellt ein .zip
Archiv mit Ihrer aktuellen Anwendungsversion. Es enthält auch alle Konfigurationsdateien.
Running and deploying application to AWS
Es ist an der Zeit, Ihre Anwendung in der dev
Umgebung auszuführen – lokal auf Ihrem Rechner. Sie müssen den unten aufgeführten Befehl aus dem Hauptverzeichnis Ihres Projekts ausführen.
boxfuse run -env=dev
Dieser Befehl verschmilzt Ihre gepackte Play-Anwendung mit CloudCaptains minimalem VM-Image und führt sie lokal aus. Wie bereits erwähnt, sollten Sie -db.type=none
zum obigen Befehl hinzufügen, wenn Sie „Database auto-provisioning“ nicht verwenden möchten.
Wenn Sie bereit sind, Ihre Anwendung in der prod
Umgebung von AWS bereitzustellen, müssen Sie sie nur noch ausführen:
boxfuse run -env=prod
Anwendungsaktualisierungen auf AWS
CloudCaptain unterstützt Blue/Green Deployment. Diese Methode zur Freigabe von Anwendungen ermöglicht Aktualisierungen ohne Ausfallzeiten. Es wird ein neuer Knoten erstellt, auf dem eine neue Version Ihrer Anwendung läuft und der gesamte Datenverkehr schrittweise dorthin verlagert wird.
Um Ihre Anwendung in der Produktion zu aktualisieren, müssen Sie nur die Versionsnummer der Anwendung in der Konfigurationsdatei erhöhen, sie mit demselben Befehl wie zuvor erstellen und ausführen:
boxfuse run -env=prod
Wichtiger Hinweis!
Stellen Sie sicher, dass Sie Ihre Anwendung mit der gleichen Java-Version ausführen, mit der Sie sie erstellt haben. CloudCaptain wird standardmäßig die neueste OpenJDK-Version verwenden. Sie können dies außer Kraft setzen, indem Sie -components.openjdk=x.x.x
zum boxfuse run
runcommand hinzufügen, wobei x.x.x
die OpenJDK-Version steht.