使用git来管理web开发;

我们需要做的事情 :

1,在服务器建立版本仓库;

2,在服务器建立稳定版本的站点,编写版本仓库的hooks;

3,在开发服务器上提交开发版本;

下面一步一步来:(注意建立新用户,如git)

1,在服务器上建立版本管理仓库;假定目录为 /git/,切换到该目录下;建立一个工程

cd /git/
mkdir project.git
git init --bare

2,在服务器上建立稳定版本的站点,例如目录是 /home/www ; 下面是重点,写钩子hooks:

cd /git/project.git
cp hooks/post-receive.sample hooks/post-receive
vim hooks/post-receive
#加入下面代码
GIT_WORK_TREE=/home/www git checkout -f

3,在开发服务器上提交开发版本;假设目录为/git/project/

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub git@yourserver
git init
git add *
git commit -a -m "init a version"
git remote add origin git@youserver:/git/project.git
git push origin master

这个时候,查看一下 /home/www下,文件应该已经更新了...

华丽的分隔线


  这种方法在生产服务器上也建立了版本管理,这样会消耗服务器资源,还可以带来源代码泄露(例如某个开发版本将密码都写了进去,后果不堪设想)等其他安全隐患,所以在后面的开发中,我们采用了Git+Rsync的架构,内网开发服务器架设GitLab进行源代码管理 ,同时搭建rsync客户端进行代码同步;生产服务器只使用Rsync服务端监听端口接收同步请求。

GitLab的搭建可以参考:

  https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos

  http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/

  相对于Gitlab,我更喜欢使用Gitolite+Gitweb来进行代码审阅,因为他们的安装更简单一点,而且,Gitweb的代码很简炼,我们可以很方便地进行功能的添加,例如我们之前添加的增量更新的功能。

Rsync的搭建可以参考这篇文章。

写一个shell脚本或者使用php进行网页命令调用来同步代码是一个很不错的想法,我们用的是php执行shell命令来进行同步的。


  另外,如果想在多台生产服务器上进行代码同步,可以使用rsync+inotify进行实时同步,这样,在内网开发服务器向一台主服务器同步代码后,inotify监控脚本可以同步其他生产服务器,同步。

git web开发版本管理的更多相关文章

  1. 分享一篇 Git Web 开发流程

    分享一篇 Git Web 开发流程 web 项目如何进行 git 多人协作开发 https://segmentfault.com/a/1190000018165757

  2. 2016 Web开发资源工具大搜罗

    来源于:https://zhuanlan.zhihu.com/p/22730771 作者:余博伦链接:https://zhuanlan.zhihu.com/p/22730771来源:知乎著作权归作者所 ...

  3. 2016 Web 开发资源工具大搜罗

    原文链接: 100+ Awesome Web Development Tools and Resources Web的迅猛发展对于开发者来说既是一件好事也是一件坏事.不断紧跟潮流学习新的技术.编程语言 ...

  4. 2019 Web开发学习路线图

    以下 Web 开发人员学习路线图是来自 Github developer-roadmap 项目,目前已经有繁体版翻译 developer-roadmap-chinese. 主要有三个方向,分别为前端开 ...

  5. [转帖]2019 简易Web开发指南

    2019 简易Web开发指南     2019年即将到来,各位同学2018年辛苦了. 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的技术 ...

  6. git web 服务器的搭建【转】

    转自:http://blog.csdn.net/transformer_han/article/details/6450200 目录(?)[-] git服务器搭建过程 需求 硬件需求一台Ubuntu或 ...

  7. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?   什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...

  8. Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖

    需求描述: 本人大婚将至,女朋友说“现在都流行在微信上发电子请帖了,你不是技(cheng)术(xu)宅(yuan)嘛,不会连这个都搞不定吧” 本人嘴上说这等小事何足挂齿,但心里还是七上八下的,虽然自认 ...

  9. Git&Gitlab开发流程与运维管理

    Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...

随机推荐

  1. Python爬虫实战(三):爬网易新闻

    代码: # _*_ coding:utf-8 _*_ import urllib2 import re #import sys #reload(sys) #sys.setdefaultencoding ...

  2. JavaScript Array 对象常用方法

    <script type="text/javascript"> //shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined var ar ...

  3. Python+H5py实现将SVHN样本库转换为FasterRcnn训练样本

    一.上代码 import os import h5py svhnPath = 'D:\\Project\\AIProject\\SVHNClassifier\\data' def loadSvhn(p ...

  4. 基于TQ2440开发板的WiFi模块的使用经验总结

    一.软.硬件资源准备: 内核版本:linux-2.6.30.4 交叉编译器版本:4.3.3 wpa_supplicant工具:wpa_supplicant-0.7.3.tar ; openssl-0. ...

  5. 查看JAVA的class二进制文件的方法

    hexdump -C filename可以查看二进制文件. 比如java的Test.java public class Test{ public static void main(String[] a ...

  6. 【Thinking in Java】读书笔记

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6480258.html 第三章:操作符 1:基本数据类型的比较用 ==.!=,引用类型的==.!=是针对地址的比 ...

  7. nodejs直接调用grunt(非调用批处理)

    在windows下,我们做js构建工作,都习惯安装grunt-cli,只需要命令行grunt...一切构建工作都自动完成了.这已经是很完美的情况了,不过最近要做一个服务器版的自动化构建系统,在node ...

  8. lvalue & rvalue

    https://www.youtube.com/watch?v=UTUdhjzws5g 作者:知乎用户链接:https://www.zhihu.com/question/50652989/answer ...

  9. php函数method_exists() 与is_callable()区别

    php函数method_exists()与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有method_exi ...

  10. YAML格式的语法

    基本格式 用空格缩进, 不能用tab 用#标记注释 列表: 用短划(-)标记元素 映射: 用冒号(:)分隔key, value. 如果写在一行, 需要用逗号分隔并前后加花括号 字符串: 不加引号, 加 ...