用git部署网站代码到生产环境VPS

作web开发时,之前都是写好了一个新功能要发布到服务器上都是使用FTP上传覆盖原来的代码,这样作很麻烦,首先要打开FTP程序,而后进入指定文件夹,而后上传,并且用FTP上传常常容易出错老是有个别文件会由于权限或者各类奇葩的缘由上传失败。。。。。。用git来部署就不会有这样的问题。
git

若是你的项目是一个团队在作,可能还须要一个公共仓库如Github或者GitCafe,git.oschina.net,git.csdn.net等,使用他们也能够部署到远程的服务器。方法是,设置GitHub等的hook(国内git网站叫push钩子),它的做用是,每次咱们从本地push改变到这些仓库时,这些仓库会向指定链接(例如本身的vps服务器)发生post请求(不止一种请求,但经常使用post请求,请求的内容也因仓库不一样而不一样),咱们能够设置本身的vps生产服务器一旦接收到这个post请求就开始部署,能够写bash脚本或者Python脚本实现,或者直接网上找别人写好的。web

还有另外一种方法则是不适用公共仓库来发生hook而是直接使用vps生产服务器来作这些事情(代码管理+部署生产环境的代码),下文便讨论如何实现。bash

建立本身的仓库

cd /var
mkdir git && cd git
mkdir your_site.git && cd your_site.git
git init --bare

--bare的意思是,该文件夹是咱们的代码仓库,它将不会放源代码而只是作版本控制。服务器

Hook钩子

咱们将会使用post-receive钩子,更多钩子及含义能够参考git文档 在your_site.git文件夹中dom

ls

你能够看到有hooks文件夹已经为咱们建立好了,并且里面也有各类钩子的样例ssh

cd hooks

建立咱们本身的post-receivepost

cat > post-receive

按回车后提示咱们继续输入,接下来输入的动向都会被放入post-receive文件中。网站

#!/bin/sh
git --work-tree=生产环境网站文件夹位置 --git-dir=/var/git/your_site.git checkout -f

输入完成后按ctrl + D 保存,git-dir指的是仓库的地址, work-tree则是存放代码的位置,也就是咱们的网站的源代码的位置。 接下来则是要保证它能够运行:spa

chmod +x post-receive

本地

通常状况是你已经有了本身的git项目了,那么只须要添加vps的仓库地址就好了.net

git remote add myVPS-sitename ssh://user@mydomain.com/var/git/your_site.git

'myVPS-sitename'只是这个远程链接的名称,你能够同时有多个远程链接,每次push的时候指定名称便可将代码上传到不一样的仓库。

若是你本地尚未项目代码:

cd 项目地址
git init

添加一个README.ME文件后

git add .
git commit -m "项目初始"

接下来咱们即可以将代码push到vps了:

git push myVPS-sitename master

master指定的是master分支,若是你有其余分支也能够push其余分支。.

相关文章
相关标签/搜索