3

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

在 Apacheerror.log没有错误,在我的应用程序中log/production.logConnecting 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>

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

4

2 回答 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 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
于 2012-09-09T14:00:15.120 回答
0

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

于 2013-03-19T16:33:20.523 回答