0

我正在关注#335 Deploying to a VPS,当我运行时cap deploy:cold,一切都很好,除了最后它报告

executing 'deploy:start'
executing "/etc/init.d/unicorn_just4magic start"
servers: ["106.XXX.XXX.XXX"]
[106.XXX.XXX.XXX] executing command
out :: 106.XXX.XXX.XXX sh: /etc/init.d/unicorn_just4magic: Permission denied
command finished in 502ms
failed: "env PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH sh -c '/etc/init.d/unicorn_just4magic start'" on 
106.XXX.XXX.XXX     

我可以rails server在VPS上手动运行,完全没有问题。但是在使用 cap 进行部署时,我得到了上述错误。当我访问我的网站时,我会得到Sorry Something went wrong提示

更新: deploy.rb 在这里,这是start/restart部分

  %w[start stop restart].each do |command|
    desc "#{command} unicorn server"
    task command, roles: :app, except: {no_release: true} do
      run "/etc/init.d/unicorn_#{application} #{command}"
    end
  end

UPDATE2:现在permission denied提示没有出现,我遇到了另一个问题: sudo: /etc/init.d/unicorn_just4magic: command not found

我发现Capistrano deploy:start with unicorn在 cap deploy:cold - command not found for /etc/init.d/unicorn 我更改了 shell 脚本的行分隔符,并gemfile.lock从 git 和 set :bundle_flags, ''. 仍然得到错误

4

2 回答 2

1

我通过在本地文件 /config/unicorn_init.sh 上运行chmod +x config/unicorn_init.sh来解决它。将它推送到您的 git 存储库,将其部署到服务器,它对我来说就像一个魅力。

摆弄服务器上的权限似乎效果不佳。

此外,如果您似乎无法找到您描述的文件(“找不到命令”),请尝试cap deploy:setup使用新权限再次运行并从那里开始。可能是由于权限问题而未正确创建符号链接的情况?

希望有帮助!

于 2014-04-09T08:23:00.050 回答
0

默认情况下,Unix 用户对其 /home/user/ 目录具有权限
文件unicorn_just4magic不在主目录或任何允许写入的目录下,因此您会收到“Permission demied”错误。
要解决这个问题,你可以
- 移动unicorn_just4magic到你的主目录下(你可以在你的独角兽配置文件​​中设置
或者
- 为你的用户添加 /etc/ 目录的权限
$ chown your_username /etc/init.d/unicorn_just4magic

于 2013-09-19T08:28:32.103 回答