部署 我倒是希望 Ruby 有一种像 PHP 那样热部署的框架

hi2016 · 2015年12月16日 · 最后由 tnt 回复于 2015年12月17日 · 3347 次阅读

部署更新后不用重启服务,对热部署没有需求,但是对 php 那种更新上去瞬间就能看到效果有很大的需求。 对于我这种急性子,最喜欢在服务器线上调试,一边 git push 到服务器,一边刷新浏览器。(个人站) 我试过 sinatra,重启服务大约需要 3 秒,对我来说 3 秒的等待还是太漫长了,可能是 passenger 重启耗费的时间多,sinatra 本身应该是很轻量级的。

RAILS_ENV=development

#1 楼 @msg7086 对线上环境不合适。

PHP 这么好!

Elixir 欢迎你~

unicorn reload 基本上也是瞬时更新啊

Passenger 可以使用:

touch ./tmp/restart.txt    

这种方式的机制是: Once Passenger has noticed that the file's timestamp has changed, it will restart the application.

是你的习惯有问题啊 在线上调试代码是大忌,千万别养成这种懒度的习惯,对个人成长特别不好。 其次,使用 unicorn 是可以实现热部署的

有 zero downtime 的实践,操作起来也要注意很多东西,但主要目的还是为了用户使用不受影响,不是以调试代码为目的的。

php 用 ftp 或 git 传代码,也没有解决热部署的问题吧。

能否用共享内存设置一个标记,在热部署的时候设置这个标记,热部署完成以后清除这个标记

#9 楼 @mrpasserby 同意,php 在文件更新的过程中有先后顺序,过程中,是极有可能访问报错。

#9 楼 @mrpasserby #11 楼 @huobazi FTP 在传输过程中可能会造成无法访问,git 部署是瞬间更新的

#2 楼 @hi2016 development 就是你说的热部署啊。 咱们都知道线上环境不适合热部署,但是……

#13 楼 @msg7086 速度太慢啊,特别是模板嵌套很多的时候,spree commerce 在本地的 development 环境刷新一下页面都得 5 秒以上,线上不用 production 模式没法使用。

erlang 那种 umount 旧的 保持的老会话在旧实现里,同时 mount 新的处理新的会话才能算热部署吧?

php 生产环境依赖 php 的那种"热部署"简直在拷问自己的 RP,不仅修改多个物理文件之间不能保障原子性更新,同时也无法保障 opcode cache 会同步更新 (看重性能的生产环境下启用各种 opcode cache 都是鼓励 never 刷新,或者根据 ttl/访问计数刷新), 依赖语言特性的那种"热部署"每次修改前都得去烧柱香。

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