Contenu précédent [** Préférences réseau STEP1 ](https://qiita.com/tksh8/items/9a8e88a777a3a4ee7a09#step1-%E3%83%8D%E3%83%83%E3%83%88%E3%83% AF% E3% 83% BC% E3% 82% AF% E7% 92% B0% E5% A2% 83% E8% A8% AD% E5% AE% 9A) [ Paramètres STEP2 EC2 **] (https://qiita.com/tksh8/items/9a8e88a777a3a4ee7a09#step2-ec2%E3%81%AE%E8%A8%AD%E5%AE%9A)
Contenu cette fois [** Construction de l'environnement d'instance STEP3 EC2 ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step3-ec2%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89) [ STEP4 Link avec git, cloner l'application ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step4-git%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3) [ Paramètres de l'application STEP5 secret_key_base ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step5-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AEsecret_key_base%E3%81%AE%E8%A8%AD%E5%AE%9A) [ Paramètres STEP6 Unicorn ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step6-unicorn%E3%81%AE%E8%A8%AD%E5%AE%9A) [ Paramètres STEP7 Nginx ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step7-nginx%E3%81%AE%E8%A8%AD%E5%AE%9A) [ Migration STEP8 ] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step8-%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3) [ Confirmation du démarrage de STEP9 **] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step9-%E8%B5%B7%E5%8B%95%E7%A2%BA%E8%AA%8D)
Configurez ruby et d'autres environnements pour qu'ils fonctionnent dans l'instance EC2 créée.
Connectez-vous à AWS
[~]$ ssh test_key_rsa
Entrez ce qui suit
[testuser@ ~]$ sudo yum install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel ImageMagick ImageMagick-devel epel-release
Il vous sera demandé un mot de passe, alors entrez-le
Is this ok [y/d/N]: y
Parce que c'est dans
Entrez avec y
[testuser@ ~]$ sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
[testuser@ ~]$ sudo yum install mysql-devel mysql57 mysql57-server
[testuser@ ~]$ curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
[testuser@ ~]$ sudo yum -y install nodejs
Cela sera également confirmé, alors appuyez sur "y" → Entrée.
[testuser@ ~]$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
[testuser@ ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[testuser@ ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[testuser@ ~]$ source .bash_profile
-Vérifiez la version de rbenv installée
[testuser@ ~]$ rbenv --version
rbenv 1.1.2-4-g577f046
(#.bash_Profil de charge)
[testuser@ ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
(#ruby-installer build)
[testuser@ ~]$ rbenv rehash
-Vérifiez la version installable
[testuser@ ~]$ rbenv install -l
[testuser@ ~]$ rbenv install 2.5.1
[testuser@ ~]$ rbenv global 2.5.1
[testuser@ ~]$ rbenv rehash
-Vérifiez la version de Ruby installée
-Si la version ruby est affichée, elle réussit.
[testuser@ ~]$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Clonez l'application créée à partir de git et placez-la dans l'instance EC2
Générez un fichier de configuration lié à git appelé .gitconfig avec la commande vi
[testuser@ ~]$ vi .gitconfig
Appuyez sur "i" pour entrer en mode édition et ajoutez ce qui suit Veuillez entrer votre propre nom et email
[user]
name = your_name (#Mon nom enregistré dans git)
email = [email protected] (#Ma propre adresse e-mail lors de l'inscription avec git)
[alias](#C'est ton préféré)
a = add
b = branch
ch = checkout
st = status
[color](#coloration)
ui = true
[url "github:"]
InsteadOf = https://github.com/
InsteadOf = [email protected]:
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
Enregistrez le fichier lorsque vous avez terminé Je vais créer un répertoire pour placer l'application
[testuser@ ~]$ cd /
[testuser@ ~]$ sudo chown testuser var (#Rendre le propriétaire du dossier var testuser)
[testuser@ ~]$ cd var
[testuser@ var]$ sudo mkdir www
[testuser@ var]$ sudo chown testuser www
[testuser@ var]$ cd www
(#Même traitement que www)
[testuser@ www]$ sudo mkdir rails
[testuser@ www]$ sudo chown testuser rails
Tout d'abord, tapez la commande suivante
Créer la clé, le nom de la clé est "aws_git_rsa", le mot de passe est vide
[testuser@ www]$ cd ~
[testuser@ ~]$ chmod 700 .ssh
[testuser@ ~]$ cd .ssh
[testuser@ .ssh]$ ssh-keygen -t rsa
-----------------------------
Enter file in which to save the key ():
aws_git_rsa
(#Entrez le nom du fichier ici)
Enter passphrase (empty for no passphrase):
(#Entrez tel quel sans rien faire)
Enter same passphrase again:
(#Entrez tel quel sans rien faire)
[testuser@ .ssh]$ ls
(#「aws_git_rsa "et" aws "_git_rsa.Confirmez que "pub" a été généré)
[[email protected]]$ vi config
Appuyez sur "i" pour entrer en mode édition et ajoutez ce qui suit
Host github
Hostname github.com
User git
IdentityFile ~/.ssh/aws_git_rsa
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
Vérifiez le contenu de la clé. Copiez-le quelque part
[[email protected]]$ cat aws_git_rsa.pub
Accédez à GitHub à partir d'un navigateur et sélectionnez "Clés SSH et GPG" dans "Paramètres"
Cliquez sur "Nouvelle clé SSH", entrez "Nom de l'application --EC2" dans le titre, "Contenu de la clé créée précédemment" dans Clé et enregistrez-vous avec "Ajouter une clé SSH"
Revenez au terminal et modifiez les autorisations du fichier de paramètres
[[email protected]]$ chmod 600 config
Confirmez la connexion à GitHub. Oui pour les questions sur le chemin. Succès si le nom d'utilisateur Github apparaît
[[email protected]]$ ssh -T github
#Bonjour nom d'utilisateur Github! You've successfully authenticated, but GitHub does not provide shell access.
Si un tel message est renvoyé, la connexion est réussie.
Après l'enregistrement, il est temps de cloner
[testuser@ .ssh]$ cd /var/www/rails
L'URL qui suit git clone est Ceci est l'URL github de l'application que j'ai créée (ssh)
[testuser@ .rails]$ git clone [email protected]:~~~~~~~~~~~~
Veuillez exécuter la commande suivante pour confirmation
[testuser@ .rails]$ ls
S'il existe un dossier avec votre propre nom d'application, le clonage réussit.
Si le clonage réussit, modifiez le secret_key_base décrit dans le fichier rails config / secrets.yml.
[testuser@ .rails]$ cd ~
[testuser@ ~]$ rbenv exec gem install bundler
[testuser@ ~]$ rbenv rehash
[testuser@ ~]$ which bundler
# /usr/local/rbenv/shims/Succès si le bundler est sorti
[testuser@ .rails] cd /var/www/rails/nom de l'application
[testuser@nom de l'application]$ gem install rubygems-update -v '<3' && update_rubygems
[testuser@nom de l'application]$ bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include"
[testuser@nom de l'application]$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
[testuser@nom de l'application]$ bundle install --path vendor/bundle
[testuser@nom de l'application]$ bundle exec rake secret
Copiez la clé affichée
[testuser@nom de l'application]$ vi config/secrets.yml
Appuyez sur "i" pour entrer en mode édition et ajoutez ce qui suit
production:
secret_key_base: (Collez celui que vous avez copié précédemment)
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
(Serveur HTTP en rack qui fournit des applications Web Ruby dans un environnement UNIX (les applications Rails peuvent être exécutées sur le serveur d'applications))
[testuser@nom de l'application]$ gem install unicorn
Ajoutez ce qui suit à votre Gemfile
[testuser@nom de l'application]$ vi Gemfile
Gemfile
group :production, :staging do
gem 'unicorn', '5.4.1'
end
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
[testuser@nom de l'application]$ bundle install
[testuser@nom de l'application]$ vi config/unicorn.conf.rb
Créez config / unicorn.rb et modifiez le contenu comme suit
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 "#{app_path}/tmp/sockets/unicorn.sock"
#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
Appuyez sur "i" pour entrer en mode édition et ajoutez ce qui suit
gemfile:unicorn.conf.rb
# set lets
$worker = 2
$timeout = 30
$app_dir = "/var/www/rails/mumu" #Mon nom d'application
$listen = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir
$pid = File.expand_path 'tmp/pids/unicorn.pid', $app_dir
$std_log = File.expand_path 'log/unicorn.log', $app_dir
# set config
worker_processes $worker
working_directory $app_dir
stderr_path $std_log
stdout_path $std_log
timeout $timeout
listen $listen
pid $pid
# loading booster
preload_app true
# before starting processes
before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
Process.kill "QUIT", File.read(old_pid).to_i
rescue Errno::ENOENT, Errno::ESRCH
end
end
end
# after finishing processes
after_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
prochain Commentez ce qui suit
config/environments/production.rb
# config.assets.js_compressor = :uglifier
(Un des mêmes serveurs Web qu'apache, etc. Cependant, Nginx et Rack ne peuvent pas être connectés directement, donc Unicorn doit être pris en sandwich entre eux.)
[testuser@ ~]$ cd ~
[testuser@ ~]$ sudo yum install nginx
[testuser@ ~]$ cd /etc/nginx/conf.d/
[testuser@ conf.d]$ sudo vi test.conf #Renommez le fichier avec votre propre nom d'application
Appuyez sur "i" pour entrer en mode édition et ajoutez ce qui suit
upstream app_server {
#Paramètres de liaison avec Unicorn. Notez la réécriture du nom de l'application en votre propre nom d'application. Probablement discuter cette fois-space
server unix:/var/www/<Nom de l'application>/tmp/sockets/unicorn.sock;
}
# {}La partie entourée s'appelle un bloc. Peut définir le serveur
server {
#Numéro de port où ce programme accepte les connexions
listen 80;
#Demander une URL pour accepter la connexion Accès impossible avec une URL non écrite ici
server_name <Elastic IP>;
#Définissez la taille maximale des fichiers téléchargés depuis le client sur 2 giga. La valeur par défaut est de 1 méga, alors gardez-la grande
client_max_body_size 2g;
#Répertoire racine lors de la connexion
root /var/www/<Nom de l'application>/public;
#fichier des actifs(Fichiers CSS et JavaScript, etc.)Paramètres appliqués lors de l'accès
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
error_page 500 502 503 504 /500.html;
}
Les trois points suivants doivent être réécrits.
Veuillez changer la partie de <nom de l'application> sur la troisième ligne par la vôtre.
De la même manière, changez la pièce marquée
Appuyez sur "esc" pour terminer et Enregistrer sous ": wq"
Faites ce qui suit
[testuser@ conf.d]$ cd /var/lib
[testuser@ lib]$ sudo chmod -R 775 nginx
[testuser@ ~]$ sudo yum install mysql-devel
-Installez MySQL Server
[testuser@ ~]$ sudo yum install mysql-server
-Paramètres de démarrage de MySQL
[testuser@ ~]$ sudo chkconfig mysqld on
-Vous pouvez vérifier si le paramètre de démarrage a réussi avec la commande chkconfig.
-Si ce qui suit s'affiche, le réglage est réussi.
[testuser@ ~]$ chkconfig
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-Démarrez MySQL.
[testuser@ ~]$ sudo vi /etc/my.cnf
Ajoutez ce qui suit
character-set-server=utf8
[testuser@ ~]$ sudo /etc/init.d/mysqld start
-Ou la même chose ci-dessous.
[testuser@ ~]$ sudo service mysqld start
-Connectez-vous en tant que root et créez un nouvel utilisateur.
[testuser@ ~]$ mysql -u root
mysql> GRANT ALL PRIVILEGES ON [Nom de la base de données].* TO [Le nom de votre application]@localhost IDENTIFIED BY '[Mot de passe à définir]';
Vérifiez que le code de caractère de MySQL peut être latin1 par défaut.
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
- character_set_système de fichiers et caractère_sets_C'est correct si autre que dir est utf8.
-Sinon, unifiez à utf8 et redémarrez.
mysql> set character_set_database = utf8;
mysql> set character_set_server = utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
[testuser@ ~]$ cd /var/www/rails/nom de l'application
[testuser@nom de l'application]$ vi config/database.yml
----------------------------
production:
<<: *default
database: mumu_production
username: root #Changer ici pour root
password: #Laissez ce champ vide
----------------------------
[testuser@nom de l'application]$ sudo service mysqld start #Démarrez mysqld
[testuser@nom de l'application]$ ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
[testuser@nom de l'application]$ bundle exec rake db:create RAILS_ENV=production
[testuser@nom de l'application]$ bundle exec rake db:migrate RAILS_ENV=production
Succès si la migration est effectuée
[** Veuillez passer à la confirmation de démarrage de STEP9 **] (https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d#step9-%E8%B5%B7%E5%8B%95%E7%A2%BA%E8%AA%8D)
Créez des sous-réseaux supplémentaires et spécifiez les sous-réseaux qui appartiennent à la zone de disponibilité dans les deux ・ Ap-nord-est-1a ・ Ap-nord-est-1c
en haut Rechercher "RDS"
Cliquez sur Groupe sous-marin> [Créer un groupe sous-marin DB]
"Nom de l'application" dans le nom_DB-Subnet-Group」
"DB Subnet Group for App Name" dans la description
"VPC pour le nom de l'application" dans l'ID VPC
alors
Cliquez sur "Ajouter tous les sous-réseaux associés à ce VPC"
[Créer]presse
Depuis le tableau de bord Cliquez sur [Créer une base de données] de RDS
-Facile à créer
-MySQL
-Niveau gratuit
-"Nom de l'application" dans l'identifiant de l'instance de base de données-mysql」
-L'utilisateur principal et le mot de passe principal sont des valeurs arbitraires
"Créer" avec
La base de données sera créée dans quelques minutes
Veuillez vous référer ici
https://qiita.com/nago3/items/1cd6daa5ad6377e325ed
Ajouter et enregistrer des informations de base de données pour la production en tant que variable d'environnement Rails
Réécrivez database.yml comme ci-dessous
database.yml
production:
adapter: mysql2
encoding: utf8
reconnect: false
pool: 5
host: <%= ENV['DB_HOST'] %>
username: <%= ENV['DB_USERNAME'] %>
password: "<%= ENV['DB_PASSWORD'] %>"
database: <%= ENV['DB_NAME'] %>
Modifier bash_profile
$ sudo vi ~/.bash_profile
Ajouter et enregistrer des informations de base de données pour la production en tant que variable d'environnement Rails
bash_profile
export DB_HOST="Point de terminaison RDS"
export DB_USERNAME="Nom d'utilisateur RDS"
export DB_PASSWORD="Mot de passe RDS"
export DB_NAME="nom de l'application_production"
[testuser@nom de l'application]$ source ~/.bash_profile
Vérifiez s'il est correctement réglé
[testuser@nom de l'application]$ echo $DB_NAME
[testuser@nom de l'application]$ echo $DB_USERNAME
[testuser@nom de l'application]$ echo $DB_PASSWORD
[testuser@nom de l'application]$ echo $DB_HOSTNAME
[testuser@nom de l'application]$ echo $DB_PORT
Démarrez mysqld
[testuser@nom de l'application]$ sudo service mysqld start
Effectuer la migration
[testuser@nom de l'application]$ rake db:create RAILS_ENV=production
[testuser@nom de l'application]$ bundle exec rake db:migrate RAILS_ENV=production
SSH dans EC2 et précompilez votre application Rails
[testuser@nom de l'application]$ bundle exec rake assets:precompile RAILS_ENV=production
Redémarrez Nginx
[testuser@nom de l'application]$ sudo service nginx restart
Lancez Unicorn
[testuser@nom de l'application]bundle exec unicorn_rails -c config/unicorn.conf.rb -E production -D
Ou
$ bundle exec unicorn_rails -E production -c config/unicorn.rb -D
Confirmez qu'Unicon démarre
[testuser@nom de l'application]$ ps -ef | grep unicorn | grep -v grep
#OK si la liste des processus est affichée en 3 étapes
#Commencer la licorne
#Confirmation de démarrage
$ ps aux | grep unicorn
#Vérifiez le journal si la licorne ne peut pas démarrer
$ tailf log/unicorn.log
$ sudo tail -f /var/log/nginx/access.log
$ sudo tail -f /var/log/nginx/error.log
$ sudo tail -f /var/www/vue_sample/log/unicorn.log
#Démarrer nginx
$ sudo service nginx start
#Confirmation de démarrage
$ ps aux | grep nginx
Accès en frappant l'IP depuis le navigateur * Si vous ne connaissez pas l'adresse IP, vous pouvez la vérifier à partir de la description de l'instance EC2
Accéder à 52.64. ~~~~~~~~~ (votre propre adresse IP) Puis
http://IPアドレス/ Succès si l'application Rails fonctionne
Il sera affiché si cela fonctionne! !!
Recommended Posts