Déployer une application créée avec Ruby on Rails Utilisez Elastic Beanstalk (EB) pour créer un environnement dans les plus brefs délais. Il est divisé en changement d'autorité IAM, construction d'environnement et déploiement EB. Veuillez noter que nous nous concentrerons sur un déploiement rapide, donc si vous avez besoin d'une gestion stricte.
Changement d'autorité IAM Construction de l'environnement Déploiement EB
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 #Sélectionnez Tokyo
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
#Puisqu'il s'agit de cloud9, c'est Amazon Linux, mais ce qui est important c'est Puma et Ruby 2.Sélectionnez 6 (cette version)
Do you wish to continue with CodeCommit? (y/N) (default is n): <OK avec Enter>
Do you want to set up SSH for your instances?
(Y/n): <OK avec Enter>
Select a keypair.
1) cloudformation
2) [ Create new KeyPair ]
(default is 1): <Vous êtes libre de créer une paire de clés pour cela ou d'utiliser une clé préexistante.>
Le réglage initial est maintenant OK. Créons autour d'EC2 requis pour le déploiement. (Ce serait utile si vous pouviez faire quelque chose de bien ici aussi.)
2-2. Création d'un sous-réseau Sélectionnez Sous-sous-réseau dans le menu de gauche. Créez le premier sous-réseau. Cliquez sur le bouton Créer un sous-réseau. Entrez comme suit. Balise de nom: myapp-subnet-1a (tout nom de sous-réseau) VPC: sélectionnez myapp-vpc. Zone de disponibilité: ap-nord-est-1a (choisissez-en une parmi les régions où vous créez le VPC) Bloc d'adresse CIDR IPv4: 10.0.0.0/24 (spécifié par la plage CIDR VPC pour chaque AZ) Créez un deuxième sous-réseau. Cliquez à nouveau sur le bouton Créer un sous-marin. Entrez comme suit. Balise de nom: myapp-subnet-1c (tout nom de sous-réseau) VPC: sélectionnez myapp-vpc. Zone de disponibilité: ap-nord-est-1c (choisissez-en une parmi les régions où vous créez le VPC) Bloc d'adresse CIDR IPv4: 10.0.1.0/24 (spécifié par la plage CIDR VPC pour chaque AZ)
2-3. Création d'une passerelle Internet (IGW) Sélectionnez dans le menu de gauche. Cliquez sur le bouton Créer IGW. Étiquette de nom: myapp-gateway Cliquez sur le bouton Créer. Sélectionnez la passerelle myapp-gateway dans la liste et sélectionnez Attacher au VPC dans l'action. VPC: sélectionnez myapp-vpc Cliquez sur Joindre. Cliquez sur la table de routage dans le menu de gauche. Sélectionnez la table de routage liée à myapp-vpc en vous référant à l'ID de VPC. Sélectionnez Routes dans les onglets en bas de la page et cliquez sur Modifier les routes. Cliquez sur Ajouter un itinéraire et entrez Destination: 0.0.0.0/0 Sélectionnez Internet Gateway à partir de la cible, puis sélectionnez myapp-gateway. Cliquez sur Enregistrer les itinéraires pour enregistrer.
2-4. Création d'un groupe de sécurité (créez-en deux pour deux régions et un pour RDS) Sélectionnez un groupe de sécurité dans le menu de gauche Cliquez sur Créer un groupe de sécurité et entrez: Security group name: myapp-security-group Description: (Tout va bien) VPC: sélectionnez myapp-vpc. Cliquez sur Créer pour créer un groupe de sécurité. Sélectionnez le groupe de sécurité que vous venez de créer dans la liste et cliquez sur Règles entrantes dans l'onglet en bas de l'écran. Cliquez sur Modifier les règles. Cliquez sur Ajouter une règle et entrez: Type: HTTP Description: HTTP Cliquez sur Enregistrer les règles pour enregistrer les règles. Répétez ceci pour en créer un autre.
Le groupe de sécurité pour RDS autorisera l'accès à partir de deux des groupes de sécurité que vous venez de créer. Autoriser les règles entrantes à entrer (accès) à partir des groupes de sécurité. Sélectionnons et ajoutons les deux groupes de sécurité mentionnés précédemment.
Ceci termine la création du VPC, du sous-système et du groupe de sécurité.
eb create <Nom de l'environnement EB> --instance_type <Spécifications EC2> --database.engine <Type de base de données> --database.username <DBusername> --elb-type application --vpc
#Exemple) eb create rails-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 du VPC créé>
Do you want to associate a public IP address? (Y/n): <Enter>
Enter a comma-separated list of Amazon EC2 subnets: <ID des deux sous-réseaux que vous avez créés>
Enter a comma-separated list of Amazon ELB subnets: <ID des deux sous-réseaux que vous avez créés>
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:<ID des deux groupes de sécurité que vous avez créés>
Cela commencera à créer l'environnement de déploiement sur l'écran de la console EB. De plus, ajoutez les paramètres du RDS créé. (Les paramètres à régler peuvent être confirmés sur la console RDS → chaque écran RDS.)
eb setenv RDS_DB_NAME=◎◎ RDS_USERNAME=◎◎ RDS_PASSWORD=◎◎ RDS_HOSTNAME=◎◎ RDS_PORT=◎◎
Exemple) 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
Déployons-le.
eb deploy
Maintenant, vérifions l'URL dans la console EB.
An unhandled lowlevel error occurred. The application logs may have details. A été affiché. En effet, Ruby n'a pas créé ni défini de clé secrète pour l'environnement de production. Alors, configurons l'environnement de production Ruby ici.
#Sortie de clé secrète
rails credential:edit
<Clef secrète>
#Refléter les paramètres dans EB
eb setenv SECRET_KEY_BASE=<Clef secrète>
Parce que la précompilation CSS dans l'environnement de production est requise ...
python
RAILS_ENV=production bundle exec rake assets:precompile
myapp/config/environments/production.rb
config.assets.compile = true
eb deploy
Vive le bon travail. Ceci termine le déploiement.
Cette fois, j'ai utilisé AWS Elastic Beanstalk pour déployer une application Ruby. J'ai senti que c'était un très bon service de pouvoir créer facilement une configuration redondante comprenant des ressources telles que ALB et Autoscalling, et de pouvoir gérer toutes les ressources dans l'environnement élastique beanstalk. D'un autre côté, j'ai trouvé peu pratique que RDS ne soit pas créé par défaut et que S3 soit resté lorsque l'environnement a été supprimé (en raison de la politique de compartiment).
J'ajouterai quelques éléments à toucher après le déploiement et comment gérer les erreurs.
Par défaut, la base de données est créée et migrée à chaque fois. Elastic Beanstalk> Environnement> myapp-env> Paramètres RAILS_SKIP_ASSET_COMPILATION(false → true) RAILS_SKIP_MIGRATIONS(false → true)
À propos de l'erreur Si une erreur se produit, utilisez la commande suivante pour connaître le contenu actuel de l'erreur, alors agissez. eb logs
Pour les autres commandes eb, cliquez ici (https://qiita.com/yoshito410kam/items/712e96be87477aafdc89) A été utile.
J'ai fait référence à l'article suivant. Jusqu'à ce que vous déployez votre application Rails sur Elastic Beanstalk 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
Comment installer en spécifiant la version de Rails https://qiita.com/tanakayo/items/7b85261924eca1a5a3d6
Définir secret_token dans l'environnement de production (rails) https://qiita.com/takusemba/items/2ad25d3d0a007757c194
Ce que je suis entré en démarrant Rails 5 en production https://qiita.com/qqhann/items/7cd01f4b5cff4a31e053
aws EB CLI ref officiel https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb3-cmd-commands.html
Résumé des commandes utilisées dans Elastic Beanstalk https://qiita.com/yoshito410kam/items/712e96be87477aafdc89
Recommended Posts