Ubuntu 14.04 + rbenv +乘客显示公共目录

时间:2015-08-27 13:09:11

标签: ruby-on-rails ruby apache ubuntu rbenv

我有一些旧的和新的Rails应用程序(有些需要Ruby 1.8.7,有些需要1.9.2,还有一些Ruby 2.2+),我想用Passenger 5进行部署,但是我遇到了麻烦工作。

我从一个需要Ruby 1.8.7和Rails 2.1.0的旧网站开始。当我设置vhost并尝试连接到应用程序时,我只获取公共目录的索引。

我有一个部署用户,我已经设置了rbenv,一切都可以通过Webrick工作。我已经安装了乘客gem,并运行了passenger-install-apache2-module,Apache说模块已加载。

这是我的应用程序的vhost文件。

<VirtualHost *:80>
ServerName aoi.domain.com
DocumentRoot /var/www/rails/aoi.domain.com/public

PassengerRuby /home/deploy/.rbenv/versions/1.8.7-p375/bin/ruby

# Relax Apache security settings
<Directory /var/www/rails/aoi.domain.com/public>
  Allow from all
  Options -MultiViews
  # Uncomment this if you're on Apache > 2.4:
  Require all granted
</Directory>

我已经尝试过运行Apache作为www-data用户和部署用户,我已经尝试将目录chown到www-data:www-data和deploy:deploy,我已经将www-data用户添加到了部署组,以便用户应该能够使用部署用户的rbenv ruby​​,但所有这些都遇到了失败。

非常感谢任何想法。

更新了vhost配置

<VirtualHost *:80>
ServerName aoi.domain.com

PassengerRoot /home/deploy/.rbenv/shims/passenger
RailsBaseURI /
PassengerAppType Rack
<Location />
  PassengerBaseURI /
  PassengerAppRoot /var/www/rails/aoi.domain.com
</Location>


# Relax Apache security settings
<Directory /var/www/rails/aoi.domain.com/public>
  PassengerEnabled On
  PassengerRuby /home/deploy/.rbenv/versions/1.8.7-p375/bin/ruby

  Allow from all
  Options -MultiViews
  # Uncomment this if you're on Apache > 2.4:
  Require all granted
</Directory>

1 个答案:

答案 0 :(得分:0)

首先你需要设置

PassengerRoot #add the path to your passenger binaries
RailsBaseURI /
PassengerAppType Rack
<Location />
    PassengerBaseURI /
    PassengerAppRoot /var/www/rails/aoi.domain.com
</Location>
<Directory /var/www/rails/aoi.domain.com/public>
    PassengerEnabled On
    # and add your other settings
</Directory>

注意它没有指向公众,而是指向应用程序根目录。 然后将以下行添加到您的aoi.domain.com/config.ru-如果它不存在则创建它。

require "config/environment"

use Rails::Rack::LogTailer
use Rails::Rack::Static
run ActionController::Dispatcher.new