Bereitstellen einer Rails-Anwendung in Elastic Beanstalk - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen einer Rails-Anwendung in Elastic Beanstalk

Rails ist ein Open-Source-Framework model-view-controller (MVC) für Ruby. Dieses Tutorial führt Sie durch den Prozess zum Generieren einer Rails-Anwendung und zum Bereitstellen dieser Anwendung in einer AWS Elastic Beanstalk Umgebung.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in Erste Schritte mit Elastic Beanstalk die erste Elastic-Beanstalk-Umgebung.

Um die Verfahren in diesem Leitfaden zu befolgen, benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol ($) und dem Namen des aktuellen Verzeichnisses angezeigt.

~/eb-project$ this is a command this is output

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Sie können unter Windows 10 das Windows-Subsystem für Linux installieren und eine Windows-Version von Ubuntu und Bash verwenden.

Das Rails-Framework 6.1.4.1 hat die folgenden Abhängigkeiten. Stellen Sie sicher, dass Sie alle installiert haben.

Starten einer Elastic Beanstalk-Umgebung

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform Ruby und übernehmen Sie die Standardeinstellungen und den Beispielcode.

So starten Sie eine Umgebung (Konsole)
  1. Öffnen Sie die Elastic Beanstalk-Konsole mit diesem vorkonfigurierten Link: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced

  2. Wählen Sie unter Platform (Plattform) die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

  3. Wählen Sie unter Application code (Anwendungscode) die Option Sample application (Beispielanwendung) aus.

  4. Klicken Sie auf Review and launch (Überprüfen und starten).

  5. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie Create App (App erstellen) aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:

  • EC2 instance (EC2-Instance) – eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die so konfiguriert ist, dass Web-Apps auf der von Ihnen ausgewählten Plattform ausgeführt werden.

    Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverse-Proxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.

  • Instance security group (Instance-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Mit dieser Ressource kann HTTP-Datenverkehr vom Load Balancer die EC2-Instance mit Ihrer Web-App erreichen. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.

  • Load balancer (Load Balancer)– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.

  • Load balancer security group (Load Balancer-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.

  • Auto Scaling group (Auto Scaling-Gruppe) – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.

  • Amazon S3-Bucket – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.

  • Amazon- CloudWatch Alarme – Zwei CloudWatch Alarme, die die Last der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.

  • -AWS CloudFormation Stack – Elastic Beanstalk verwendet AWS CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der AWS CloudFormation -Konsole anzeigen können.

  • Domainname – Ein Domainname, der auf Ihre Web-App in der Form subdomain.region.elasticbeanstalk.com weiterleitet.

    Anmerkung

    Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain elasticbeanstalk.com in der Public Suffix List (PSL) registriert. Aus Sicherheitsgründen empfehlen wir Ihnen, Cookies mit einem __Host--Präfix zu verwenden, falls Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic-Beanstalk-Anwendungen einrichten müssen. Diese Vorgehensweise hilft Ihnen dabei, Ihre Domain vor CSRF-Versuchen (Cross-Site Request Forgery Attempts, Anforderungsfälschung zwischen Websites) zu schützen. Weitere Informationen finden Sie auf der Set-Cookie-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

Anmerkung

Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter Verwenden von Elastic Beanstalk mit Amazon S3.

Installieren von Rails und Generieren einer Website

Installieren Sie Rails und seine Abhängigkeiten mit dem Befehl gem.

~$ gem install rails Fetching: concurrent-ruby-1.1.9.gem Successfully installed concurrent-ruby-1.1.9 Fetching: rack-2.2.3.gem Successfully installed rack-2.2.3 ...

Testen Sie Ihre Rails-Installation.

~$ rails --version Rails 6.1.4.1

Verwenden Sie rails new mit dem Namen der Anwendung, um ein neues Rails-Projekt zu erstellen.

~$ rails new ~/eb-rails

Rails erstellt ein Verzeichnis mit dem angegebenen Namen, generiert alle Dateien, die für eine lokale Ausführung des Beispielprojekts benötigt werden, und führt anschließend Bundler aus, um alle Abhängigkeiten (Gems) zu installieren, die in der Gemfile-Datei des Projekts definiert sind.

Anmerkung

Dieser Prozess installiert die neueste Puma-Version für das Projekt. Diese Version kann sich von der Version unterscheiden, die Elastic Beanstalk in der Ruby-Plattformversion Ihrer Umgebung bereitstellt. Weitere Informationen zu Puma-Versionen von Elastic Beanstalk finden Sie unter Ruby-Plattformverlauf im Leitfaden fürAWS Elastic Beanstalk -Plattformen. Weitere Informationen über die neueste Pumaversion finden Sie unter der Puma.io-Website. Wenn es eine Nichtübereinstimmung zwischen den beiden Puma-Versionen gibt, verwenden Sie eine der folgenden Optionen:

  • Verwenden Sie die Puma-Version, die mit dem vorherigen rails new-Befehl installiert wurde. In diesem Fall müssen Sie ein Procfile für die Plattform hinzufügen, um Ihre eigene bereitgestellte Puma-Serverversion zu verwenden. Weitere Informationen finden Sie unter Konfigurieren der Anwendung mit einer Procfile-Datei.

  • Aktualisieren Sie die Puma-Version so, dass sie mit der Version der Ruby-Platform Ihrer Umgebung übereinstimmt. Ändern Sie hierzu die Pumaversion im Gemfile, die sich im Stammverzeichnis des Projekts befindet. Führen Sie dann bundle update aus. Weitere Informationen finden Sie auf der Seite Bundle-Update auf der Bundler.io-Website.

Testen Sie die Rails-Installation, indem Sie das Standardprojekt lokal ausführen.

~$ cd eb-rails ~/eb-rails$ rails server => Booting Puma => Rails 6.1.4.1 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma version: 5.5.2 (ruby 3.0.2-p107) ("Zawgyi") * Min threads: 5 * Max threads: 5 * Environment: development * PID: 77857 * Listening on http://127.0.0.1:3000 * Listening on http://[::1]:3000 Use Ctrl-C to stop ...

Öffnen Sie http://localhost:3000 in einem Webbrowser, um das Standardprojekt in Aktion zu sehen.


        Die Rails-Standard-Entwicklungsseite.

Diese Seite ist nur im Entwicklungsmodus sichtbar. Fügen Sie Inhalte auf der Titelseite der Anwendung hinzu, um die Produktionsbereitstellung in Elastic Beanstalk zu unterstützen. Erstellen Sie mit rails generate einen Controller, eine Route und eine Ansicht für die Willkommensseite.

~/eb-rails$ rails generate controller WelcomePage welcome create app/controllers/welcome_page_controller.rb route get 'welcome_page/welcome' invoke erb create app/views/welcome_page create app/views/welcome_page/welcome.html.erb invoke test_unit create test/controllers/welcome_page_controller_test.rb invoke helper create app/helpers/welcome_page_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/welcome_page.coffee invoke scss create app/assets/stylesheets/welcome_page.scss.

Dies gibt Ihnen alles, was Sie brauchen, um auf die Seite unter /welcome_page/welcome zuzugreifen. Bevor Sie die Änderungen veröffentlichen, sollten Sie die Inhalte der Ansicht ändern und eine Route hinzufügen, damit diese Seite als Top-Level-Objekt der Website angezeigt wird.

Ändern Sie die Inhalte in app/views/welcome_page/welcome.html.erb mit einem Texteditor. In diesem Beispiel werden die Inhalte der bestehenden Datei einfach mit cat überschrieben.

Beispiel app/views/welcome_page/welcome.html.erb
<h1>Welcome!</h1> <p>This is the front page of my first Rails application on Elastic Beanstalk.</p>

Abschließend fügen Sie die folgende Route zu config/routes.rb hinzu:

Beispiel config/routes.rb
Rails.application.routes.draw do get 'welcome_page/welcome' root 'welcome_page#welcome'

Damit wird Rails angewiesen, an den Website-Stamm gerichtete Anforderungen an die Willkommen-Methode des Controllers der Willkommenseite zu leiten, von der die Inhalte in der Willkommen-Ansicht dargestellt werden (welcome.html.erb).

Damit Elastic Beanstalk die Anwendung erfolgreich auf der Ruby-Plattform bereitstellen kann, aktualisieren Sie Gemfile.lock. Einige Abhängigkeiten von Gemfile.lock können plattformspezifisch sein. Deshalb müssen Sie platform ruby zu Gemfile.lock hinzufügen, damit alle erforderlichen Abhängigkeiten mit der Bereitstellung installiert werden.

~/eb-rails$ bundle lock --add-platform ruby Fetching gem metadata from https://rubygems.org/............ Resolving dependencies... Writing lockfile to /Users/janedoe/EBDPT/RubyApps/eb-rails-doc-app/Gemfile.lock

Konfigurieren von Rails-Einstellungen

Konfigurieren Sie die Rails-Umgebungseigenschaften mit der Elastic Beanstalk-Konsole. Setzen Sie die SECRET_KEY_BASE-Umgebungseigenschaft auf eine Zeichenfolge mit bis zu 256 alphanumerischen Zeichen.

Rails verwendet diese Eigenschaft, um Schlüssel zu erstellen. Aus diesem Grund sollten Sie sie geheimhalten und nicht als Klartext in der Quellsteuerung speichern. Übergeben Sie sie stattdessen an Rails-Code in Ihrer Umgebung über eine Umgebungseigenschaft.

So konfigurieren Sie Umgebungseigenschaften in der Elastic Beanstalk-Konsole
  1. Öffnen Sie die Elastic Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus AWS-Region.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Konfigurationskategorie Updates, monitoring and logging  (Updates, Überwachung und Protokolle) die Option Edit (Bearbeiten) aus.

  5. Scrollen Sie nach unten zu den Umgebungseigenschaften.

  6. Wählen Sie Umgebungseigenschaft hinzufügen aus.

  7. Geben Sie die Eigenschaftspaare Name und Wert ein.

  8. Wenn Sie weitere Variablen hinzufügen müssen, wiederholen Sie Schritt 6 und Schritt 7.

  9. Wählen Sie unten auf der Seite die Option Apply (Anwenden) aus, um die Änderungen zu speichern.

Jetzt können Sie die Website in Ihrer Umgebung bereitstellen.

Bereitstellen der Anwendung

Erstellen Sie ein Quell-Bundle mit den Dateien, die von Rails erstellt wurden. Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen rails-default.zip.

~/eb-rails$ zip ../rails-default.zip -r * .[^.]*

Laden Sie das Quell-Bundle nach Elastic Beanstalk hoch, um Rails in der Umgebung bereitzustellen.

So stellen Sie ein Quell-Bundle bereit
  1. Öffnen Sie die Elastic Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus AWS-Region.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie auf der Umgebungsübersichtsseite die Option Upload and deploy (Hochladen und bereitstellen).

  4. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

  5. Wählen Sie Deploy (Bereitstellen) aus.

  6. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

Bereinigen

Wenn Sie nicht mehr mit Elastic Beanstalk arbeiten, können Sie Ihre Umgebung beenden. Elastic Beanstalk beendet alle AWS Ressourcen, die Ihrer Umgebung zugeordnet sind, z. B. Amazon EC2-Instances, Datenbank-Instances, Load Balancer, Sicherheitsgruppen und Alarme.

So beenden Sie die Elastic Beanstalk-Umgebung
  1. Öffnen Sie die Elastic Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus AWS-Region.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.

  3. Klicken Sie auf Actions (Aktionen) und dann auf Terminate Environment (Umgebung beenden).

  4. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Mit Elastic Beanstalk können Sie ganz einfach und jederzeit eine neue Umgebung für Ihre Anwendung erstellen.

Nächste Schritte

Weitere Informationen über Rails finden Sie unter rubyonrails.org.

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die Elastic Beanstalk Command Line Interface (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk-Umgebungen über die Befehlszeile.

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, konfigurieren Sie einen benutzerdefinierten Domainnamen für die Umgebung und aktivieren dann HTTPS für sichere Verbindungen.