0

我需要将 Rails 3/Phusion Passenger/Apache2 应用程序部署到 Ubuntu 12.04 服务器,而无需在服务器上安装任何 gem。

我可以安装任何 Debian 软件包。

如何在我的项目中包含所有需要的 gem(包括 Rails,从 github 上的 git 项目安装的几个 gem,以及从 ruby​​gems.org 安装的一堆常规 gem)以便在部署后,Passenger 会找到 Rails 和所有宝石和快乐?

(我知道很多人可能会好奇我为什么要这样做。不幸的是,我不能谈论这个。抱歉。)

以下是一些没有奏效的事情。如果稍微修改一下,其中一个可能会起作用,我不知道:

方法一失败:

  1. 在 Ubuntu 12.04 开发机器上。红宝石 1.9.3。捆绑器 1.3.5。捆绑包——全部。Git 提交。
  2. 在 Ubuntu 12.04 服务器机器上(无法从 Internet 安装 gem)。部署项目文件并安装包(apache2、ruby1.9.3、ruby-bundler、rubygems、libapache2-mod-passenger,它带来了 ruby​​1.8)。bundle -v 提供 Bundler 版本 1.0.15(来自 ruby​​-bundle 包)。确保也部署了来自开发机器的 .bundle/config 文件。bundle install --local 尝试从 github 下载 git gem,所以失败了。
4

3 回答 3

1

尝试使用bundle package --all,这应该将您的宝石保存到./vendor/cache. 您还可以在本地环境中解压缩 gemgem unpack --target vendor以将它们保存在供应商目录中。然后,您可以在 Gemfile 中提供一个位置,以便您的应用程序可以找到 gem。您可以不使用网络安装gem,还是真的不允许以任何方式安装gem?

来源 1、2 _

于 2013-10-20T21:03:10.937 回答
0

尝试使用pkgr工具,它可以将您的 Rails 应用程序和所有依赖项转换为一个可安装的 Debian 软件包。

于 2013-10-21T17:01:17.277 回答
0

update-alternatives --install /usr/bin/ruby ruby​​ /usr/bin/ruby1.9.3 200 update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.3 200

(Phusion Passenger 并不关心这一点,但对于我们将要安装的 gem 以及使用 Rails 控制台或将来的任何东西进行调试来说,这可能是一个好主意。)

  • gem install --local vendor/bundle-1.3.5.gem

  • 捆绑安装--local

  • 设置所有其他 Apache 配置...

  • 服务 apache2 重启

于 2013-10-21T22:45:58.843 回答