#ruby-on-rails #deployment #passenger
#ruby-on-rails #развертывание #пассажир
Вопрос:
Я пытаюсь развернуть приложение rail, которое находится в /opt / rails / my_app. Для достижения этой цели я установил passenger gem и настроил nginx с помощью passenger-install-nginx-module. Я могу получить доступ к статической странице приветствия, однако, когда я пробую какую-либо другую страницу, например home (которая генерируется rails generate controller home index), браузер продолжает ждать ответа.
Этого не происходит, когда я развертываю приложение с помощью rails s
на порту 3000.
ОБНОВЛЕНИЕ Когда я выполняю passenger-install-apache2-module
, я получаю g : нераспознанный параметр ‘-R / usr / local / lib’. Я понял, что мне нужно изменить ‘-R / usr /local/lib’ на ‘Wl,-R / usr/local / lib’, чтобы правильно скомпилировать LoggingAgent. Не могли бы вы, пожалуйста, сказать мне, как изменить файл make?
Комментарии:
1. Вы видите какую-либо активность в своем
log/
каталоге для используемой вами среды? Есть ли у вас какие-либо ошибки в вашем журнале nginx?2. В error.log ничего нет, однако, когда я запускаю passenger standalone, я получаю следующее. Не удалось запустить Phusion Passenger watchdog, поскольку во время запуска он столкнулся со следующей ошибкой: Не удалось запустить Phusion Passenger logging agent: похоже, что во время запуска произошел сбой по неизвестной причине с кодом выхода 127 (-1: неизвестная ошибка)
3. Возможно, пришло время перестроить ваш Passenger и обновить его до последней версии 3.0.7. Либо это, либо найти исправление для этой конкретной проблемы. Работает ли оно в автономном режиме?
4. автономный не работает, он жалуется, что не может найти libcurl, однако библиотека находится в / usr / local / lib в моей ОС SUSE. Я попробовал passenger на тестовом CentOS, который отлично работал.
Ответ №1:
Что касается NGINX, звучит так, как будто это проблема с разрешениями для некоторых ваших файлов и / или каталогов. Я бы вместо этого переместил приложение в выделенный каталог / home. Например, если бы у вас был пользователь с именем tester, в вашем nginx.conf было бы указано (следующее работает для меня в рабочей среде:
server {
listen YOURIPADDRESSHERE:80; #use :443 if SSL is being used.
server_name YOURFULLDOMAINNAMEHERE;
#uncomment out following if ssl is used.
#ssl on;
#ssl_certificate /etc/ssl/private/YOUR_chained.crt;
#ssl_certificate_key /etc/ssl/private/YOUR.key;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_protocols SSLv3 TLSv1;
#ssl_ciphers HIGH:MEDIUM;
#ssl_prefer_server_ciphers on;
root /home/tester/YOURRAILSAPPNAME/public; # <--- be sure to point to 'public'!
passenger_enabled on;
charset utf-8;
access_log /var/log/nginx/YOURFULLDOMAINNAMEHERE-ssl_access.log;
error_log /var/log/nginx/YOURFULLDOMAINNAMEHERE-ssl_error.log warn;
location /home/tester/YOURRAILSAPPNAME/public/ {
root html;
index index.html index.htm;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Затем убедитесь, что у вас правильные разрешения (755 для всех файлов, 644 для каталогов).
Ответ №2:
В моей предыдущей работе я потратил так много времени на развертывание приложений rails на vps productions с различными конфигурациями и драгоценными камнями, и, наконец, за 9 месяцев я обнаружил hatchbox.io сервис для развертывания приложений rails. Оно было создано Крисом из GoRails и, поверьте мне, сэкономило мне столько времени и нервов. Это не реклама, но на самом деле сервис работает идеально и стоит недорого.