使用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

可以强化的地方

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

时间: 2024-09-30 13:20:58

使用git代替FTP部署代码到服务器的例子_相关技巧的相关文章

Git 教程之服务器搭建详解_相关技巧

Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 接下来我们

Git 教程之远程仓库详解_相关技巧

Git 远程仓库 Git 并不像 SVN 那样有个中心服务器. 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据放到一台其他开发人员能够连接的服务器上. 本例使用了 Github 作为远程仓库,你可以先阅读我们的 Github 简明教程. 添加远程库 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下: git remote add [shortname] [url] 本例以Github为例作为远程仓

Git 教程之安装配置详解_相关技巧

Git 安装配置 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://git-scm.com/downloads Linux 平台上安装 Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具. 在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系

Git里多种撤销操作的最佳方法_相关技巧

前言 相信大家都知道任何版本控制系统的一个最有的用特性就是"撤销 (undo)"你的错误操作的能力.在 Git 里,"撤销" 蕴含了不少略有差别的功能.当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照:之后,你可以利用 Git 返回到你的项目的一个早期版本. 撤销一个"已公开"的改变 场景: 你已经执行了 git push, 把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销

Git的使用规范流程总结_相关技巧

下面是ThoughtBot 的Git使用规范流程.我从中学到了很多,推荐你也这样使用Git. 第一步:新建分支 首先,每次开发新功能,都应该新建一个单独的分支. # 获取主干最新代码 $ git checkout master $ git pull # 新建一个开发分支myfeature $ git checkout -b myfeature 第二步:提交分支commit 分支修改后,就可以提交commit了. $ git add --all $ git status $ git commit

提高代码可读性的十大注释技巧分享_相关技巧

本文讲述了提高代码可读性的十大注释技巧.分享给大家供大家参考,具体如下: 很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧: 1. 逐层注释 为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如: 针对每个类:包括摘要信息.作者信息.以及最近修改日期等: 针对每个方法:包括用途.功能.参数和返回值等. 在

在Linux下搭建Git服务器的方法详解_相关技巧

前言 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 我打算自己搭建git服务器.虽然目前已经有很不错的git工具,如github,coding.net等,但是为了安全,减少限制和开销,还是放在自己的服务器为好.下面给出安装配置的过程,有问题欢迎讨论和交流,我会及时回复的. 第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不

Javascript 直接调用服务器C#代码 ASP.NET Ajax实例_实用技巧

在MS Ajax中,JS与C#交互的一种方式就是调用WebService,该WebService可以ASMX的也可以是WCF的,不论哪种方式,系统都会自动为开发者生成代理的JS类.实现方法如下: 1.        建立一个网站,并在其中添加一个WCF服务(这里一定要选择Ajax-Enabled WCF Service),如下图所示: 2.        IDE会自动为我们生成一个SVC文件,是对外的接口,以及该SVC对应的后台实现类,该类文件会被放在App_Code下,如下图所示: 3.修改该

C# FTP,GetResponse(),远程服务器返回错误_实用技巧

FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri 2.设置ftp的执行方法(上传,下载等) 3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等) 4.设置登录验证(用户名,密码) 5.执行请求 6.接收相应流(如果需要的话) 7.如果没有打开的流,则关闭ftp请求 其中一些重要的属性如下: ·Credentials - 指定登录ftp服务器的用户名和密码. ·KeepAlive - 指定连接