Развертывание приложения rails

#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 и, поверьте мне, сэкономило мне столько времени и нервов. Это не реклама, но на самом деле сервис работает идеально и стоит недорого.