読者です 読者をやめる 読者になる 読者になる

5分でUnicornを設定する。--Unicorn,Nginx

f:id:sksksksksk:20170510225653p:plain

前回は、NginxとUnicornの連携はsock名を同一にする、ということをお話しました。
それを踏まえて、進めていきます。

デモ

デモ
Git Hub

Unicornのインストー

gem 'unicorn'
bundle

Unicorn.rbファイルの作成

自動では作成されませんので手動で作成しましょう。
このファイルの中身がunicornの設定を行うものになります。



config/uncorn.rb

worker_processes 2
working_directory "/home/anime/deploy_sample/current" #appと同じ階層を指定

timeout 3600


listen "/var/run/unicorn/Nginxで設定した名前.sock" ★
pid "/var/run/unicorn/Nginxで設定した名前.pid"


stderr_path "/home/anime/deploy_sample/current/log/unicorn.log"
stdout_path "/home/anime/deploy_sample/current/log/unicorn.log"


preload_app true

これだけで済みます。
特に★の部分の名前には気をつけてください。



冒頭でも説明しましたが、
ここの名前を一致させることでNginxと連携させることができます。

working_directory "/home/anime/deploy_sample/current" #appと同じ階層を指定

unicornを起動するディレクトリを指定します。
currentの下にはアプリが存在します。


デプロイ時は/home/anime/deploy_sample/の下にアプリを置いてくれと設定したことを思い出してください。



今回はこのような設定を書きました。

worker_processes 2
working_directory "/home/anime/deploy_sample/current"

timeout 3600


listen "/var/run/unicorn/unicorn_deploy_sample.sock"
pid "/var/run/unicorn/unicorn_deploy_sample.pid"


stderr_path "/home/anime/deploy_sample/current/log/unicorn.log"
stdout_path "/home/anime/deploy_sample/current/log/unicorn.log"


preload_app true

さて、これをgitに入れてデプロイ、その後起動してみましょう。


$ git add .
$ git commit -m ユニコーン
$ git push
$ cap production deploy

起動
[anime@tk2-241-30026 current]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
[anime@tk2-241-30026 current]$


できた!と、思ったら、production環境のシークレットキーを設定していなく、HTTP500エラーです。

シークレットキーの作成

$ bundle exec rake secret


生成されたキーをsecret.ymlに設定します。

config/secret.yml

production:
  secret_key_base: 生成されたキー


もう一度デプロイして結果を確認します。
デモ

できました。


再起動した時に以下のエラーが出ますが、これはすでにアプリケーションサーバが起動している為です。

master failed to start, check stderr log for details


ですので、以下のようにプロセスを殺して起動してください。
プロセスIDはその度に異なるので、適切に処置してください。
 

[anime@tk2-241-30026 current]$ ps -ef | grep unicorn                                                                              
anime    22414     1  0 00:18 ?        00:00:01 unicorn_rails master -c config/unicorn.rb -E production -D                                                                                  
anime    22417 22414  0 00:18 ?        00:00:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D                                                                               
anime    22420 22414  0 00:18 ?        00:00:00 unicorn_rails worker[1] -c config/unicorn.rb -E production -D                                                                                                                                                            
[anime@tk2-241-30026 current]$ kill -QUIT 22414
[anime@tk2-241-30026 current]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D




以上です。
いかがでしょうか?



参考
http://mlearning.ga/?p=37

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
製作物を発信できるアプリを公開したのでよかったら使ってください。
http://ruppish.com/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////