Ruby Unicorn无法写入pid文件

Ruby Unicorn无法写入pid文件,ruby,deployment,capistrano,file-permissions,unicorn,Ruby,Deployment,Capistrano,File Permissions,Unicorn,我正在使用Capistrano将Ruby on Rails应用程序部署到Linode VPS。我使用Unicorn作为应用服务器,Nginx作为代理。我的问题是,由于明显的权限问题,我无法启动Unicorn,但我很难找到它 使用此Capistrano任务启动Unicorn: task:start,:roles=>:app,:except=>{:no\u release=>true}do 跑64 pid“/home/deploy/apps/shared/pids/unicorn.pid” #设置日

我正在使用Capistrano将Ruby on Rails应用程序部署到Linode VPS。我使用Unicorn作为应用服务器,Nginx作为代理。我的问题是,由于明显的权限问题,我无法启动Unicorn,但我很难找到它

使用此Capistrano任务启动Unicorn:

task:start,:roles=>:app,:except=>{:no\u release=>true}do
跑64
pid“/home/deploy/apps/shared/pids/unicorn.pid”
#设置日志文件的路径
stderr_path“/home/deploy/apps/gogy/current/log/unicorn.stderr.log”
标准路径“/home/deploy/apps/gogy/current/log/unicorn.stdout.log”
我在“部署”用户和组下使用Capistrano进行部署,这也是Unicorn应该运行的

有人知道为什么Unicorn不能写出pid文件吗?任何帮助都将不胜感激

  • 迈克

事实上,错误消息已经告诉您原因:

pid=/home/deploy/apps/shared/pids/unicorn.pid的目录不可写


那么,目录
/home/deploy/apps/shared/pids
是否存在?如果没有,您应该调用
mkdir
来创建它。

Unicorn进程正在后台运行(-d), 类型


杀死正在运行的独角兽进程,然后再次启动。

在capistrano 3中;如果我们将角色更改为:all,那么在部署capistrano时;

警告[正在跳过]没有与…匹配的主机。
部署后,所有符号链接不再工作。如果符号链接数组中有tmp/pids文件夹,则unicorn找不到tmp/pids文件夹,并表示unicorn.pid不可写

所以我们必须使用<代码>角色:%w{web app db}而不是
角色:全部

production.rb上的示例服务器行


服务器'YOUR_server_IP',用户:'YOUR_DEPLOY_user',角色:%w{web app db},ssh_选项:{forward_agent:true}

你说得对。我使用的绝对路径不正确。引用了正确的目录,生活中的一切又好了。谢谢你的帮助。
ps aux | grep unicorn