AWS signifie Amazon Web Servises et est un service de serveur cloud fourni par Amazon. Nous publierons ce que nous avons appris afin d'améliorer notre compréhension d'AWS.
On suppose que l'instance a été créée.
① Installez Unicorn dans votre propre application
Ajoutez la description suivante au Gemfile dans l'application.
Gemfile
group :production do
gem 'unicorn', '5.4.1'
end
Terminal
% bundle install
② Paramètres de la licorne
Créez unicorn.rb dans la configuration de votre application. Ensuite, définissez les paramètres suivants.
config/unicorn.rb
#Placez le répertoire où le code de l'application sur le serveur est installé dans une variable
app_path = File.expand_path('../../', __FILE__)
#Déterminer les performances du serveur d'applications
worker_processes 1
#Spécifiez le répertoire dans lequel l'application est installée
working_directory app_path
#Spécifiez l'emplacement des fichiers requis pour démarrer Unicorn
pid "#{app_path}/tmp/pids/unicorn.pid"
#Spécifiez le numéro de port
listen 3000
#Spécifiez un fichier pour consigner les erreurs
stderr_path "#{app_path}/log/unicorn.stderr.log"
#Spécifiez un fichier pour enregistrer les journaux normaux
stdout_path "#{app_path}/log/unicorn.stdout.log"
#Définir le temps maximum d'attente pour la réponse de l'application Rails
timeout 60
#Ce qui suit est un paramètre appliqué, donc l'explication est omise.
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 # prevent from firing again
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
Poussez-le vers le référentiel distant et réfléchissez-le.
③ Installez l'application sur l'instance
Terminal
Connectez-vous à l'instance
% ssh -i nom de la paire de clés.pem ec2-user@<IP publique>
Dans l'instance/var/www/Créer un annuaire
[exemple]$ sudo mkdir /var/www/
Permissions Ec2 sur le répertoire www créé-Accordé à l'utilisateur
[exemple]$ sudo chown ec2-user /var/www/
Aller au répertoire www
[exemple]$ cd /var/www/
#Cloner une application depuis GitHub
[Instance www]$ git clone <URL HTTPS obtenue à partir du bouton Code de l'application que vous souhaitez déployer sur GitHub>
④ Installez Gem
Terminal
Déplacer vers le répertoire de base par exemple
[Instance www]$ cd ~
Paramètres de fichier d'échange
[exemple]$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
[exemple]$ sudo chmod 600 /swapfile1
[exemple]$ sudo mkswap /swapfile1
[exemple]$ sudo swapon /swapfile1
[exemple]$ sudo sh - -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'
Terminal
Déplacer vers le répertoire de l'application dans l'instance
[exemple]$ cd /var/www/<Nom de l'application>
Installer le bundler(La version du bundler est "commande" dans le terminal+Créez un autre onglet avec "T" et "bundler" dans l'onglet nouvellement créé-Vous pouvez vérifier en exécutant "v")
[exemple<Nom de l'application>]$ gem install bundler -v <version du bundler>
Installer Gem
[exemple<Nom de l'application>]$ bundle install
⑤ Définition des variables d'environnement
Pour des raisons de sécurité, les mots de passe de base de données, etc. ne sont pas téléchargés sur GitHub. Ces informations sont définies à l'aide de "variables d'environnement".
Une chaîne utilisée pour crypter un cookie. Requis pour exécuter des applications Rails en production.
Terminal
[exemple<Nom de l'application>]$ rake secret
=> secret_key_La chaîne de caractères de base s'affiche
Accédez à votre répertoire personnel dans l'instance
[exemple<Nom de l'application>]$ cd ~
/etc/Modifier l'environnement
[exemple]$ sudo vim /etc/environment
Tapez "i" pour accéder au mode de saisie
Entrez le mot de passe de l'utilisateur root de la base de données configurée
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'
* Si vous utilisez AWS S3, saisissez ce qui suit (saisissez la valeur faisant référence au fichier CSV téléchargé lors de la configuration de S3)
AWS_ACCESS_KEY_ID='Copiez ici la valeur d'ID de clé d'accès du fichier CSV'
AWS_SECRET_ACCESS_KEY='Copiez ici la valeur de la clé d'accès secrète du fichier CSV'
* Si l'authentification de base est installée, entrez ce qui suit (entrez le nom d'utilisateur et le mot de passe définis)
BASIC_AUTH_USER='Définir le nom d'utilisateur'
BASIC_AUTH_PASSWORD='Définir le mot de passe'
「:Enregistrer sous "wq"
Déconnectez-vous de l'instance et reconnectez-vous pour que les variables d'environnement prennent effet
[exemple]$ exit
% ssh -i nom de la paire de clés.pem ec2-user@<IP publique>
Vérification des variables d'environnement
[Instance re]$ env
=>OK lorsque les paramètres définis ci-dessus sont affichés.
⑥ Libérez le port vers le groupe de sécurité
Dans AWS Management Console, ajoutez «Port 3000» et «Source 0.0.0.0/0» de «TCP personnalisé» à la règle entrante du groupe de sécurité de l'instance.
⑦ Modifier les paramètres de l'application Rails
Les variables d'environnement définies dans l'instance ci-dessus doivent également être définies dans l'application.
:config/database.yml
production:
<<: *default
database:(* Ne modifiez pas ici)
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
Après avoir modifié les paramètres, appuyez sur GitHub.
Appliquez ensuite les modifications de l'application à l'instance.
Terminal
Déplacer vers le répertoire de l'application dans l'instance
[exemple]$ cd /var/www/<Nom de l'application>
Refléter les modifications des paramètres d'application
[exemple<Nom de l'application>]$ git pull origin master
⑧ Créer une base de données (si un serveur de base de données existe dans l'instance)
Veuillez vous référer ici pour savoir comment créer un serveur de base de données https://qiita.com/daisuke30x/items/7501d724a0727ad9f2e4
Terminal
Créer une base de données
[exemple<Nom de l'application>]$ rails db:create RAILS_ENV=production
[exemple<Nom de l'application>]$ rails db:migrate RAILS_ENV=production
Démarrer la base de données
[exemple<Nom de l'application>] $ sudo systemctl start maradb
RAILS_ENV = production est une option pour spécifier l'environnement de production
⑨ Lancer l'application
Terminal
[exemple<Nom de l'application>]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
Compilez les fichiers d'actifs de l'application (CSS, JavaScript, images, etc.). Il s'agit d'une tâche nécessaire dans un environnement de production.
Terminal
[exemple<Nom de l'application>]$ rails assets:precompile RAILS_ENV=production
Terminal
Vérifiez le processus
[exemple<Nom de l'application>]$ ps aux | grep unicorn
=>Le deuxième chiffre à partir de la gauche est l'ID de processus
Arrêtez le processus
[exemple<Nom de l'application>]$ kill <unicorn_ID de processus du maître de rails>
Lancez à nouveau l'application
[exemple<Nom de l'application>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
"RAILS_SERVE_STATIC_FILES = 1" est le rôle qui spécifie que le fichier d'actif compilé peut être trouvé.
** Entrez "http: //
Nous espérons que cet article aidera les débutants à évaluer.