我的运维之路

作者: yubang | 来源:发表于2017-01-10 01:59 被阅读241次
    下面写的是本人三年以来的部署经验,仅仅是个人经验之谈,如有不足欢迎指出。
    
    直接把修改的文件覆盖线上文件

    想想一开始的时候,刚学会独立开发一个网站,然后服务器跑一个tomcat,然后每次修改后都是打包成一个war,然后传上服务器覆盖,重启tomcat。

    覆盖文件的发布方式
    使用git来更新文件

    因为后来使用php来开发,然后每次修改都会涉及一堆文件,然后那个时候由于上传的图片跟代码都在同一个目录,所以不能发布新版直接替换整个目录,但是一个一个文件的手工替换又很容易出现遗漏,而导致系统无法正常使用。

    刚好这个时候学会使用git来管理代码,所以每次发布版本都是在服务器pull最新的代码,然后手动重启服务,这样子就避免了覆盖文件遗漏的问题。

    git更新文件部署
    进阶级使用git自动部署

    上面两种阶段只能说是手工部署,完全还算不上运维。进阶版是如何出现的呢?某一段时间,由于涉及微信公众号开发,代码需要提交到服务器来测试。那么在调一个功能的时候,需要频繁更信服务器代码,及重启服务来测试,那么就浪费大量的时间来手动部署了。然后这个时候了解到我们使用的第三方git托管平台提供钩子功能,push代码之后可以发出一个http请求到指定url,那么就是说我们可以在接收到请求调用shell命令拉取代码及重启服务,git自动部署目标实现。

    git自动部署应用
    服务器环境问题

    回想这几年,经过自己手的服务器估计都有十多台了,也不知道配置了多少次各种各样的环境。由于都是linux系统,所以一开始都是一条命令一条命令的安装各种服务器软件。到了一定程度之后就写成shell脚本,然后每次直接运行shell脚本即可。

    用shell脚本服务器环境
    第三方paas平台

    由于每次都要配环境,觉得挺烦的。然后发现有第三方的paas平台,只需要提交代码上去,然后点击一下发布即可,节省了99%的工作量,唯一的问题是有些特殊环境不提供支持。

    第三方paas平台
    使用docker来运维

    只需要编写好dockerfile,然后把应用打包成docker镜像。然后通过marthon实现分布式部署即可。

    docker实现分布式部署
    总结

    <small>也许你看上面的内容觉得不知所云,那么下面简单说明上面在说什么</small>

    1. 一开始,采用直接覆盖文件的方式更新版本
    2. 使用git手动拉取更新代码,避免手工一个文件一个文件上传到服务器
    3. 利用git托管平台的钩子来自动更新服务器代码
    4. 配置服务器环境太麻烦了,直接使用第三方pass平台
    5. 第三方paas平台有太多限制,所以基于docker自己实现一套paas平台

    <strong>来自作者的一句话:尽量让运维自动化,手工运维风险极高!</strong>

    相关文章

      网友评论

      • slimsallen:新手才到第一阶段。如果用git话 代码传上去不会暴露api吗
        slimsallen:@yubang 好的 谢谢
        yubang: @音乐君 可以内网自己搭建gitlab
      • 7圈电池:厉害
        yubang: @Guddqs 😀😀😀
      • oraoto:我们还只做到第3种,国内PASS局限太大,要在团队里推docker也是问题……
        yubang: @oraoto docker又提高了门槛,本来玩Linux的人也不多(对于小团队小企业),在若干个团队推过,靠自己填坑

      本文标题:我的运维之路

      本文链接:https://www.haomeiwen.com/subject/qvdcbttx.html