0

here の回答に続いて、展開用に次のものがあります。

$ ls -alh /etc/init.d
# unicorn_init_include.sh -> /home/deployer/abc/current/config/unicorn_init_include.sh
# unicorn_abc -> /home/deployer/abc/current/config/unicorn_init_staging.sh

# /home/deployer/abc/current/config/unicorn_init_staging.sh
#!/bin/sh
RAILS_ENV="staging"
export RAILS_ENV
unicorn_init_include.sh

# /home/deployer/abc/current/config/unicorn_init_include.sh
#!/bin/sh
set -e

TIMEOUT=${TIMEOUT-60}
APP_ROOT=/home/deployer/abc/current
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E $RAILS_ENV"

deploy:setupカピストラーノを使用すると、すべてがシンボリックリンクされていることに気付くでしょう。

executing "sudo -p 'sudo password: ' ln -nfs /home/deployer/abc/current/config/unicorn_init_staging.sh /etc/init.d/unicorn_abc"
servers: ["192.168.33.10"]
[192.168.33.10] executing command
[out :: 192.168.33.10] 
command finished in 611ms
executing "sudo -p 'sudo password: ' ln -nfs /home/deployer/abc/current/config/unicorn_init_include.sh /etc/init.d/unicorn_init_include.sh"
servers: ["192.168.33.10"]
[192.168.33.10] executing command
[out :: 192.168.33.10] 
command finished in 602ms

しかし、カピストラーノがコマンドを起動しようとすると:

** [out :: 192.168.33.10] /etc/init.d/unicorn_abc: 4: /etc/init.d/unicorn_abc:
** [out :: 192.168.33.10] unicorn_init_include.sh: not found

を to に変更unicorn_init_include.shし、unicorn_init_staging.shto./unicorn_init_include.shをシンボリック リンクしてみましたunicorn_abc/etc/init.d/(上記のように)、うまくいきません。

私は何を間違えましたか?

4

2 に答える 2

0

エラーは unicorn_init_staging.sh の 4 行目にあります。unicorn_abc が呼び出されると、作業ディレクトリ /home/deployer/abc/current/config からではなく、 /etc/init.d などの別の場所から呼び出されます。そのため、unicorn_init_include.sh が見つかりません。

追加することでトラブルシューティングできます

echo 'pwd'

staging.sh ファイルに

おそらく必要なのは、ステージング ファイルを (未テスト) に変更することです。

#!/bin/bash
RAILS_ENV="staging"
export RAILS_ENV
`dirname ${BASH_SOURCE[0]}`/unicorn_init_include.sh

内部から Bash スクリプトのソース ディレクトリを取得する

于 2013-10-11T19:56:37.603 に答える