###前提・実現したいこと
centOS6.5に、rvmとCapistranoを利用してデプロイした環境で、
centOSの起動スクリプト(/etc/init.d/hoghoge)からunicornを起動したいと思い、
シェルスクリプトを書きました。
しかし、unicorn起動のためのコマンドの、bundle exec unicornの部分でエラーが発生してしまいます。
なお、デプロイは正常に行われ、unicornも起動できています。
###発生している問題・エラーメッセージ
下記シェルをsudoで実行したときに、以下のメッセージが出て先に進みません。
$ sudo /etc/init.d/hogehoge start Could not find rake-10.4.2 in any of the sources Run `bundle install` to install missing gems.
###該当のソースコード
bin/sh
1#!/bin/sh 2# 3# chkconfig: - 85 15 4 5. /etc/rc.d/init.d/functions 6 7PROG_NAME=hogehoge 8USER=execute_user 9 10APP_ROOT=/home/execute_user/hogehoge 11RAILS_ENV=staging 12 13PID_FILE="/var/run/hogehoge/unicorn.pid" 14CONFIG_FILE=$APP_ROOT/current/config/unicorn/$RAILS_ENV.rb 15CMD="cd $APP_ROOT/current && (RAILS_ENV=$RAILS_ENV bundle exec unicorn -c $CONFIG_FILE -D -E $RAILS_ENV )" 16 17cd $APP_ROOT/current || exit 1 18 19case $1 in 20 start) 21 su $USER -c "$CMD" 22 ;; 23 stop) 24 killproc -p $PID_FILE $PROG_NAME -QUIT 25 ;; 26 restart) 27 killproc -p $PID_FILE $PROG_NAME -USR2 28 ;; 29 *) 30 echo >&2 "Usage: $0 <start|stop|restart>" 31 exit 1 32 ;; 33esac
###試したこと
sshでexecute_userにログインし、上記スクリプトの$CMDと同じコマンドを発行したときは正常動作します。
環境変数のGEM_HOME,GEM_PATHあたりが怪しいかと思い、そのあたりの確認のために、
上記スクリプトの$CMDを
"cd $APP_ROOT/current && printenv && (RAILS_ENV=$RAILS_ENV bundle exec unicorn -c $CONFIG_FILE -D -E $RAILS_ENV )"
に変更して環境変数を出力し、sshでログインしたexecute_userのprintenvと見比べてみたのですが、特に異なった所はありません。
また、sudo権限を持つユーザーでsshログインして、
sudo su - execute_user -c "bundle exec 'ruby -e $LOAD_PATH'"
等として見ても、bundle exec実行の際に上記エラーで止まってしまいます。
オプションでbundlerを選べるのかとか考え、
sudo su - execute_user -c "BUNDLE_BIN_PATH=/home/execute_user/.rvm/rubies/2.1.5/bin bundle exec 'ruby -e $LOAD_PATH'"
等ともやってみるのですが、結果は同様です。
###補足情報(言語/FW/ツール等のバージョンなど)
CentOS 6.5
rvm 1.26.11
rvm ruby 2.1.5
rails 3.2.22
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/17 04:26 編集
2016/05/17 07:14
2016/05/17 09:30
2016/05/17 16:44
2016/05/18 09:35
2016/05/25 15:09