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.
Änderung der IAM-Berechtigung Umgebungskonstruktion EB-Bereitstellung
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.)
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.
Damit ist die Erstellung von VPC, Subsystem und Sicherheitsgruppe abgeschlossen.
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.
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.
#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
eb deploy
Ist Prost auf gute Arbeit. Damit ist die Bereitstellung abgeschlossen.
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.
Ich werde einige Dinge hinzufügen, die nach der Bereitstellung zu berühren sind, und wie man mit Fehlern umgeht.
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)
Ü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.
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