Nginx и пассажирская корневая директива не работают с Capistrano 3. Символьная ссылка на текущее приложение для прерываний выпуска - PullRequest
0 голосов
/ 29 ноября 2018

Когда я развертываюсь с Capistrano 3, я развертываюсь в /home/dev/app-name/.Cap создает структуру каталогов /home/dev/app-name/current/

, которая является символической ссылкой на /home/dev/app-name/releases/20181129161818 (текущий выпуск).

Эта символическая ссылка не работает и не работает для 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 на виртуальной машине в офисе, где я работаюв.У меня есть sudouser dev, который я использую для ssh и развертывания с ним.

Пожалуйста, помогите !?Мне нужно, чтобы приложение работало с / current в корневой директиве nginx, чтобы я мог развернуть его и вступить в силу.

1 Ответ

0 голосов
/ 03 декабря 2018

Я предполагаю, что capistrano уже имеет директиву symlink: ln -nfs release_path current_path

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

Ваша символическая ссылка не повреждена, ваши разрешения установлены, и вы должны их выровнять (у пассажира нет разрешения на создание файла).Измените chmod после развертывания: symlink

Что-то вроде

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

Также, в зависимости от вашей конфигурации, вы можете захотеть, например, выполнить chown вместо sudo

...