Bereitstellung auf Ruby on Rails Elastic Beanstalk (EB-Bereitstellung)

Überblick

Bereitstellen einer mit Ruby on Rails erstellten Anwendung Verwenden Sie Elastic Beanstalk (EB), um eine Umgebung in kürzester Zeit zu erstellen. Es ist unterteilt in IAM-Berechtigungsänderung, Umgebungskonstruktion und EB-Bereitstellung. Bitte beachten Sie, dass wir uns auf eine schnelle Bereitstellung konzentrieren werden, wenn Sie also eine strikte Verwaltung benötigen.

Inhaltsverzeichnis

Änderung der IAM-Berechtigung Umgebungskonstruktion EB-Bereitstellung

In EB bereitstellen

  1. Nehmen Sie zunächst die Grundeinstellungen vor. eb init (eb init -i zum Zurücksetzen)

myapp


Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
・ ・ ・
22) af-south-1 : Africa (Cape Town)
(default is 3): 9 #Wählen Sie Tokio
Enter Application Name
(default is "myapp"): 
Application myapp has been created.

It appears you are using Ruby. Is this correct?
(Y/n): 
Select a platform branch.
1) Ruby 2.7 running on 64bit Amazon Linux 2
2) Ruby 2.6 running on 64bit Amazon Linux 2
3) Ruby 2.5 running on 64bit Amazon Linux 2
4) Puma with Ruby 2.6 running on 64bit Amazon Linux
5) Puma with Ruby 2.5 running on 64bit Amazon Linux
6) Puma with Ruby 2.4 running on 64bit Amazon Linux
7) Passenger with Ruby 2.6 running on 64bit Amazon Linux
8) Passenger with Ruby 2.5 running on 64bit Amazon Linux
9) Passenger with Ruby 2.4 running on 64bit Amazon Linux
・ ・ ・
17) Passenger with Ruby 2.0 running on 64bit Amazon Linux (Deprecated)
18) Passenger with Ruby 1.9.3 running on 64bit Amazon Linux (Deprecated)
(default is 1): 4 
#Da es sich um Cloud9 handelt, handelt es sich um Amazon Linux. Wichtig sind jedoch Puma und Ruby 2.Wählen Sie 6 (diese Version)

Do you wish to continue with CodeCommit? (y/N) (default is n): <OK mit Enter>
Do you want to set up SSH for your instances?
(Y/n): <OK mit Enter>

Select a keypair.
1) cloudformation
2) [ Create new KeyPair ]
(default is 1): <Sie können hierfür ein Schlüsselpaar erstellen oder einen bereits vorhandenen Schlüssel verwenden.>

Die Grundeinstellung ist jetzt OK. Lassen Sie uns um EC2 erstellen, das für die Bereitstellung erforderlich ist. (Es wäre hilfreich, wenn Sie auch hier etwas Gutes tun könnten.)

  1. Erstellen Sie die erforderliche VPC, das Subsystem und die Sicherheitsgruppe 2-1. VPC-Erstellung Wählen Sie VPC aus dem AWS-Konsolenmenü. Klicken Sie auf VPC erstellen. Geben Sie Folgendes ein / wählen Sie es aus Namensschild: myapp-vpc (beliebiger Name) IPv4-CIDR-Block: 10.0.0.0/16 (beliebiges Netzwerk angeben) Klicken Sie auf Erstellen.

2-2. Erstellen eines Subnetzes Wählen Sie im linken Menü die Option Sub-Subnetz. Erstellen Sie das erste Subnetz. Klicken Sie auf die Schaltfläche Subnetz erstellen. Geben Sie wie folgt ein. Namensschild: myapp-subnet-1a (beliebiger Subnetzname) VPC: Wählen Sie myapp-vpc. Verfügbarkeitszone: ap-nordost-1a (wählen Sie eine aus den Regionen aus, in denen Sie die VPC erstellen) IPv4-CIDR-Block: 10.0.0.0/24 (angegeben durch den VPC-CIDR-Bereich für jede AZ) Erstellen Sie ein zweites Subnetz. Klicken Sie erneut auf die Schaltfläche U-Boot erstellen. Geben Sie wie folgt ein. Namensschild: myapp-subnet-1c (beliebiger Subnetzname) VPC: Wählen Sie myapp-vpc. Verfügbarkeitszone: ap-northeast-1c (wählen Sie eine aus den Regionen aus, in denen Sie die VPC erstellen) IPv4-CIDR-Block: 10.0.1.0/24 (angegeben durch den VPC-CIDR-Bereich für jede AZ)

2-3. Erstellen eines Internet-Gateways (IGW) Wählen Sie aus dem linken Menü. Klicken Sie auf die Schaltfläche IGW erstellen. Namensschild: myapp-gateway Klicken Sie auf die Schaltfläche Erstellen. Wählen Sie das Gateway myapp-gateway aus der Liste aus und wählen Sie in der Aktion die Option An VPC anhängen. VPC: Wählen Sie myapp-vpc Klicken Sie auf Anhängen. Klicken Sie im linken Menü auf die Routentabelle. Wählen Sie die mit myapp-vpc verknüpfte Routentabelle anhand der VPC-ID aus. Wählen Sie auf den Registerkarten unten auf der Seite Routen aus und klicken Sie auf Routen bearbeiten. Klicken Sie auf Route hinzufügen und geben Sie ein Destination: 0.0.0.0/0 Wählen Sie Internet-Gateway unter Ziel und dann myapp-gateway. Klicken Sie zum Speichern auf Routen speichern.

2-4. Erstellen einer Sicherheitsgruppe (erstellen Sie zwei für zwei Regionen und eine für RDS) Wählen Sie im linken Menü eine Sicherheitsgruppe aus Klicken Sie auf Sicherheitsgruppe erstellen und geben Sie Folgendes ein: Security group name: myapp-security-group Beschreibung: (Alles ist in Ordnung) VPC: Wählen Sie myapp-vpc. Klicken Sie auf Erstellen, um eine Sicherheitsgruppe zu erstellen. Wählen Sie die soeben erstellte Sicherheitsgruppe aus der Liste aus und klicken Sie auf der Registerkarte am unteren Bildschirmrand auf Eingehende Regeln. Klicken Sie auf Regeln bearbeiten. Klicken Sie auf Regel hinzufügen und geben Sie Folgendes ein: Typ: HTTP Beschreibung: HTTP Klicken Sie auf Regeln speichern, um die Regeln zu speichern. Wiederholen Sie diesen Vorgang erneut, um einen weiteren zu erstellen.

Die Sicherheitsgruppe für RDS ermöglicht den Zugriff von zwei der gerade erstellten Sicherheitsgruppen. Zulassen, dass eingehende Regeln von Sicherheitsgruppen eingehen (Zugriff). Lassen Sie uns die beiden zuvor genannten Sicherheitsgruppen auswählen und hinzufügen. 3.jpg

Damit ist die Erstellung von VPC, Subsystem und Sicherheitsgruppe abgeschlossen.

  1. In EB bereitstellen Es ist ein bisschen mehr. Lassen Sie uns bereitstellen. Kehren Sie zum Terminal zurück und konfigurieren Sie die Bereitstellungseinstellungen (einschließlich RDS-Erstellung und ALB-Einstellungen) mit dem folgenden Befehl.
eb create <Name der EB-Umgebung> --instance_type <EC2-Spezifikationen> --database.engine <DB-Typ> --database.username <DBusername> --elb-type application --vpc
#Beispiel) eb Schienen erstellen-app --instance_type t2.medium --database.engine mysql --database.username admin --elb-type application --vpc
Enter an RDS DB master password: 
Retype password to confirm: 

Enter the VPC ID: <ID der erstellten VPC>
Do you want to associate a public IP address? (Y/n): <Enter>
Enter a comma-separated list of Amazon EC2 subnets: <IDs der beiden von Ihnen erstellten Subnetze>
Enter a comma-separated list of Amazon ELB subnets: <IDs der beiden von Ihnen erstellten Subnetze>
Do you want the load balancer to be public? (Select no for internal) (Y/n): 
Enter a comma-separated list of Amazon VPC security groups:<IDs der beiden von Ihnen erstellten Sicherheitsgruppen>

Dadurch wird die Bereitstellungsumgebung auf dem EB-Konsolenbildschirm erstellt. Fügen Sie außerdem die Einstellungen des erstellten RDS hinzu. (Die einzustellenden Parameter können auf der RDS-Konsole → jedem RDS-Bildschirm bestätigt werden.)

eb setenv RDS_DB_NAME=◎◎ RDS_USERNAME=◎◎ RDS_PASSWORD=◎◎ RDS_HOSTNAME=◎◎ RDS_PORT=◎◎
Beispiel) eb setenv RDS_DB_NAME=myapp RDS_USERNAME=admin RDS_PASSWORD=123456 RDS_HOSTNAME=database-1.cfwrsdfe64.ap-northeast-1.rds.amazonaws.com RDS_PORT=3306

Lassen Sie es uns bereitstellen.

eb deploy

Überprüfen wir nun die URL in der EB-Konsole.

4.jpg

An unhandled lowlevel error occurred. The application logs may have details. Wurde angezeigt. Dies liegt daran, dass Ruby keinen geheimen Schlüssel für die Produktionsumgebung erstellt oder festgelegt hat. Lassen Sie uns hier die Ruby-Produktionsumgebung einrichten.

  1. Festlegen von Ruby-Umgebungsvariablen und geheimen Schlüsseln für die Ausgabe von EB
#Geheime Schlüsselausgabe
rails credential:edit
<Geheimer Schlüssel>
#Reflektieren Sie die Einstellungen in EB
eb setenv SECRET_KEY_BASE=<Geheimer Schlüssel>

Weil eine CSS-Vorkompilierung in der Produktionsumgebung erforderlich ist ...

python


RAILS_ENV=production bundle exec rake assets:precompile

myapp/config/environments/production.rb


config.assets.compile = true
  1. Stellen Sie erneut bereit
eb deploy

Ist Prost auf gute Arbeit. Damit ist die Bereitstellung abgeschlossen.

Zusammenfassung

Dieses Mal habe ich AWS Elastic Beanstalk verwendet, um eine Ruby-Anwendung bereitzustellen. Ich fand es ein sehr guter Service, auf einfache Weise eine redundante Konfiguration mit Ressourcen wie ALB und Autoscalling erstellen und alle Ressourcen in der elastischen Beanstalk-Umgebung verwalten zu können. Andererseits fand ich es unpraktisch, dass RDS nicht standardmäßig erstellt wurde und S3 beim Löschen der Umgebung (aufgrund der Bucket-Richtlinie) erhalten blieb.

Andere

Ich werde einige Dinge hinzufügen, die nach der Bereitstellung zu berühren sind, und wie man mit Fehlern umgeht.

  1. Standardmäßig wird die Datenbank jedes Mal erstellt und migriert. Elastische Bohnenstange> Umgebung> myapp-env> Einstellungen RAILS_SKIP_ASSET_COMPILATION(false → true) RAILS_SKIP_MIGRATIONS(false → true)

  2. Über den Fehler Wenn ein Fehler auftritt, verwenden Sie den folgenden Befehl, um den aktuellen Fehlerinhalt zu ermitteln. Ergreifen Sie daher Maßnahmen. eb logs

Für andere eb-Befehle klicken Sie hier (https://qiita.com/yoshito410kam/items/712e96be87477aafdc89). War hilfreich.

Referenzartikel

Ich habe auf den folgenden Artikel verwiesen. Bis Sie Ihre Rails-Anwendung für Elastic Beanstalk bereitstellen https://qiita.com/hiroeorz@github/items/c9dcdb9c648d7e8eae7f#rails%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%BD%9C%E6%88%90%E3%81%A8%E8%A8%AD%E5%AE%9A%E7%AD%89

Installation durch Angabe der Rails-Version https://qiita.com/tanakayo/items/7b85261924eca1a5a3d6

Setzen Sie secret_token in der Produktionsumgebung (Rails). https://qiita.com/takusemba/items/2ad25d3d0a007757c194

Worauf ich mich beim Starten von Rails 5 in der Produktion eingelassen habe https://qiita.com/qqhann/items/7cd01f4b5cff4a31e053

aws EB CLI offizielle ref https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb3-cmd-commands.html

Zusammenfassung der in Elastic Beanstalk verwendeten Befehle https://qiita.com/yoshito410kam/items/712e96be87477aafdc89

Recommended Posts

Bereitstellung auf Ruby on Rails Elastic Beanstalk (EB-Bereitstellung)
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
Bereitstellung auf Ruby on Rails Elastic Beanstalk (Änderung der IAM-Berechtigung)
Bereitstellen für Heroku [Ruby on Rails] Anfänger
Verwendung von Ruby on Rails
So stellen Sie Bootstrap auf Rails bereit
Stellen Sie Rails on Docker für Heroku bereit
Vorbereiten der Einführung von jQuery in Ruby on Rails
[Ruby on Rails] Verwendung von redirect_to
[Ruby on Rails] Schaltfläche, um nach oben zurückzukehren
Stellen Sie RAILS auf EC2 bereit
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
Stellen Sie die Spring Boot-Anwendung für Elastic Beanstalk bereit
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Zusammenfassung der Methoden zum Aktualisieren mehrerer Spalten [Ruby on Rails]
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
[Ruby on Rails] So ändern Sie den Spaltennamen
[Von Zeit zu Zeit aktualisiert] Ruby on Rails Praktische Methode
[Ruby on Rails] Ändern Sie die URL-ID in den Spaltennamen
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
[Ruby on Rails] Von der MySQL-Konstruktion zum Datenbankwechsel
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Wie man mit Heroku einsetzt
Ruby on Rails lernen Rekord-2020.10.07 ②
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
<Punktinstallation> Einführung in Ruby on Rails5 Vergleich des Quellcodes
[Ruby on Rails] Eliminierung von Fat Controller-First, Logik zum Modell-
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
[Ruby on Rails] Spaltenbeschränkungen beim Speichern in der Datenbank (4 Vertreter)
Wenden Sie CSS auf eine bestimmte Ansicht in Ruby on Rails an
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
So stellen Sie Laravel für CentOS 7 bereit
Ruby on Rails-Variablen, konstante Zusammenfassung