【问题标题】:Apache with Passenger doesn't load Rails app带乘客的 Apache 不加载 Rails 应用程序
【发布时间】:2012-09-08 09:10:18
【问题描述】:

我正在开发一个 Rails 应用程序并尝试配置它所部署的 Web 服务器。 我的问题是页面无法加载。

在 Apache 的 error.log没有错误,而在我的应用程序的 log/production.log 中,仅出现 Connecting to database specified by database.yml 行。

我在应用的公用文件夹中没有 index.html,应用在开发环境中运行良好。

我正在使用带有 Ubuntu 12.04 的 Amazon 实例,并且我已经通过 RVM 安装了 ruby​​。 在我的 httpd.conf 我有:

LoadModule passenger_module /home/ubuntu/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /home/ubuntu/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17
PassengerRuby /home/ubuntu/.rvm/wrappers/ruby-1.9.3-p194/ruby

Apache 启动时没有错误。

下面是我的sites-available/default:

# other virtualhosts
#

<VirtualHost *:80>
    ServerName my_app.mydomain.com
    ServerAdmin mail@mail.com

    DocumentRoot /home/ubuntu/public_html/my_app/current/public

    <Directory /home/ubuntu/public_html/my_app/current/public>
        Allow from all
        Options -MultiViews
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

我现在应该怎么做才能让乘客工作?

【问题讨论】:

  • access.log?有没有线索
  • 我认为您缺少 RailsEnv 生产(或任何环境)
  • @simonmorley RailsEnv 生产不应该是默认的吗?不管怎样,我试过了,但没有任何改变
  • @FareeshVijayarangam 没有。它完全是空白的
  • 当您说页面未加载时,您会收到 404、500 还是什么错误?您在该服务器中有任何其他站点吗?愚蠢的问题,但是您确定启用了该网站吗?

标签: ruby-on-rails ruby linux apache passenger


【解决方案1】:

我决定重新安装 Ruby 和所有其他东西并迁移到 nginx。 终于现在我已经全部工作了(在 ngnix 和 apache 中)。 如果有人在乎,这就是我所做的:

Ruby + Rails

通过 RVM 安装 ruby​​ + rails

curl -L https://get.rvm.io | bash -s stable --rails

在所有打开的 shell 中加载 rvm

source ~/.rvm/scripts/rvm

安装 gem

gem install passenger

阿帕奇

安装 apache 和乘客模块

rvmsudo passenger-install-apache2-module

将这些行复制到/etc/apache2/httpd.conf

LoadModule passenger_module /home/ubuntu/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /home/ubuntu/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17
PassengerRuby /home/ubuntu/.rvm/wrappers/ruby-1.9.3-p194/ruby

nginx

安装nginx和passenger模块

rvmsudo passenger-install-nginx-module

将这些行复制到/opt/nginx/conf/nginx.conf

passenger_root /home/ubuntu/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17;
passenger_ruby /home/ubuntu/.rvm/wrappers/ruby-1.9.3-p194/ruby;

设置一个脚本来让你控制 Nginx

wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

您现在可以使用此脚本控制 Nginx

sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

使用 nodejs 的最终设置

您需要的其他东西之一是 Node.js。这将帮助您在部署中编译资产

sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get -y update
sudo apt-get -y install nodejs

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,答案在 unicorn.log 文件中。这是控制器中的语法错误。您应该查看乘客日志文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 2012-02-08
      • 2018-02-14
      相关资源
      最近更新 更多