CentOS 上的 Ror 应用程序未 运行

Ror app not running on CentOS

我是第一次使用 CentOS 6.6 来部署 Rails 4 应用程序。我已经安装了所有必要的软件,如 MySQL、Ruby、Rails、Passenger、Apache2 等。我已经针对 /var/www/html/index 内的 index.html 页面对其进行了测试。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 应用程序 运行 未在服务器上运行,也未显示任何错误。

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

首先并且始终检查 Apache 日志。这一步很重要,但经常被忽视。如果这没有帮助,我会尝试一些方法:

仔细检查 the documentation 并确保您已完全安装 Passenger,并且没有跳过任何一步。

首先删除 IfModule 指令。由于您需要 Passenger,所以如果它没有加载,您需要一条错误消息。

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。按照惯例,这些通常在更 public 的地方,例如 /var/lib/gems//usr/bin/.

确保您在 Rails 应用程序的 config/routes.rb 中定义了 root 路径。

确保您已经 chown -R-ed 您的应用程序路径到 apache 用户。这将帮助您解决问题并确保安全。

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