Может ли мой / public каталог быть символической ссылкой с рельсами 3 + passenger 3 + nginx 0.8? - PullRequest
6 голосов
/ 20 декабря 2010

Я собираю развертывание рельсов, где публичный каталог символическая ссылка на другой каталог в системе. Это с пассажира 3 на nginx .8. Это не похоже на эту настройку. Nginx всегда следует по символическим ссылкам по умолчанию, так что AFAIK это не вопрос эквивалентности Apache + FollowSymLinks.

обновление

Похоже, что здесь описано: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#application_detection

Обратите внимание, что Phusion Passenger для Nginx не разрешает какие-либо символические ссылки в корневой путь. Так, например, предположим, что ваш корень указывает на /home/www/example.com, который в свою очередь символическая ссылка на /webapps/example.com/public. Phusion Пассажир Nginx проверит /home/www/config/environment.rb, не /webapps/example.com/config/environment.rb. Этот файл, конечно, не существует, и в результате Phusion Passenger не будет активировать себя для этого виртуального хоста, и вы скорее всего увидите какой-то вывод генерируется по умолчанию Nginx обработчик каталогов, такой как Forbidden сообщение об ошибке.

происходит обнаружение приложений Rack через тот же механизм, исключение что Phusion Passenger будет искать config.ru вместо конфиг / environment.rb.

Поэтому мне интересно, может ли какая-то правильная символическая ссылка на config.ru справиться с задачей.

Ответы [ 3 ]

10 голосов
/ 14 января 2011

Не можете ли вы использовать следующее:

mount --bind /original_path /your_ngnix_root_path

вместо использования символических ссылок? Для ngnix это будет обычный каталог, поэтому он будет указывать на другой каталог, как вы хотели.

3 голосов
/ 10 января 2011

Я думаю, что невозможно использовать публичный каталог с символическими ссылками.Единственный обходной путь, который я могу себе представить, - это создать символическую ссылку на любой файл и каталог внутри общедоступного каталога.

# public folder: /data/public
# app folder: /webapp/
mkdir -p /webapp/public && ln -sf /data/public/* /webapp/public/

Для каждого нового файла или каталога в / data / public вы должны снова выполнить эту команду.

0 голосов
/ 10 марта 2019

Я смог сделать это с помощью руководства, приведенного ниже.

  1. Создайте приложение для rails в /var/www/html
  2. Удалить default.
  3. Редактировать /etc/nginx/nginx.conf файл
  4. символическая ссылка на sites-enabled
  5. Перезапустить nginx

Как развернуть Ruby on Rails с Passenger и Nginx в Ubuntu 16.04

...