zoukankan      html  css  js  c++  java
  • [转] 使用git自动部署简单网站

    要做什么

    假设你有一个博客,有一台网站服务器(或者很多台作负载均衡的服务器),当你的博客要升级时,你可能要在你自己的电脑上写好代码(可能包括本地调试好),然后提交到git(或svn),然后在每个服务器中checkout一份代码并重启服务器应用……

    这里要介绍的是一种直接在本地提交代码,即可自动完成服务器部署的方法。

    怎么做

    假设你有网站主机(后面统称线上机):

    user:user
    host:1.2.3.4
    password:passwd
    

    并且确保你的本地开发机器(后面统称开发机)与线上机均已安装好Git(不是Github)

    1. 线上机增加三个文件夹:

    mkdir ~/git-directory.git
    mkdir ~/deploy-directory-1
    mkdir ~/deploy-directory-2
    

    其中git-directory.git作为代码仓库,即开发机的代码统一提交到这里存放.

    deploy-directory-1和deploy-directory-2是开发机上的部署目录,比如测试目录和正式线上内容目录

    2. 线上机git仓库初始化:

    cd ~/test.git
    git init --bare
    cd hook
    cp post-receive.sample post-receive
    

    3. 在post-receive文件中写入以下内容:

    #!/bin/sh
    #
    DIR_ONE=/home/user/deploy-directory-1
    DIR_TWO=/home/user/deploy-directory-2
    #
    git --work-tree=${DIR_ONE} clean -fd
    git --work-tree=${DIR_ONE} checkout --force
    #
    git --work-tree=${DIR_TWO} clean -fd
    git --work-tree=${DIR_TWO} checkout --force
    

    4. 本地机增加文件夹并克隆远程git仓库:

    mkdir whatever
    cd whatever
    git init
    git remote add origin user@1.2.3.4:/home/git/test.git
    

    注:此处会要求输入线上机器的登陆密码(passwd)

    最终效果

    本地机目录可以自由增删文件,并提交到线上机git仓库.

    例如:

    touch README
    git add README
    git commit -m 'first blood' README
    git push origin master
    

    此步操作完成后,查看线上机中第一步建立的那几个目录(git-directory.git、deploy-directory-1、deploy-directory-2),是不是多了一个你刚刚在本地创建的文件README?

    还有一步

    如果你的网站比较简单,到这一步就已经是完事了。

    试想上面的例子,假如你的网站是静态网站,在deploy-directory-1、deploy-directory-2这两个文件夹中部署了同样的网站,一个用于测试,一个是真实环境,这样你就已经可以直接提交文件就完成上线了,是不是挺爽的?

    事实上,通过这种方式,实际上git-directory.git就成了你的一个git服务器,上面第三步编辑的post-receive就是一个 钩子(hook)文件,实际上就是一个可执行的shell脚本,当你在你的本地提交代码(git push)时,git服务器收到你的文件提交同时会触发这个钩子的动作,也就是执行这个shell脚本。说到这里,接下来这个shell脚本能做什么,重 启服务器?触发构建?把文件部署到别的机器上……尽情地发挥你的想象吧!

  • 相关阅读:
    NODE_PATH的疑难杂症(转)
    教你如何做一个优雅的Ecmascripter /转
    MDLMaterial Design Lite框架推荐
    GPU硬件加速原理 /转
    透明遮罩图层VS高斯模糊滤镜 效果分析
    QML vs WEB
    PixelMatorPro快捷键大全(osx)
    睡眠排序、面条排序、猴子排序...........................
    全栈设计模式套餐MVVM, RESTful, MVC的历史探索
    2018博客之星评选,我非常需要您宝贵的一票!♪(・ω・)ノ
  • 原文地址:https://www.cnblogs.com/qiangxia/p/5344215.html
Copyright © 2011-2022 走看看