【问题标题】:Deploying rails application部署 Rails 应用程序
【发布时间】:2011-09-09 14:41:50
【问题描述】:

我正在尝试部署 /opt/rails/my_app 中的 Rail 应用程序。 为此,我安装了乘客 gem 并使用 passenger-install-nginx-module 配置了 nginx。我可以访问静态欢迎页面,但是当我尝试其他页面(如主页(由 rails generate 控制器主页索引生成))时,浏览器会一直等待并等待响应。

当我在端口 3000 上使用 rails s 部署应用程序时,不会发生这种情况。

更新 当我执行 passenger-install-apache2-module 时,我得到 g++: unrecognized option '-R/usr/local/lib'。我想我需要将 '-R/usr/local/lib' 更改为 'Wl,-R/usr/local/lib' 才能正确编译 LoggingAgent。你能告诉我如何更改make文件吗?

【问题讨论】:

  • 您是否在log/ 目录中看到与您正在使用的环境相关的任何活动?您的 nginx 日志中有任何错误吗?
  • error.log 中没有任何内容,但是当我独立启动乘客时,我得到以下信息。无法启动 Phusion Passenger 看门狗,因为它在启动过程中遇到以下错误:无法启动 Phusion Passenger 日志代理:它似乎在启动过程中由于未知原因而崩溃,退出代码为 127(-1:未知错误)跨度>
  • 可能是时候重建您的乘客并将其升级到最新版本 3.0.7。要么找到解决该特定问题的方法。它可以在单机模式下工作吗?
  • 独立不起作用,它抱怨找不到 libcurl,但是该库位于我的 SUSE 操作系统上的 /usr/local/lib 中。我在测试 CentOS 上尝试了乘客,效果很好。

标签: ruby-on-rails deployment passenger


【解决方案1】:

在我之前的工作中,我花了很多时间将 rails 应用程序部署到 vps 产品中,具有不同的配置和 gem,最后在 9 个月前,我发现了用于部署 rails 应用程序的 hatchbox.io 服务。它是由来自 GoRails 的 Chris 构建的,相信我,它为我节省了很多时间和精力。这不是广告,而是真正的服务完美且不贵。

【讨论】:

    【解决方案2】:

    关于 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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      相关资源
      最近更新 更多