その1から続いています
16:GithubとSSHを接続するために鍵を作成
※EC2内で行います。(sshコマンドで接続してからだよ)
cd ~/.ssh
ssh-keygen -t rsa
例としてrsa_portfolioで作成
17:設定ファイルを作成
vim config
#以下を記述してセーブ
ここから==========================
Host github
Hostname github.com
User git
IdentityFile ~/.ssh/rsa_portfolio
ここまで==========================
18:公開鍵を登録する
#公開鍵をコピーして控えておく一番うしろの部分はコピーしなくて良い
cat rsa_portfolio.pub
#Githubで公開鍵を登録
①GitHubにアクセスして自分のアイコンからSettingsをクリック
②SSH and GPG keysをクリック
③SSHkeyを登録する(rsa_portfolio.pub)
19:GitHubとSSH接続する
chmod 600 /home/newuser/.ssh
ssh -T github
#エラーで接続できなかった時に試します(接続できたらやらなくていいいです)
chmod 744 config
20:GitHubからクローンしてbundlerをインストールします
GitHubにてデプロイしたい自分のリポジトリのCode→SSHからコピーして
git clone git@github.com:newuser/アプリ名.git
gem install bundler -v '2.0.2'
21:gemをインストールします
cd アプリ名/
bundle install --path vendor/bundle
#エラーが出た場合バージョンを合わせる
Gemfile.lockの最下段bの BUNDLED WITH のバージョンと合わせる(例:1.16.6)
#ディレクトリは〜で行う
cd ~
gem install bundler -v '1.16.6'
bundle install --path vendor/bundle
#エラーでrmagikがインストール出来ないときのコマンド
sudo yum -y install ImageMagick
sudo yum -y install ImageMagick-devel
bundle install --path vendor/bundle
yarn install
22:nginxをインストールする
sudo amazon-linux-extras install nginx1
#インストールできたか確認
nginx -v
23:アプリ名.confの設定(Nginx)
sudo vim /etc/nginx/nginx.conf
#以下をコピーして貼り付けます
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 500;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/xml text/css
text/comma-separated-values
text/javascript application/x-javascript
application/atom+xml; }
24:nginxの設定をする
cd /etc/nginx/conf.d/
sudo vim アプリ名.conf
#以下をすべてコピーして貼り付けます
# log directory
error_log /var/www/LifeHack-Tools/log/nginx.error.log; #自分のアプリケーション名に変更
access_log /var/www/LifeHack-Tools/log/nginx.access.log; #自分のアプリケーション名に変更
# max body size
client_max_body_size 4G;
upstream app_server {
# for UNIX domain socket setups
server unix://var/www/LifeHack-Tools/tmp/sockets/puma.sock fail_timeout=0; #自分のアプリケーション名に変更
}
server {
listen 80;
server_name suzutuki-portfolio.com; #自分のElasticIP
# nginx so increasing this is generally safe...
keepalive_timeout 5;
# path for static files
root /var/www/LifeHack-Tools/public; #自分のアプリケーション名に変更
# page cache loading
try_files $uri/index.html $uri.html $uri @app;
location @app {
# HTTP headers
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;
}
# Rails error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /var/www/LifeHack-Tools/public; #自分のアプリケーション名に変更
}
}
25:Nginxの再起動
#Nginxの再起動
sudo nginx -s reload
cd /var/www/アプリ名/
git pull origin master
26:pumaの設定をする
#pumaディレクトリがないときはmkdir /var/www/アプリ名/config/pumaで作成する
cd /var/www/アプリ名/config/puma/
sudo vim production.rb
#ここからコピーだよ↓
# bind "unix://#{Rails.root.join('tmp/sockets/puma.sock')}"だとpumactlコマンドで読み込まないため絶対パスで指定
root_dir = '/var/www/アプリ名'
max_threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)
min_threads_count = ENV.fetch('RAILS_MIN_THREADS', max_threads_count)
threads min_threads_count, max_threads_count
worker_timeout 60
bind "unix://#{root_dir}/tmp/sockets/puma.sock"
environment 'production'
pidfile File.expand_path('tmp/pids/server.pid')
stdout_redirect File.expand_path('log/puma_access.log'), File.expand_path('log/puma_error.log'), true
# workerの数は適宜変更する。指定しない場合はsingle modeとなるが、指定した場合はcluster modeとなる。
plugin :tmp_restart
27:pumaの起動
cd /var/www/アプリ名
git pull origin master
bundle exec rails s -e production
28:エンドポイントの確認
まずはAWSを開き、RDSのメニューからデータベースを選択して
エンドポイントをコピーします。
29:Credentialの設定
cd /var/www/アプリ名/config
touch master.key
chmod 600 master.key
vim master.key
#ローカルにあるmaster.keyの中身をコピーして貼り付け
# 自分で作成したアプリのconfigにmaster.keyがある
# GitHubにはないので注意
30:Credentialに書き込み
cd /var/www/アプリ名
EDITOR="vi" bin/rails credentials:edit
# エラーでできない場合はこちらを試す
EDITOR='vi'
bundle exec rails
cr
edentials:edit
usernameは設定からわかる。passwordはわからなくなったら変更できる。
db:
endpoint: ******************** #先程コピーしたエンドポイントをコピー
user_name: ***** # マスターユーザー名
password: ****** # RDS作成した時に作ったパスワード
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: *********** #ここは特に手を加えずにそのままで
31.database.ymlの編集
ローカルでdatabase.ymlの設定
先ほどのcredentialsに記載された情報にアクセスするには Rails.application.credentials.db[:endpoint]
という書き方をする必要があり、これを利用してproduction環境用のDBに関して定義。