2013-10-11 63 views
0

answer 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與Capistrano的:

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 

但Capistrano的嘗試時發出命令:

** [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 

我有一個trie d將更改爲unicorn_init_staging.sh./unicorn_init_include.sh,將unicorn_abc鏈接到/etc/init.d/(如上所示),但它不起作用。

我做錯了什麼?

回答

0

儘量完整路徑

變化

export RAILS_ENV 
unicorn_init_include.sh 

export RAILS_ENV 
/etc/init.d/unicorn_init_include.sh 
0

的錯誤是在你的unicorn_init_staging.sh,4號線。當調用unicorn_abc時,它不會從工作目錄/ home/deployer/abc/current/config中調用,而是在其他位置調用,如/etc/init.d。所以它不會找到你的unicorn_init_include.sh。

您可以通過添加

echo 'pwd' 

到什麼是可能需要的是更改臨時文件(未測試)

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

Getting the source directory of a Bash script from within

的staging.sh文件

排查