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

lissdy · 2016年01月05日 · 最后由 lissdy 回复于 2016年01月07日 · 3851 次阅读

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

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

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

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

docker 呢?

bundle package
bundle install --local

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

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

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

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

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

上 docker 吧

上 docker 吧

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

Also bundle install --path vendor/bundle

bundle install --without development:test --deployment

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

bundle install --deployment 不就行了

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

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

  1. docker
  2. 本机开代理,服务器通过代理访问外网安装 gems

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 文件指向正确。

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

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

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

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

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

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