Nous procéderons sur la base du contenu de la première partie. Veuillez créer un référentiel GitHub à l'avance. Cette fois, nous déploierons une application Rails utilisant EC2.
(Partie 1) https://qiita.com/kotobuki562/items/92827bcf99d89b350445 (Partie 2-Construction de la base de données-) https://qiita.com/kotobuki562/items/92827bcf99d89b350445
Commençons par enregistrer la clé SSH pour cloner le référentiel GitHub dans EC2. Si vous n'enregistrez pas la clé SSH, EC2 ne pourra pas se connecter à GitHub.
Exécutez la commande suivante dans EC2. Lorsque vous l'exécutez, diverses entrées peuvent vous être demandées. Dans ce cas, appuyez sur "Entrée". En cas de succès, quelque chose comme "RSA 4096" sera affiché.
[ec2-user@ip-111-11-11-111 ~]$ ssh-keygen -t rsa -b 4096
Jetons un coup d'œil au contenu de la clé SSH avec la commande cat. Exécutez la commande suivante.
[ec2-user@ip-111-11-11-111 ~]$ cat ~/.ssh/id_rsa.pub
Ensuite, allez sur GirHub et enregistrez votre clé SSH Accédez à partir de l'URL ci-dessous et copiez la clé SSH confirmée avec la commande cat plus tôt. Donnez au titre de la clé SSH sur le côté GitHub le nom de votre choix. https://github.com/settings/keys
Après avoir enregistré la clé, exécutez la commande suivante. Après l'exécution, il vous sera demandé oui / non, veuillez donc laver oui. Après cela, l'accès est terminé.
[ec2-user@ip-111-11-11-111 ~]$ ssh -T [email protected]
Cette fois, nous allons créer un serveur d'application utilisant "unicorn". Si vous n'avez pas encore installé la gemme licorne, installez-la d'abord.
Cette fois, nous allons construire dans un environnement de production.
.Gemfile
group :production do
gem unicorn
end
Ensuite, créez unicorn.rb dans config et écrivez-le comme suit. Je vais le décrire comme un échantillon, mais vous pouvez le définir vous-même.
config/unicorn.rb
app_path = File.expand_path('../../', __FILE__)
worker_processes 1
working_directory app_path
pid "#{app_path}/tmp/pids/unicorn.pid"
listen 3000
stderr_path "#{app_path}/log/unicorn.stderr.log"
stdout_path "#{app_path}/log/unicorn.stdout.log"
timeout 60
preload_app true
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true
check_client_connection false
run_once = true
before_fork do |server, worker|
defined?(ActiveRecord::Base) &&
ActiveRecord::Base.connection.disconnect!
if run_once
run_once = false
end
old_pid = "#{server.config[:pid]}.oldbin"
if File.exist?(old_pid) && server.pid != old_pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH => e
logger.error e
end
end
end
after_fork do |_server, _worker|
defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
end
Ensuite, créons un répertoire pour le clonage à partir de GitHub. Après la création du répertoire, l'autorité est transmise à l'utilisateur EC2, donc
[ec2-user@ip-111-11-11-111 ~]$ sudo mkdir /var/www/
[ec2-user@ip-111-11-11-111 ~]$ sudo chown ec2-user /var/www/
Clonez GitHub dans le répertoire que vous avez créé. Accédez au répertoire et exécutez la commande git clone. Enfin, appliquons le gem avec l'installation groupée.
[ec2-user@ip-111-11-11-111 ~]$ cd /var/www/
[ec2-user@ip-111-11-11-111 www ~]$git clone collez l'URL copiée
[ec2-user@ip-111-11-11-111 app ~]$ bundle install
Ensuite, définissez les variables d'environnement. Exécutez la commande suivante. Faites-en une copie à sa sortie.
[ec2-user@ip-111-11-11-111 <Nom du référentiel> ~]$ rake secret
Ensuite, nous décrirons en fait les variables d'environnement. Exécutons la commande suivante et décrivons-la.
[ec2-user@ip-111-11-11-111 ~]$ sudo vim /etc/environment
Définissez les variables d'environnement de base de données définies dans le chapitre précédent. Décrivons les deux points suivants
DATABASE_PASSWORD='Mot de passe de l'utilisateur racine de la base de données'
SECRET_KEY_BASE='Le secret créé plus tôt_key_base'
Vous êtes maintenant prêt.
Revenons à EC2 sur le Web et ouvrons le port. Libérez le numéro de port 3000 de unicorn.rb décrit précédemment. La méthode de réglage est décrite dans la première partie, veuillez donc vérifier ici. Veuillez définir comme indiqué dans l'image ci-dessous.
Tout d'abord, modifiez le fichier database.yml local. Veuillez modifier comme suit. Ne modifiez pas la base de données.
config/database.yml
production:
<<: *default
database: app_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
Revenons à EC2 dans le terminal et faisons un git pull.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>] git pull origin master
Créons et migrons une base de données dans EC2. Vous êtes maintenant prêt.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ rails db:create RAILS_ENV=production
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ rails db:migrate RAILS_ENV=production
Réfléchissons maintenant au répertoire des actifs avec les actifs: orecompile. Enfin, démarrez le serveur avec le bundle exec unicorn_rails.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ rails assets:precompile RAILS_ENV=production
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
Exécutez la commande suivante pour confirmer que le démarrage a été confirmé.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ ps aux | grep unicorn
#Le processus suivant est sorti.
ec2-user 5879 0.0 13.0 515244 131640 ?Sl 09 novembre 0:02 unicorn_rails master -c config/unicorn.rb -E production -D
ec2-user 5887 0.0 12.6 525216 127600 ?Sl 09 novembre 0:02 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
ec2-user 15917 0.0 0.0 119436 976 pts/0 S+ 03:26 0:00 grep --color=auto unicorn
Pour l'arrêter, écrivez la commande suivante.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ kill 5879 #ID de processus d'arrêt
Après avoir tué le processus, exécutez la commande suivante et vérifiez si elle est réellement reflétée dans le navigateur.
Vous pouvez y accéder à l'adresse http: //
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
Enfin, si une erreur se produit après le déploiement, exécutez la commande suivante et consultez le journal des erreurs. Accédons à l'emplacement de stockage du journal des erreurs décrit précédemment dans unicorn.rb.
[ec2-user@ip-111-11-11-111 <Nom du référentiel>]$ less log/unicorn.stderr.log
Recommended Posts