我需要将Rails 3 / Phusion Passenger / Apache2应用程序部署到Ubuntu 12.04服务器,而无需在服务器上安装任何gem。
我可以安装任何Debian软件包。
如何包含所有需要的宝石(包括Rails,从github上的git项目安装的几个宝石,以及从rubygems.org安装的一堆常规宝石)在我的项目中,这样,部署之后,Passenger会找到Rails和所有的宝石并且很开心吗?
(我知道很多人可能会好奇我为什么要这样做。不幸的是,我不能谈论这个。很抱歉。抱歉。)
以下是一些没有效果的事情。如果稍微修改一下,其中一个可能会起作用,我不知道:
方法1失败:
答案 0 :(得分:1)
尝试使用bundle package --all
,这应该将您的宝石保存到./vendor/cache
。您还可以使用gem unpack --target vendor
在本地环境中解压缩宝石,以将它们保存在供应商目录中。然后你可以在Gemfile中给出一个位置,以便你的应用程序可以找到宝石。您是否可以不使用网络安装宝石,或者您是否真的不允许以任何方式安装宝石?
答案 1 :(得分:0)
尝试使用pkgr工具,它可以将您的Rails应用和所有依赖项转换为单个可安装的Debian软件包。
答案 2 :(得分:0)
从http://rubygems.org/downloads/bundler-1.3.5.gem下载bundler 1.3.5 gem并将其放入vendor /
在Ubuntu 12.04 vm中,做捆绑包--all。 Git commit and push。
在Ubuntu服务器上克隆。
apt-get安装apache2,ruby1.9.3等等(不是rubygems或ruby-bundler。两者都提供旧版本的Rubygems和Bundler。ruby1.9.3中包含更新版本的rubygems包)。
按照http://www.modrails.com/documentation/Users%20guide%20Apache.html#install_on_debian_ubuntu
确保将Ruby和Rubygems版本设置为ruby和gem命令:
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并不关心这一点,但对于我们即将安装的Gems以及使用Rails控制台或未来的任何东西进行调试可能是一个好主意。)
gem install --local vendor / bundler-1.3.5.gem
捆绑安装--local
设置所有其他Apache配置...
service apache2 restart