使用git代替FTP部署代码到服务器的例子

 更新时间:2014年09月06日 09:52:16   作者:jser.me  
这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量、节省时间,需要的朋友可以参考下

本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和scp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题

1.全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量
2.多台服务器的重复上传
3.代码更新后,后续的一些操作不够自动化

上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shell脚本, 有没有更简单更高效的方法呢?有,那就是使用版本版本管理工具的hook!

这里我说是版本管理工具而不是git,是因为svn、git、hg都是有相应的hook的, 原理大同小异。下面是Git详细的思路。

服务器端操作

首先创建一个裸库,为什么是裸库?因为这个库不是真正用来修改的,我们也不允许在服务器上修改代码,我们只是把它当作一个代码中转的地方:

复制代码 代码如下:

cd gitroot
mkdir projectname
cd projectname
git init --bare

添加我们的hook

复制代码 代码如下:

cd /hooks
touch post-receive

编辑post-receive的内容为下面的,其中sites/projectname,是我们存放网站代码地方
复制代码 代码如下:

env -i git archive master | tar -x -C /sites/projectname
echo "远程更新完毕"

本地git的操作

本地我们只需要添加一个远程库,在需要部署的时候push到远程库就行了,下面我们添加了一个名为publish的远程库

复制代码 代码如下:

git remote add publish username@xx.xx.xx.xx:/home/gitroot/projectname
git push publish master

可以强化的地方

这里演示的是一个简单的小网站的部署过程,复杂的情况下我们还可以添加静态资源版本更新,服务器重启等等,举一反三, 最大程序自动化我们的工作。

相关文章

  • 使用Git工具实现上传本地项目到GitHub的方法

    使用Git工具实现上传本地项目到GitHub的方法

    这篇文章主要介绍了使用Git工具实现上传本地项目到GitHub的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Mac如何给应用单独设置语言

    Mac如何给应用单独设置语言

    这篇文章主要介绍了Mac如何给应用单独设置语言,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Visual Studio和Visual Studio Code之间有什么区别

    Visual Studio和Visual Studio Code之间有什么区别

    本文给大家介绍的是Visual Studio和Visual Studio Code之间有什么区别,希望对大家的学习能够有所帮助
    2020-02-02
  • WebStorm 遇到的问题总结

    WebStorm 遇到的问题总结

    这篇文章主要介绍了WebStorm 遇到的问题总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详解文法的定义与分类(编译原理)

    详解文法的定义与分类(编译原理)

    计算机的语言具有严格的语法、语义,易于形式化的特征,这篇文章主要介绍了详解文法的定义与分类(编译原理),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 提高编程技能的11个建议

    提高编程技能的11个建议

    当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识。只要你通过了这一困难的学习阶段,你就会发现一个全新的世界
    2014-08-08
  • chatGPT使用及注册过程中常见的一些错误解决方法(所有报错汇总)

    chatGPT使用及注册过程中常见的一些错误解决方法(所有报错汇总)

    这篇文章主要介绍了chatGPT注册报错及使用过程中报错汇总及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • JetBrains公司三大编辑器迭代循环模板快捷键详解

    JetBrains公司三大编辑器迭代循环模板快捷键详解

    这篇文章主要介绍了JetBrains公司三大编辑器迭代循环模板快捷键,如果快捷键无用,请到keymap中调整自己的快捷键,或者查看是否有应用占用了该快捷键,需要的朋友可以参考下
    2022-04-04
  • 一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法

    一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法

    这篇文章主要介绍了一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 关于git commit 命令解读

    关于git commit 命令解读

    这篇文章主要介绍了关于git commit 命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论