1

我第一次使用 CentOS 6.6 来部署 Rails 4 应用程序。我已经安装了所有必要的软件,如 MySQL、Ruby、Rails、Passenger、Apache2 等。我已经在 /var/www/html/index.html 中的 index.html 页面上对其进行了测试,并将其设置为 Apache 配置并完美运行。

当我部署 Rails 应用程序时,它确实在服务器上运行,但显示如下面的屏幕截图所示。

在此处输入图像描述

以下是我到目前为止所做的 Apache 配置设置。

/etc/httpd/conf/httpd.conf

  LoadModule passenger_module /home/user/.rvm/gems/ruby-2.1.2/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
    PassengerDefaultRuby /home/user/.rvm/wrappers/ruby-2.1.2/ruby
    PassengerRoot /home/user/.rvm/gems/ruby-2.1.2/gems/passenger-5.0.6
</IfModule>

我在 /etc/httpd/conf.d/ 中创建了一个文件 vhost.conf

<VirtualHost *:80>
  ServerName myipaddress
  DocumentRoot /var/www/html/projectname/public_html/current/public
  <Directory /var/www/html/projectname/public_html/current/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
     # Uncomment this if you're on Apache >= 2.4:
     #Require all granted
  </Directory>

我在命令下面运行命令

service httpd restart 
service httpd reload

Rails 应用程序既没有在服务器中运行,也没有显示任何错误。

任何解决方案将不胜感激。提前致谢。

4

1 回答 1

1

首先并始终检查 Apache 日志。这一步是必不可少的,但经常被忽视。如果这没有帮助,我会尝试一些事情:

仔细检查文档并确保您已经完全安装了Passenger,并且没有跳过任何步骤。

首先删除IfModule指令。由于您需要乘客,因此如果未加载,则需要一条错误消息。

LoadModule passenger_module /home/user/.rvm/gems/ruby-2.1.2/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
PassengerDefaultRuby /home/user/.rvm/wrappers/ruby-2.1.2/ruby
PassengerRoot /home/user/.rvm/gems/ruby-2.1.2/gems/passenger-5.0.6

您将 IP 地址作为服务器名称。确保这不会与任何其他配置(其他站点或 httpd.conf)冲突。否则,您可能只是在加载不同的页面/应用程序。

根据您的设置方式,您可能会遇到权限问题,因为您指向PassengerDefaultRubyPassengerRoot指向/home/user/.rvm. 按照惯例,这些通常在更公开的地方,例如/var/lib/gems/and /usr/bin/

确保您已root在 Rails 应用程序的config/routes.rb.

确保您已将chown -R应用程序路径添加到 apache 用户。这将帮助您进行故障排除和安全性。

完成所有这些后,再次检查日志。进行更改后,再次检查日志。

于 2015-04-22T20:26:00.403 回答