Apache和Passenger无法加载Rails应用程序

3
我正在开发一个Rails应用程序,并尝试配置它部署在的Web服务器。 我的问题是页面无法加载。
在Apache的error.log中没有任何错误,在我的应用程序的log/production.log中只有一行Connecting to database specified by database.yml出现。
我在应用程序的public文件夹中没有index.html,而且该应用程序在开发环境中运行良好。
我正在使用安装了RVM的Ubuntu 12.04 Amazon实例。 在我的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 中有没有任何线索? - Fareesh Vijayarangam
我认为你缺少RailsEnv生产环境(或其他环境)。 - simonmorley
@simonmorley RailsEnv生产环境不应该是默认的吗?无论如何,我尝试了一下,但什么也没有改变。 - Marco Sero
@FareeshVijayarangam 不,它完全是空白的。 - Marco Sero
@simonmorley 是的,网站已启用 :) 没有404或500等错误,只是一个无限加载循环。 我现在考虑卸载所有内容并重新安装整个系统。 - Marco Sero
显示剩余3条评论
2个回答

2

我决定重新安装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

安装 Apache 和 Passenger 模块

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

使用Node.js进行最终设置

您需要安装Node.js以便在部署时对资源进行编译,这将非常有用。

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

0

我曾经遇到过同样的问题,答案在unicorn.log文件中。这是控制器中的语法错误。你应该查看passenger日志文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接