Rails App Server: AWS OpsWorks Stacks-Ebene - AWS OpsWorks

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.

Rails App Server: AWS OpsWorks Stacks-Ebene

Wichtig

Der AWS OpsWorks Stacks Dienst hat am 26. Mai 2024 das Ende seiner Lebensdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an das AWS Support Team auf AWS re:POST oder über den AWS Premium-Support.

Anmerkung

Diese Ebene steht nur für Linux-basierte Stacks zur Verfügung.

Die Rails App Server-Schicht ist eine AWS OpsWorks Stacks-Schicht, die einen Entwurf für Instanzen bereitstellt, die als Rails-Anwendungsserver fungieren.

Installation: AWS OpsWorks Stacks verwendet das Paketinstallationsprogramm der Instanz, um die Serverpakete an ihren Standardspeicherorten zu installieren. Weitere Informationen zur Apache/Passenger-Installation finden Sie unter Phusion Passenger. Weitere Informationen zur Protokollierung finden Sie unter Log Files. Weitere Informationen zur Installation von Nginx finden Sie unter Unicorn.

Auf der Seite Add Layer (Ebene hinzufügen) stehen folgende Konfigurationsoptionen zur Verfügung, die alle optional sind.

Ruby-Version

Die von Ihren Anwendungen verwendete Ruby-Version. Der Standardwert ist 2.3.

Sie können auch Ihre bevorzugte Ruby-Version durch Überschreiben des [:opsworks][:ruby_version]-Attributs angeben.

Anmerkung

AWS OpsWorks Stacks installiert ein separates Ruby-Paket, das von Rezepten und dem Instanzagenten verwendet wird. Weitere Informationen finden Sie unter Ruby-Versionen.

Rails-Stack

Der standardmäßige Rails-Stack lautet Apache2 mit Phusion Passenger. Sie können auch Nginx mit Unicorn verwenden.

Anmerkung

Wenn Sie Ngnix und Unicorn verwenden, müssen Sie das Nginx- und Unicorn-Gem zur Gem-Datei Ihrer Anwendung hinzufügen, wie im folgenden Beispiel dargestellt:

source 'https://rubygems.org' gem 'rails', '3.2.15' ... # Use unicorn as the app server gem 'unicorn' ...
Passenger-Version

Wenn Sie Apache2/Passenger angegeben haben, müssen Sie die Passenger-Version definieren. Der Standardwert ist 5.0.28.

RubyGems-Version

Die standardmäßige Rubygems-Version ist 2.5.1.

Bundler installieren und verwalten

Hier können Sie wählen, ob der Bundler installiert werden soll. Der Standardwert ist Yes.

Bundler-Version

Die standardmäßige Bundler-Version ist 1.12.5.

Benutzerdefinierte Sicherheitsgruppen

Diese Einstellung wird angezeigt, wenn Sie Ihren Layern nicht automatisch eine integrierte AWS OpsWorks Stacks-Sicherheitsgruppe zuordnen möchten. Sie müssen die mit der Ebene zu verknüpfende Sicherheitsgruppe angeben. Weitere Informationen finden Sie unter Erstellen eines neuen Stacks.

Elastic Load Balancer

Sie können den Instances des Layers einen Elastic Load Balancing Load Balancer zuordnen.

Mit einer benutzerdefinierten JSON- oder Attributdatei können einige Konfigurationseinstellungen geändert werden. Weitere Informationen finden Sie unter Überschreiben der Attribute. Eine Liste der überschreibbaren Apache-, Nginx-, Phusion Passenger- und Unicorn-Attribute finden Sie unter Integrierte Rezeptbuchattribute.

Wichtig

Wenn Ihre Ruby on Rails-Anwendung SSL verwendet, empfehlen wir, SSLv3 zu deaktivieren, um die in CVE-2014-3566 beschriebenen Schwachstellen zu vermeiden. Weitere Informationen finden Sie unter Deaktivieren von SSLv3 für Rails-Server.

Deaktivieren von SSLv3 für Rails-Server

Wenn Sie SSLv3 für Rails-Server deaktivieren möchten, aktualisieren Sie die Ruby Version (Ruby-Version)-Einstellung der Ebene auf 2.1 oder höher, sodass Ruby 2.1.4 oder höher als die von den Anwendungen verwendete Version installiert wird.

  • Aktualisieren Sie die Ruby Version--Einstellung der Ebene auf 2.1 oder höher.

  • Aktualisieren Sie die Konfigurationsdatei für Ihren Rails-Stack folgendermaßen.

Apache mit Phusion Passenger

Aktualisieren Sie die SSLProtocol-Einstellung in der ssl.conf-Datei des Apache-Servers, wie in Deaktivieren von SSLv3 für Apache-Server beschrieben.

Nginx mit Unicorn

Fügen Sie eine explizite ssl_protocols-Richtlinie zur nginx.conf-Datei des Nginx-Servers hinzu. Um SSLv3 zu deaktivieren, überschreiben Sie die nginx.conf.erb Vorlagendatei des integrierten Nginx-Kochbuchs, die die Setup-Rezepte der Rails App Server-Schicht zum Erstellen verwendennginx.conf, und fügen Sie die folgende Direktive hinzu:

ssl_protocols TLSv1.2;

Weitere Informationen zum Konfigurieren von nginx.conf finden Sie unter Configuring HTTPS servers. Weitere Informationen zum Überschreiben einer integrierten Vorlage finden Sie unter Verwenden von benutzerdefinierten Vorlagen.

Verbinden mit einer Datenbank

Wenn Sie eine App bereitstellen, erstellt AWS OpsWorks Stacks eine neue database.yml Datei mit Informationen aus den Attributen der App. deploy Wenn Sie eine MySQL- oder Amazon RDS-Instance an die App anhängen, fügt AWS OpsWorks Stacks die Verbindungsinformationen zu den deploy Attributen hinzu, sodass sie database.yml automatisch die richtigen Verbindungsdaten enthalten.

Wenn eine App keine angehängte Datenbank hat, fügt AWS OpsWorks Stacks den deploy Attributen standardmäßig keine Verbindungsinformationen hinzu und erstellt auch keine. database.yml Wenn Sie eine andere Datenbank verwenden möchten, können Sie mit einem benutzerdefinierten JSON-Objekt Verbindungsdaten enthaltende Datenbank-Attribute zu den deploy-Attributen der Anwendung hinzufügen. Die Attribute befinden sich alle unter["deploy"]["appshortname"]["database"], wobei appshortname der Kurzname der App ist, den AWS OpsWorks Stacks aus dem App-Namen generiert. Die in der benutzerdefinierten JSON-Datei angegebenen Werte überschreiben sämtliche Standardeinstellungen. Weitere Informationen finden Sie unter Hinzufügen von Apps.

AWS OpsWorks Stacks integriert die folgenden [:...][:database]Attributwerte in. database.yml Die erforderlichen Attribute hängen von der jeweiligen Datenbank ab, aber Sie müssen über ein host Attribut verfügen, da AWS OpsWorks Stacks sonst nichts erstellt. database.yml

  • [:adapter] (String)— Der Datenbankadapter, wie z. mysql

  • [:database](String) — Der Datenbankname.

  • [:encoding](String) — Die Kodierung, auf die normalerweise eingestellt istutf8.

  • [:host](String) — Die Host-URL, z. railsexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com B.

  • [:reconnect](Boolean) — Gibt an, ob die Anwendung erneut eine Verbindung herstellen soll, wenn die Verbindung nicht mehr besteht.

  • [:password](String) — Das Datenbankkennwort.

  • [:port] (Zahl). — Die Portnummer der Datenbank. Mit diesem Attribut können Sie die Standard-Portnummer überschreiben, der vom Adapter vorgegeben wird.

  • [:username](String) — Der Datenbankbenutzername.

Das folgende Beispiel zeigt ein benutzerdefiniertes JSON-Objekt für eine Anwendung mit dem Kurznamen myapp.

{ "deploy" : { "myapp" : { "database" : { "adapter" : "adapter", "database" : "databasename", "host" : "host", "password" : "password", "port" : portnumber "reconnect" : true/false, "username" : "username" } } } }

Weitere Informationen zur Definition eines benutzerdefinierten JSON-Objekts finden Sie unter Nutzen eines benutzerdefinierten JSON-Objekts. Um die Vorlage zur Erstellung von database.yml (database.yml.erb) zu sehen, gehen Sie zu dem integrierten Rezeptbuch-Repository.

Bereitstellen von Ruby on Rails-Anwendungen

Sie können Ruby on Rails-Anwendungen aus einem unterstützten Repository bereitstellen. Im folgenden Beispiel wird erläutert, wie eine beispielhafte Ruby on Rails-Anwendung für einen Server bereitgestellt wird, auf dem ein Apache/Passenger-Rails-Stack ausgeführt wird. Der Beispielcode ist in einem öffentlichen GitHub Repository gespeichert, aber das grundlegende Verfahren ist dasselbe für die anderen unterstützten Repositorys. Weitere Informationen zum Erstellen und Bereitstellen von Anwendungen finden Sie unter Apps. Den Code des Beispiels, der ausführliche Kommentare enthält, finden Sie unter https://github.com/awslabs/ opsworks-demo-rails-photo -share-app.

Um eine Ruby on Rails-App aus einem Repository bereitzustellen GitHub
  1. Erstellen Sie einen Stack mit einer Rails-App Server-Ebene mit Apache/Passenger als Rails-Stack, fügen Sie der Ebene eine 24/7-Instanz hinzu und starten Sie sie.

  2. Wenn die Instance online ist, fügen Sie eine Anwendung zum Stack hinzu und geben Sie folgenden Einstellungen an:

    • Name – Beliebiger Name, im Beispiel wird PhotoPoll verwendet.

      AWS OpsWorks Stacks verwendet diesen Namen zu Anzeigezwecken und generiert einen Kurznamen für den internen Gebrauch und zur Identifizierung der App in der Stackkonfiguration und den Bereitstellungsattributen. Der PhotoPoll Kurzname lautet beispielsweise photopoll.

    • App typeRuby on Rails.

    • Rails environment – Die verfügbaren Umgebungen werden von der Anwendung bestimmt.

      Die Beispiel-Anwendung hat drei Umgebungen: development, test, und production. In diesem Beispiel geben Sie für die Umgebung development an. Im Beispiel-Code sind weitere Beschreibungen für jede Umgebung enthalten.

    • Repository-Typ — Jeder der unterstützten Repository-Typen. Geben Sie Git für dieses Beispiel an.

    • Repository URL – Repository, aus dem der Code bereitzustellen ist.

      In diesem Beispiel geben Sie für die URL git://github.com/awslabs/opsworks-demo-rails-photo-share-app an.

    Verwenden Sie die Standardwerte für die übrigen Einstellungen und klicken Sie anschließend auf Add App (App hinzufügen), um die Anwendung zu erstellen.

  3. Stellen Sie die App auf der Rails App Server-Instanz bereit.

  4. Wenn die Bereitstellung abgeschlossen ist, gehen Sie zur Seite Instanzen und klicken Sie auf die öffentliche IP-Adresse der Rails App Server-Instanz. Sie sollten Folgendes sehen: