Не удается запустить единорог, мастер не смог запустить, проверить журнал stderr для получения более подробной информации

Я не знаю, что случилось с файлом unicorn.rb. my unicorn.rb config

APP_PATH = "/var/www/demo"
working_directory APP_PATH

stderr_path APP_PATH + "/log/unicorn.stderr.log"
stdout_path APP_PATH + "/log/unicorn.stderr.log"

pid APP_PATH + "/tmp/pid/unicorn.pid"

работает nginx успешно.

sudo servier nginx start
sudo unicorn -c /var/www/demo/config/unicorn.rb -D

Ответ 1

Сокет - это "файл", который nginx и единорог используют в качестве канала для всей связи между ними. Где вы его определили? В наших конфигурациях unicorn мы обычно имеем такую ​​строку:

listen APP_PATH + "/tmp/pid/.unicorn.sock

Затем в вашем nginx.conf вам нужно сообщить nginx об этом сокете, например:

upstream unicorn {
  server unix:/var/www/demo/tmp/pid/.unicorn.sock fail_timeout=0;
}

location / {
  root /var/www/demo/current/public ;
  try_files $uri @unicorns;
}

location @unicorns {
  proxy_pass http://unicorn;
}

В этом файле конфигурации первый раздел определяет, как nginx может достичь единорога. Второй на самом деле направляет запросы в абстрактное местоположение "@unicorns", которое, в свою очередь, определяется в последнем разделе. Таким образом, вы можете повторно использовать сокращение @unicorns, если у вас более сложная маршрутизация nginx.