このページには本線を進める為に必要な、AWSにRuby on Rails5の環境を作成する手順を記載しています。
見出し
各種インストール
1 2 3 4 5 6 7 8 9 |
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 \ mysql mysql-server mysql-devel \ ImageMagick ImageMagick-devel \ epel-release |
1 |
sudo yum install nodejs npm --enablerepo=epel |
rbenv, ruby-build, Ruby, railsインストール
以下のローカル開発環境と同様です。
git clone
.gitconfig
.gitconfigに以下の内容を記載します。
1 2 3 4 5 6 |
[user] name = githubユーザ名 email = githubメールアドレス [url "github:"] InsteadOf = https://github.com/ InsteadOf = git@github.com: |
公開ディレクトリ
/var/www/railsディレクトリを作成し、ユーザの権限を与える(chown xxx rails)
github SSH接続設定
こちらの記事で同じ事をやっています。
git clone
1 2 |
cd /var/www/rails git clone git@github.com:xxxxxxxxxxx |
railtiesインストール
railsコマンドを使うためrailtiesをインストールします。
1 2 |
gem install railties rbenv rehash |
rails secretk_key_base
ローカル環境にて、
1 2 |
cd project名 rake secret |
で生成されたkeyをコピーする。
本番環境で、環境変数に以下コマンドで登録する。※config/secrets.ymlにて環境変数を呼び出している為。
1 |
$export SECRET_KEY_BASE=シークレットキー |
Unicorn(appサーバ)のインストール・設定
Gemfile
Gemfileに以下を追記
1 2 3 |
group :production, :staging do gem 'unicorn' end |
Unicornのインストール
1 2 |
gem install bundler bundle install |
unicorn.conf.rbの設定
/var/www/rails/project名/unicorn.conf.rbに以下を記載
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# set lets $worker = 2 $timeout = 30 $app_dir = "/var/www/rails/project名" $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 |
Nginxのインストール・設定
Nginxのインストール
1 |
sudo yum install nginx |
Nginxの設定
1 |
sudo vim /etc/nginx/conf.d/project名 |
で以下の内容記載
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# log directory error_log /var/www/rails/project名/log/nginx.error.log; access_log /var/www/rails/project名/log/nginx.access.log; # max body size client_max_body_size 2G; upstream app_server { # for UNIX domain socket setups server unix:/var/www/rails/project名/tmp/sockets/.unicorn.sock fail_timeout=0; } server { listen 80; server_name xxx.xxx.xxx.xxx; # nginx so increasing this is generally safe... keepalive_timeout 5; # path for static files root /var/www/rails/project名/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/rails/project名/public; } } |
Nginxディレクトリpermission設定
1 |
sudo chmod -R 775 /var/lib/nginx |
DB接続情報設定
1 |
project名/config/database.yml |
上記ファイルのproduction情報を記載
1 2 3 4 5 6 7 |
production: <<: *default database: project名_production username: root password: socket: /var/lib/mysql/mysql.sock host: RDSのエンドポイント |
mysqld起動
1 |
sudo service mysqld start |
mysqlソケットリンク
1 |
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock |
rails migration
1 |
rake db:setup RAILS_ENV=production |
schema.rb, seeds.rbが実行されます。
プリコンパイル
調査中
1 2 3 4 5 6 |
$ rake assets:precompile RAILS_ENV=production rake aborted! Sass::SyntaxError: Invalid CSS after "...rgin-left: auto": expected "{", was "; margin-right:..." (sass):578 Tasks: TOP => assets:precompile (See full trace by running task with --trace) |
https://qiita.com/mochikana/items/0b87222e1463a201885f
各種起動
Nginx起動
1 |
sudo service nginx start |
unicorn起動
1 |
unicorn_rails -c /var/www/rails/project名/config/unicorn.conf.rb -D -E production |
Nginx再起動
1 |
sudo nginx -s reload |
参考サイト様
ほぼほぼこちらの情報通りでしたので、上記で出来なかった場合はこちらを見た方が良いです。
https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e
http://tetsuyai.hatenablog.com/entry/20110920/1316504421
https://qiita.com/mochikana/items/0b87222e1463a201885f
.