【发布时间】:2015-08-27 13:09:11
【问题描述】:
我想与Passenger 5 一起部署新旧Rails 应用程序(有些需要Ruby 1.8.7,有些需要1.9.2,有些需要Ruby 2.2+),但我无法安装工作。
我从一个需要 Ruby 1.8.7 和 Rails 2.1.0 的旧网站开始。当我设置虚拟主机并尝试连接到应用程序时,我只获得了公共目录的索引。
我有一个部署用户,我已经为其设置了 rbenv,一切都通过 Webrick 运行。我已经安装了passenger gem,然后运行了passenger-install-apache2-module,Apache 说模块已经加载了。
这是我的应用程序虚拟主机文件。
<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>
我尝试以 www-data 用户和 deploy 用户的身份运行 Apache,我尝试将目录同时添加到 www-data:www-data 和 deploy:deploy,并且我已将 www-data 用户添加到部署组,以便用户应该能够使用部署用户的 rbenv ruby,但所有这些都失败了。
非常感谢任何想法。
更新了虚拟主机配置
<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>
【问题讨论】:
-
Passenger 5 将需要一个机架文件。所以你需要一个
config.ru文件。 rails 2 网站有吗? -
不,Rails 2 应用程序没有机架文件。不过我可以做一个。
-
你能把网站更新到更高版本的 rails 2 吗?当我使用 nginx 在乘客 5 上放置一些 rails 2 应用程序时,我将它们撞到
2.3.18并且它们可以工作。rake rails:update是你的朋友 :) -
这对我来说需要对 13 个单独的应用程序进行相当多的更改。我不希望不得不做如此激烈的事情:)
-
我一直在尝试更新一个应用程序作为测试。 rake rails:update 没有显示警告,我已经更改了 environment.rb 中的 rails 版本,并将应用程序控制器从 application.rb 移动到 application_controller.rb,但我对这个错误非常满意。
/var/www/rails/aoi.domain.com/vendor/rails/activesupport/lib/active_support/dependencies.rb:469:in 'load_missing_constant': uninitialized constant Inflector (NameError)
标签: ruby-on-rails ruby apache ubuntu rbenv