我有一些旧的和新的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>
答案 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