Rails App Server AWS OpsWorks Ebene stapelt - 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 Ebene stapelt

Wichtig

Das Tool AWS OpsWorks Stacks Der 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 den AWS Support Team ein AWS Re:post oder durch 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-Ebene, die einen Blueprint für Instanzen bereitstellt, die als Rails-Anwendungsserver fungieren.

Installation (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 sich dafür entschieden haben, nicht automatisch ein integriertes Objekt zuzuordnen AWS OpsWorks Kombiniert die Sicherheitsgruppe mit Ihren Ebenen. 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 einen Elastic Load Balancing Load Balancer an die Instances des Layers anhängen.

Sie können einige Konfigurationseinstellungen ändern, indem Sie eine benutzerdefinierte Datei JSON oder eine Datei mit benutzerdefinierten Attributen verwenden. 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 dies verwendetSSL, empfehlen wir Ihnen, diese nach Möglichkeit zu deaktivierenSSLv3, um die in CVE-2014-3566 beschriebenen Sicherheitslücken zu beheben. Weitere Informationen finden Sie unter Deaktivierung SSLv3 für Rails-Server.

Deaktivierung SSLv3 für Rails-Server

Um sie SSLv3 für Rails-Server zu deaktivieren, aktualisieren Sie die Ruby-Versionseinstellung des Layers auf 2.1 oder höher, wodurch Ruby 2.1.4 oder höher als die Version installiert wird, die Anwendungen verwenden.

  • 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 Deaktivierung 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 sie zu deaktivierenSSLv3, ü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 zur Konfiguration finden Sie unter Server konfigurierennginx.conf. HTTPS Weitere Informationen zum Überschreiben einer integrierten Vorlage finden Sie unter Verwenden von benutzerdefinierten Vorlagen.

Verbinden mit einer Datenbank

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

Wenn eine App keine angehängte Datenbank hat, wird standardmäßig AWS OpsWorks Stacks fügt den deploy Attributen keine Verbindungsinformationen hinzu und erstellt database.yml auch keine. Wenn Sie eine andere Datenbank verwenden möchten, können Sie Benutzerdefiniert verwenden, JSON um den Attributen der App zusammen mit den Verbindungsinformationen deploy Datenbankattribute hinzuzufügen. Die Attribute befinden sich alle unter["deploy"]["appshortname"]["database"], wo appshortname ist der Kurzname der App, welcher AWS OpsWorks Stacks wird aus dem Namen der App generiert. Die Werte, die Sie unter Benutzerdefiniert angeben, JSON überschreiben alle Standardeinstellungen. Weitere Informationen finden Sie unter Hinzufügen von Apps.

AWS OpsWorks Stacks integriert die folgenden [:...][:database]Attributwerte indatabase.yml. Die erforderlichen Attribute hängen von der jeweiligen Datenbank ab, aber Sie müssen über ein host Attribut verfügen oder AWS OpsWorks Stapel werden nicht erstelltdatabase.yml.

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

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

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

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

  • [:reconnect](Boolean) — 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 Benutzerdefiniert JSON für eine App, deren Kurzname myapp ist.

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

Informationen zur Angabe von Benutzerdefiniert finden Sie JSON unterBenutzerdefiniert verwenden JSON. 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 wird 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 — Das Repository, aus dem der Code bereitgestellt werden soll.

      Stellen Sie in diesem Beispiel den Wert URL auf eingit://github.com/awslabs/opsworks-demo-rails-photo-share-app.

    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:

Congratulatory message for deploying first app with AWS OpsWorks, with stylized logo.