質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

6127閲覧

Capistranoでエラーについて

daikitakaya

総合スコア229

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2016/08/18 06:32

###前提・実現したいこと
Capistarano+nginx+unicornでアプリをデプロイしようとしています。かなりたくさんのエラーが出てきてそれを色々倒してきたのですが、完了目前で以下のエラーが出ています。

デプロイにあたって参考にしてURl:
(Capistrano編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
###発生している問題・エラーメッセージ
Don't know how to build task 'unicorn:restart' (see --tasks)という記述を検索したり、したのですがなかなかいい解決方法が見つかりませんでした。ユニコーンを再起動しろということなのでしょうか?

cap aborted! Don't know how to build task 'unicorn:restart' (see --tasks) Tasks: TOP => deploy:restart (See full trace by running task with --trace) The deploy has failed with an error: Don't know how to build task 'unicorn:restart' (see --tasks) ** DEPLOY FAILED
capistranoのエラーログ(20行) ** Refer to log/capistrano.log for details. Here are the last 20 lines: DEBUG [bfdff1fa] Running /usr/bin/env ls /var/www/Vook/releases/20160818060712/public/assets/manif… DEBUG [bfdff1fa] Command: cd /var/www/Vook/releases/20160818060712 && ( export RBENV_ROOT="$HOME/.… DEBUG [bfdff1fa] /var/www/Vook/releases/20160818060712/public/assets/manifest-9ebc2fdbdedb67fe4fc… DEBUG [bfdff1fa] Finished in 0.047 seconds with exit status 0 (successful). INFO [2d00e854] Running /usr/bin/env cp /var/www/Vook/releases/20160818060712/public/assets/manif… DEBUG [2d00e854] Command: cd /var/www/Vook/releases/20160818060712 && ( export RBENV_ROOT="$HOME/.… INFO [2d00e854] Finished in 0.047 seconds with exit status 0 (successful). INFO [deploy:migrate] Run `rake db:migrate` DEBUG [db7b97a7] Running if test ! -d /var/www/Vook/releases/20160818060712; then echo "Directory … DEBUG [db7b97a7] Command: if test ! -d /var/www/Vook/releases/20160818060712; then echo "Directory… DEBUG [db7b97a7] Finished in 0.046 seconds with exit status 0 (successful). INFO [e40a9639] Running $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate as Daiki@52.197.2… DEBUG [e40a9639] Command: cd /var/www/Vook/releases/20160818060712 && ( export RBENV_ROOT="$HOME/.… INFO [e40a9639] Finished in 2.730 seconds with exit status 0 (successful). INFO [25aa06ee] Running /usr/bin/env ln -s /var/www/Vook/releases/20160818060712 /var/www/Vook/re… DEBUG [25aa06ee] Command: ( export RBENV_ROOT="$HOME/.rbenv" PATH="~/.rbenv/shims:~/.rbenv/bin:$PA… INFO [25aa06ee] Finished in 0.048 seconds with exit status 0 (successful). INFO [1110e831] Running /usr/bin/env mv /var/www/Vook/releases/current /var/www/Vook as Daiki@52.… DEBUG [1110e831] Command: ( export RBENV_ROOT="$HOME/.rbenv" PATH="~/.rbenv/shims:~/.rbenv/bin:$PA… INFO [1110e831] Finished in 0.045 seconds with exit status 0 (successful).

###知りたいこと
このエラーログの読み方がいまいちわからないのと、参考のURLなどを教えていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

task unicorn:restartが定義されていない、と言うエラーではないかと思いますが、
Capfileにcapistrano/unicornもしくはcapistrano3/unicornをrequireしていますか?

requireしていれば、上記タスクは定義されるはずですが・・・

投稿2016/08/18 08:42

rifuch

総合スコア1901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daikitakaya

2016/08/18 08:50

回答ありがとうございます。 上記のサイトでは、requireしない形を取っていたのでrequireしていません。 先ほどrequire capistrano/unicornとしたところ、 LoadError: cannot load such file -- capistrano/unicorn /Users/takayadaiki/projects/Vook/Capfile:16:in `require' /Users/takayadaiki/projects/Vook/Capfile:16:in `<top (required)>' とエラーを吐かれてしまいました。
rifuch

2016/08/18 08:53

capistranoのバージョンによって、requireするコンポーネントが違うので、そのあたり確認してみてください。 Capistranoがversion3系であれば、 require 'capistrano3/unicorn' です。
rifuch

2016/08/18 09:03

改めてリンクを読ませてもらいましたが、このリンクの方がおっしゃっているような状況(PIDの配置先が固定されてしまう)は発生した事がありませんでした。 ですから、lib/capistrano/tasksには、unicorn.rbは配置していません。 もしも、ここの筆者さんと同じ状況で、capistrano3/unicornを利用したくないのであれば、問題はlib/capistrano/tasks/unicorn.rbにあるかと思います。 Capfileに Dir.glob('lib/capistrano/tasks/*.rb').each { |r| import r } と書かれているのであれば、このディレクトリに配置されたタスクが読み込まれるはずなので、問題があるとすればそこでしょう。
daikitakaya

2016/08/18 09:22 編集

ありがとうございます。 今一度unicorn.rbに書かれているタスクをよく見てみます。
daikitakaya

2016/08/18 10:26

ib/capistrano/tasks/unicorn.rb #unicornのpidファイル、設定ファイルのディレクトリを指定 namespace :unicorn do task :environment do set :unicorn_pid, "#{shared_path}/tmp/pids/unicorn.pid" set :unicorn_config, "#{current_path}/config/unicorn/production.rb" end #unicornをスタートさせるメソッド def start_unicorn within current_path do execute :bundle, :exec, :unicorn, "-c #{fetch(:unicorn_config)} -E #{fetch(:rails_env)} -D" end end #unicornを停止させるメソッド def stop_unicorn execute :kill, "-s QUIT $(< #{fetch(:unicorn_pid)})" end #unicornを再起動するメソッド def reload_unicorn execute :kill, "-s USR2 $(< #{fetch(:unicorn_pid)})" end #unicronを強制終了するメソッド def force_stop_unicorn execute :kill, "$(< #{fetch(:unicorn_pid)})" end #unicornをスタートさせるtask desc "Start unicorn server" task start: => :environment do on roles(:app) do start_unicorn end end #unicornを停止させるtask desc "Stop unicorn server gracefully" task stop: => :environment do on roles(:app) do stop_unicorn end end #既にunicornが起動している場合再起動を、まだの場合起動を行うtask desc "Restart unicorn server gracefully" task restart: => :environment do on roles(:app) do if test("[ -f #{fetch(:unicorn_pid)} ]") reload_unicorn else start_unicorn end end end #unicornを強制終了させるtask desc "Stop unicorn server immediately" task force_stop: => :environment do on roles(:app) do force_stop_unicorn end end end 特に問題ないと思うのですがどうでしょうか
rifuch

2016/08/18 10:48

問題なさそうですね・・・ こっちの方式はやった事がないので何とも・・・ require 'capistrano3/unicorn'した時には、 config/deploy/production.rb等の環境別デプロイファイルに、以下のようにPIDの配置先パスを指定してあげれば問題なく動作していました。 set :unicorn_pid, "path_to_unicorn.pid"
daikitakaya

2016/08/18 13:48

config/deploy.rb desc 'Restart application' task :restart do on roles(:app) do invoke 'unicorn:restart' end end 追記したところうまくいきました! アクセスしてみると Welcome to nginx on the Amazon Linux AMI! とnginxが動いているのは確認できました。しかし、アプリが表示されてないのでunicornが動いていない可能性があるかもしれないです
takotakot

2016/08/18 14:00

横からすみません。 nginx が動いていてアプリが出ないのは、nginx の設定です。sock ファイルを指定してあげたりする必要があるのでは。nginx が正しく設定されていて、unicorn が動いていなければ 5xx のエラーが出ます。
rifuch

2016/08/18 15:07

capコマンドが全部通ったのであれば、デプロイとしては完了していると思われます。 良かったです。 実際にunicornが動いているかどうかは、pidファイル、sockファイルが指定された場所に存在しているか、後はunicornのログを確認してみれば良いでしょう。 nginxからunicornが見られないが原因はtakotakotさんが指摘してくれたとおり、sock関係の設定がうまくいっていないか、unicornがうまく起動しなかったかのいずれかです。 taskが通っても、きちんと起動しないパターンはあり得るので、ログを確認してみるのが一番かと。 あと、capコマンドを--trace付きで流してあげれば、タスクの各項目がどのようなステータスで完了しているかが見られるので、そちらを詳しく見てゆけば、問題点がわかるかと思います。 今回は力になれなくてすみませんでした
daikitakaya

2016/08/22 05:56

みなさん回答ありがとうございます。 sockファイルの指定ですが、nginxとunicronで合っていることは確認できました。 しかし、そもそもpidファイルやsockファイルが指定した位置に作成されてないようです。それに伴いunicornのログファイルもないです.. rifuchさん、わざわざリンクに飛んで記事を読んでもらったりと回答ありがとうございます!とても参考になりました!
daikitakaya

2016/08/22 06:43

sock以外は作成されました! task restart: :environment doのような箇所に誤字が多発していて、そのためログやpidファイルが作成されなかったようです。
rifuch

2016/08/22 11:39

pidの指定はconfig/unicorn/production.rb(環境別にしている場合)で指定しますが、フォルダや実行ユーザーのパーミッションが問題になる事もあるので、そのあたり注意してみてください。 起動しているはずなのに、nginxから見られない等の状況にあるときは、nginxのユーザーがどうなっているかを確認してみるのが良いかと。 unicornのログと、nginxのログ両方をチェックして見る事をお勧めします。
daikitakaya

2016/08/22 17:06

unicorn.sockだけがない事件は何とか解決しました。正直、解決策が絞れず残念なのですがいつの間にか出来ていました....(unicorn, nginx再起動、設定ファイルの見直しはしました その結果無事アプリが表示されました!!ローカルの時と異なる挙動をして少し困惑ですが、ひとまず一息つけました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問