次にデプロイするため"aws rails デプロイ"でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。
アプリのsecret_key_baseの設定
$ vi config/secrets.yml $ production: $ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> //keyを生成する $ bundle exec rake secret //生成したkeyを環境変数に設定する $ export SECRET_KEY_BASE= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Unicornの設定
$ vi Gemfile $ gem 'unicorn' $ bundle install
$ vi config/unicorn.rb @app_path = '/home/xxxx/app-name/' working_directory @app_path worker_processes 2 preload_app true timeout 30 listen "/tmp/unicorn.sock", : backlog => 64 pid "/home/youser/tag-manager/tag-manager/shared/tmp/pids/unicorn.pid" stderr_path "#{@app_path}/log/unicorn.stderr.log" stdout_path "#{@app_path}/log/unicorn.stdout.log" before_fork do |server, worker | ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', ENV['RAILS_ROOT']) end before_fork do |server, worker | if defined ? (ActiveRecord::Base) ActiveRecord::Base.connection.disconnect! end old_pid = "#{server.config[:pid]}.oldbin" if File.exists ? (old_pid) && server.pid != old_pid begin Process.kill("QUIT", File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker | if defined ? (ActiveRecord::Base) ActiveRecord::Base.establish_connection end end
Nginxのインストール
$ sudo yum install nginx -y
Nginxの設定
$ vi /etc/nginx/conf.d/app-name.conf upstream unicorn_server { server unix: /tmp/unicorn.sock fail_timeout = 0; } server { listen 80; client_max_body_size 4 G; server_name * .xxxxx.compute.amazonaws.com; #サーバーネーム記載 keepalive_timeout 5; # Location of our static files root / home / xxxx / app - name;# appname部分は自分自身で設定 location~ ^ /assets/ { root / home / xxxx / app - name / public; #修正後 } location / { proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http: //unicorn_server; break; } } error_page 500 502 503 504 / 500. html; location = /500.html { root / home / xxxx / app - name; } }
※サーバーネームをAWSのDNS設定にしたら長すぎると怒られたのでとりあえず*にしたら通った
Nginxの起動
$ sudo service nginx start
Nginxの再起動
$ sudo service nginx reload
//アプリのディレクトリに移動 $ cd /home/xxxx/app-name
Unicornの起動
$ bundle exec unicorn_rails -c /home/xxxx/app-name/config/unicorn.rb -p 8080 -D -E production
Unicornの起動確認
ps -ef | grep unicorn | grep -v grep
ついに、、
ページの確認♡ http://xxxxx.compute.amazonaws.com/
参考URL
Amazon LinuxにRuby on Rails環境構築(rbenv + ruby-build + Ruby 2.2.1 + Rails 4.2.1インストール) http://qiita.com/na0AaooQ/items/5bd62e630a2faf051a52
(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで http://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e