大家是如何部署应用的?

大家在日常工作中是如何部署应用的?

  • 用到了哪些linux工具和脚本?
  • 用到了哪些第三方工具(forever, pm2)?
  • 哪些日志比较重要,一般是如何搜集的?备份?
  • 需要注意哪些问题?

当我的代码要真正要对用户负责的时候,经验不足的缺点便体现了出来,希望能向各位前辈取取经。

阅读 5.3k
4 个回答

这点进来看问题范围远超部署了啊……

这块我实际经验也并不充分,只能大概谈谈思想,纸上谈兵

  • 自动化任何超过三次的重复工作,当然还有半夜会要你起床干活的工作

    • 把代码放到服务器上然后重启cgi server
    • 如果你用的语言需要编译
    • 配置正式环境的配置文件
    • 进程挂了要去重启
    • 日志要定时收集,及时释放磁盘空间
    • 可能的话,自动化测试。尤其是基础/共用的代码,可以考虑从bug的回归测试做起
  • 日志当然是涉及用户资产的最重要了。有利于你定位潜在问题的次重要

    • 最重要的是因地制宜,根据日志重要程度、查日志的需求多少、日志量等各个因素综合考虑
    • 可能的方案有 先写本地磁盘,然后cron定期汇总归档
    • 也可以建立log service,其他应用请求log service来记日志。然后log service集中管理所有日志
    • 有些重要日志可以考虑记DB里然后热备一份

至于工具集,代码相关的可以善用git/svn等源码控制的hook触发。环境/编译等相关的各种语言几乎都有自己的make之类的东西。服务/进程相关的你也提了forever和pm2。总之工具集不是大问题,重要是你要想清楚该做些啥,战略先要正确。至于怎么做,工具哪个好用之类的具体战术,google一下 trends比一下,github star比一下,再看看各自的常见的问题(坑)就差不多了

1.我一般用的是putty
2.虽然node-forever模块,是非常伟大的模快,但是我还是要吐槽下
首先它不支持集群,进程管理配置的支持差,有限的监控和日志功能等
我建议用pm2

我记得pm2是按照termcaps-HTOP的方式管理的
通过pm2 list命令来观察所有运行的进程以及它们的状态已经足够好了.但是怎么来追踪它们的资源消耗呢?别担心,用这个命令:
$ pm2 monit
你可以得到进程(以及集群)的CPU的使用率和内存占用.
注意下:node-usage 到目前为止还不支持MacOS(随便什么性能要求),不过它在Linux下运行良好.
https://github.com/Unitech/pm2.
3.日志方面pm2 提供实时集中log处理
我以前用过的是双机热备。你可以去看看。

自己写了一个上线部署系统walle-web 瓦力,现在除了自己公司用之外,开源出来也有其它公司开始使用了。测试环境、仿真环境、生产环境,开发者可随意在测试验收git feature分支,仿真和生产环境同时多个项目多个用户同时上线互不干扰。其它更多的功能就不啰嗦,可以自己host来体验下,开箱即用哦:) 或者先去瓦力主页了解下。

有问题或者需求可以提,如果好的话,会加入walle的,到时再fork使用即可。

宣传栏