V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
humiaozuzu
V2EX  ›  问与答

服务器 app 的部署问题

  •  
  •   humiaozuzu · 2013-07-22 16:16:17 +08:00 · 3349 次点击
    这是一个创建于 3947 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一般情况下,我们会有 staging 和 production 2个服务器。

    一般有2种部署的模式,一个是 local (dev/master branch)分别 push 到 staging 和 production

    还一个是,push 2 个 branch 到 github,staging 和 production 分别从不同的 branch 获取代码。

    后者是之前一直使用的模式,但是有不少缺点,比如
    - 需要 push 了然后 pull
    - github 偶尔会挂
    - staging 部署的次数会比较多,因为部署经过了 github 所以会在github上有message提示,多了会刷屏

    第一种方法,大家账户是怎么配置的呢?因为要通过ssh,所以push的用户和www-data用户权限如何配置呢,用不用添加到一个group呢?

    大家有什么更好的建议吗?
    15 条回复    1970-01-01 08:00:00 +08:00
    humiaozuzu
        1
    humiaozuzu  
    OP
       2013-07-22 16:23:59 +08:00
    ritksm
        2
    ritksm  
       2013-07-22 16:27:06 +08:00   ❤️ 1
    我是这么想的:
    问题一:
    比较简单的:服务器去轮询git库
    自定义程度高的:自己写一个接口,然后https://help.github.com/articles/post-receive-hooks
    问题二:
    自己搭一个呗,当然,偶尔也会挂
    问题三:
    自己搭一个同样可以解决,或者Github上Watch选项选择Ignore,好像不太好的感觉

    至于key的问题,我用了个没密码的deploy专用key。。。。不安全的赶脚
    Livid
        3
    Livid  
    MOD
       2013-07-22 16:34:44 +08:00   ❤️ 1
    你其實並不真的需要 GitHub,在自己的 server 上用 Stash 會更穩定。
    notedit
        4
    notedit  
       2013-07-22 16:38:07 +08:00   ❤️ 1
    我说一下我的做法 测试服务器和线上服务器分别有一个配置文件(可以根据环境变量来读取不同的配置),

    线上服务器的分支默认是default 测试服务器上是一个开发分支 测试没问题之后 在线上服务器merge一下 然后重启完成部署

    可能还不够智能 但实践证明还是比较靠谱的方式 还没出过什么上线的事故
    humiaozuzu
        5
    humiaozuzu  
    OP
       2013-07-22 16:58:26 +08:00
    @Livid Stash 指的是?
    Livid
        6
    Livid  
    MOD
       2013-07-22 17:01:28 +08:00   ❤️ 1
    Kai
        7
    Kai  
    MOD
       2013-07-22 17:19:51 +08:00   ❤️ 1
    其实如果再简单些,并且 git log 就足够交流的话,VPS 上随便搭个 Git server 就足够和小伙伴们一起用了吧。

    http://tumblr.intranation.com/post/766290565/how-set-up-your-own-private-git-server-linux
    bcxx
        8
    bcxx  
       2013-07-22 17:45:51 +08:00
    staging 用手动 push 呗...
    humiaozuzu
        9
    humiaozuzu  
    OP
       2013-07-22 17:57:24 +08:00
    @Livid 好的,thx 也就是说你还是走的从 git server pull 的模式?
    humiaozuzu
        10
    humiaozuzu  
    OP
       2013-07-23 00:33:36 +08:00
    @Livid 赞一个,Stash 相当好用,就是内存占用。。。。
    humiaozuzu
        11
    humiaozuzu  
    OP
       2013-07-23 11:21:01 +08:00
    @Livid 内存占用太大了,1G内存用完了,创建repo的时候失败。。。64位的机器,有什么省下内存的方法吗
    alexrezit
        12
    alexrezit  
       2013-07-23 11:23:58 +08:00
    在自己的服务器上放 repo 不就好了...
    humiaozuzu
        13
    humiaozuzu  
    OP
       2013-07-23 11:47:48 +08:00
    @alexrezit 是的啊,不过我搭建的是类似github那种级别的 web app
    Livid
        14
    Livid  
    MOD
       2013-07-23 11:55:47 +08:00 via iPhone
    @humiaozuzu 可以改一下 Java 的启动参数。不过 Stash 确实有规模。
    blue5tar
        15
    blue5tar  
       2013-07-23 22:44:19 +08:00 via iPad
    最近在研究用capistrano部署。 https://help.github.com/articles/deploying-with-capistrano。这是github使用capistrano部署的文章。 支持多台机器 git svn 分支 staging product 回滚 神马的都可以。数据库部署 服务重启。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3970 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:54 · PVG 08:54 · LAX 17:54 · JFK 20:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.