ruby-on-rails - Nginx 和 passenger root 指令不适用于 Capistrano 3。当前版本的符号链接(symbolic link)中断应用程序

标签 ruby-on-rails nginx capistrano passenger

当我使用 Capistrano 3 部署时,我部署到 /home/dev/app-name/。 Cap创建目录结构/home/dev/app-name/current/

这是 /home/dev/app-name/releases/20181129161818(当前版本)的符号链接(symbolic link)。

此符号链接(symbolic link)已损坏,不适用于 nginx 和 passenger。我知道这一点,因为这是我位于 /etc/nginx/conf.d/app-name.conf 中的应用程序配置:

server {
  listen 80;
  server_name app-name.domain.com;

  passenger_enabled on;
  passenger_ruby /home/dev/.rvm/gems/ruby-2.5.1/wrappers/ruby;

    rails_env production;

    root /home/dev/app/app-name/releases/20181129161818/public/;
    #root /home/dev/app/app-name/current/public;
}

如果我注释掉路径 root/home/dev/app/mullen-admin/releases/20181129161818/public/;sudo service nginx restart 应用程序工作.

如果我使用其他根指令,应用程序会损坏,我会收到此 500 服务器错误。

2018/11/29 15:31:43 [alert] 11278#0: *3 Cannot stat '/home/dev/app/app-name/current/passenger_wsgi.py': 
Permission denied (errno=13); This error means that the Nginx worker process (PID 11278, running as UID 1002) does not have permission to access this file. 
Please read this page to learn how to fix this problem: https://www.phusionpassenger.com/library/admin/nginx/troubleshooting/?a=upon-accessing-the-web-app-nginx-reports-a-permission-denied-error; 
Extra info, client: 10.194.234.100, server: app-name.domain.com, request: "GET /employees/sign_in HTTP/1.1", host: "app-name.domain.com"

我在办公室的虚拟机上运行 centos-release-7-5.1804.5.el7.centos.x86_64。我有一个用于 ssh 和部署的 sudouser dev

请帮忙!?我需要该应用程序在 nginx 根指令中的/current 工作,以便我可以部署并使更改生效。

最佳答案

我假设 capistrano 已经有符号链接(symbolic link)指令:ln -nfs release_path current_path

Cannot stat '/home/dev/app/app-name/current/passenger_wsgi.py': 
Permission denied (errno=13);

你的符号链接(symbolic link)没有被破坏,你的权限是,你必须对齐它们(乘客没有创建文件的权限)。部署后更改 chmod:symlink

有点像

 run "#{try_sudo} chmod 755 -R #{current_path}"

另外,根据您的配置,您可能希望执行 chown 而不是 sudo

关于ruby-on-rails - Nginx 和 passenger root 指令不适用于 Capistrano 3。当前版本的符号链接(symbolic link)中断应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53547279/

相关文章:

php - Laravel API - AngularJS : Access-Control-Allow-Origin error

nginx - Nginx 日志中出现警告,需要对请求进行解释

docker - NGINX proxy_pass到RabbitMQ管理器仅通过移动设备工作

git - 使用 capistrano3 部署时写入身份验证套接字时出错

ruby-on-rails - Rails,通过参数获取引擎 Controller 操作的 url

ruby-on-rails - Rails 迁移不会创建 NOT NULL 约束

ruby-on-rails - 在子模型中访问父对象

macos - 升级到 macOS 10.12 (Sierra) 后使用 Capistrano 部署代码时出现问题, “Permission denied (publickey).”

ruby - unicorn 无法写入pid文件

ruby-on-rails - 将元数据保存到 Sidekiq 上的作业