部署 物理隔离的环境如何部署 ROR 项目?

lissdy · 发布于 2016年1月05日 · 最后由 lissdy 回复于 2016年1月07日 · 1481 次阅读
7749

如题,服务器环境完全物理隔离,请问各位有什么好的部署方法?

我目前的做法是编译安装ruby,将需要的gems在本地安装好之后scp至服务器,在服务器执行gem install *.gem进行离线安装。

但是,gem包有依赖关系,离线安装似乎是按照包名顺序安装的,所以gem install *.gem并不能一次成功安装所有的gem。。。

共收到 26 条回复
3
lgn21st · #1 · 2016年1月05日 1 个赞

也许可以试试看用虚拟机,做虚拟机镜像的方式部署。

24215
james_gone · #2 · 2016年1月05日

docker呢?

983
chucai · #3 · 2016年1月05日 4 个赞
bundle package
bundle install --local
15420
pathbox · #4 · 2016年1月05日

#3楼 @chucai 离线部署gem

983
chucai · #5 · 2016年1月05日

#4楼 @pathbox 是啊 本地打包,服务器上安装

7733
yukihiro_matz · #6 · 2016年1月05日

物理隔离? gem可以不用装系统目录的

3962
nowherekai · #7 · 2016年1月05日

gemstash?

244
fsword · #8 · 2016年1月05日

完全物理隔离是不可能的,比如你不是还可以scp嘛,楼主应该说清楚是怎样的隔离方式,比如服务器是否可以自己访问外网,或者受限访问外网(受到类似国家防火墙的阻挡)等等

7749
lissdy · #9 · 2016年1月05日

#3楼 @chucai 正解!感谢!!!

7749
lissdy · #10 · 2016年1月05日

#8楼 @fsword scp也必须在内网才可以,服务器完全不能访问外网的呢

4938
dy1901 · #11 · 2016年1月05日

上docker吧

7733
yukihiro_matz · #12 · 2016年1月05日

上docker吧

7733
yukihiro_matz · #13 · 2016年1月05日

#11楼 @dy1901 docker 是不是也得自己搞镜像吧?

15139
msg7086 · #14 · 2016年1月05日

Also bundle install --path vendor/bundle

775
nouse · #15 · 2016年1月06日

bundle install --without development:test --deployment

96
qqrrm · #16 · 2016年1月06日

我都是去网上一个一个下载gem,再一个一个local安装的. 公司网络物理隔离,想学习只能麻烦些了.

23529
mizuhashi · #17 · 2016年1月07日

bundle install --deployment不就行了

4938
dy1901 · #18 · 2016年1月07日

#13楼 @yukihiro_matz 是,用docker gem以外的依赖会简单一点,比如如果你需要es或者redis服务来支撑的话

4938
dy1901 · #19 · 2016年1月07日

#13楼 @yukihiro_matz 你这头像和用户名太高大上了~

27
numbcoder · #20 · 2016年1月07日
  1. docker
  2. 本机开代理,服务器通过代理访问外网安装 gems
96
jimrokliu · #21 · 2016年1月07日

1.在服务器上安装ruby,安装bundle的gem。 2.确保本地安装后rails 的目录下面存在vendor/cache目录,然后整个工程上传到服务器。 3.最后在工程目录下执行:

bundle install --local --gemfile Gemfile --path #{your_install_path}/shared/bundle --deployment --quiet --without development test

完成后可以看一下,存在一个.bundle的隐藏目录,里面的config文件指向正确。

7749
lissdy · #22 · 2016年1月07日

#21楼 @jimrokliu 问题已经解决啦,跟您的方法一样~

7749
lissdy · #23 · 2016年1月07日

#20楼 @numbcoder 项目比较急,来不及用docker,不过确实要研究起来咯_^

8047
kingguy · #24 · 2016年1月07日

先在有网络的地方执行bundle,然后把ruby整个文件夹复制过去覆盖掉原来的,只在windows下测试过

2
huacnlee · #25 · 2016年1月07日

不能上网的服务器问题大啊,未来一堆坑

7749
lissdy · #26 · 2016年1月07日

#25楼 @huacnlee 是啊,碰到坑还要切外网出来找资料,环境也是够恶劣。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册