git自动更新网站代码
1.实现过程
在linux上安装git服务、创建源版本库、从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录下的代码。
2.安装git服务
[root@xxx ~]# cd /usr/local/src[root@xxx src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.15.2.tar.gz[root@xxx src]# tar -zxvf git-2.15.2.tar.gz[root@xxx src]# cd git-2.15.2[root@xxx git-2.15.2]# ./configure --prefix=/usr/local/git[root@xxx git-2.15.2]# make && make install
对git config进行配置,表明当前是哪个用户进行的git操作[root@xxx git-2.15.2]# git config --global user.name xincanzhe[root@xxx git-2.15.2]# git config --glocal user.email 1900103003@qq.com[root@xxx git-2.15.2]# git config --list
3.创建源版本库
创建git管理的用户和组,对git服务进行管理。因为该git账号会被很多人使用进行版本库的克隆,为了安全,禁止使用git用户进行ssh登录[root@xxx git-2.15.2]# groupadd git[root@xxx git-2.15.2]# useradd git -g git[root@xxx git-2.15.2]# passwd git[root@xxx git-2.15.2]# vim /etc/passwd 将git:x:1001:1001::/home/git:/bin/bash改为git:x:1001:1001::/home/git:/bin/git-shell
自定义的总版本库目录:/home/git/gitrepos测试项目的版本库目录:/home/git/gitrepos/test[root@xxx git-2.15.2]# cd /home/git/gitrepos/test[root@xxx test]# git init --bare #源版本库应该为裸版本库,即需要加参数--bare[root@xxx test]# chown -R git:git /home/git/gitrepos #修改版本库所属用户和组,即git
3.从源版本库克隆得到网站目录
自定义网站目录:/data/wwwroot/test[root@xxx wwwroot]# git clone git@48.107.56.223:/home/git/gitrepos/test #格式 git clone 用户@IP:源版本库目录[root@xxx wwwroot]# chown -R git:git /data/wwwroot/test #修改网站所属用户和组,即git
4.hooks机制
[root@xxx wwwroot]# vim /home/git/gitrepos/test/hooks/post-receive[root@xxx wwwroot]# chmod +x /home/git/gitrepos/test/hooks/post-receive
post-receive文件内容为:#!/bin/bashDIR=/data/wwwroot/testgit --work-tree=${DIR} clean -fdgit --work-tree=${DIR} checkout --force
5.测试
在window环境下,安装对应的git服务(同样需要配置git config),然后创建git库。创建git库有三种方式:
a.从源版本库克隆;
$ git clone git@48.107.56.223:/home/git/gitrepos/test;
b.在本地新建空目录,创建空的git库,然后与源版本库进行关联;
$ mkdir test;
$ git init;
$ git remote add origin git@48.107.56.223:/home/git/gitrepos/test;
c.将本地已存在的git库与源版本库进行关联,假设已存在的git库为oldtest;
$ cd oldtest;
$ git remote add origin git@48.107.56.223:/home/git/gitrepos/test;
这边仅举例从源版本库克隆的方式:$ cd test$ touch readme.txt$ git add readme.txt$ git commit -m "add readme.txt file"$ git status$ git push -u origin master
查看48.107.56.223服务器网站目录是否同步更新[root@xxx ~]# ls /data/wwwroot/test
6.其他git相关命令
版本库放在github官网,需要ssh方式连接,生成公钥:ssh-keygen -t rsa -C "github账号"
拉取远程版本库代码:git pull origin master
git自动更新网站代码的更多相关文章
- svn自动更新网站代码
运行环境说明:svn的执行目录: /usr/bin/svnsvn版本库目录: /usr/local/nginx/html/svnrepos/coinhello (其中svnrepos是我各个项目版本库 ...
- 后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码
后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码 一.总结 一句话总结: 1.在phpstorm中设置:路径Tools/Deployment/Configuratio ...
- Git github webhook 自动更新/部署代码 php自动更新脚本
这几天尝试了利用github的webhook,当代码更新到github,我们的测试服务器自动更新最新的gitbub仓库代码. 先列几个大概步骤,有时间再补充详细 1 . 服务器生成ssh key,一般 ...
- git 远程版本库,github提供服务原理,git自动更新发送邮件
1.安装好Linux,安装好Git(192.168.1.239) 2.创建一个用户zph(让此用户提供git on server),密码设置为12345678 # useradd zph # pass ...
- ***git 本地提交后如果让服务器上的GIT 自动更新拉取
Q: 最近配了个服务器,用的GIT,本地提交后服务器必须再拉取一下才能更新出来..求个提交后自动更新的方法 A: 最佳工具 git hook post-update.sample 改名为post-up ...
- 在linux写一个shell脚本用maven git自动更新代码并且打包部署
服务器上必须安装了git maven jdk 并且配置好环境变量 实际服务器中可能运行着多个Java进程,所以重新部署的时候需要先停止原来的java进程,写一个按照名称杀死进程的脚本 kill.sh ...
- git fetch 更新远程代码到本地仓库
理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’.这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应 ...
- git克隆/更新/提交代码步骤及示意图
1. git clone ssh://flycm.intel.com/scm/at/atSrc 或者git clone ssh://flycm.intel.com/scm/at/atJar 或者g ...
- 利用jenkins+git自动执行接口测试代码
事前准备 部署好jenkins.申请一个码云账号.代码同步至码云 1.在码云上新建一个项目,并把代码同步上去 我设置成了私有项目 2.为项目添加部署公钥 因为是私有项目,所以需要添加一个部署公钥,不然 ...
随机推荐
- 二叉树的遍历python 代码
__author__ = "WSX" class Node: def __init__(self, val = None, left = None, right = None): ...
- python爬虫学习心得
作为一名python的忠实爱好者,我开始接触爬虫是在2017年4月份,最开始接触它的时候遇到两个梗,一个是对python还不算太了解(当然现在也仍然在努力学习它的有关内容),二是对爬虫心怀一份敬畏之心 ...
- CSS: Multiple Attribute Selector [name="value"][name2="value2"]
this.document.querySelectorAll('div[id*="dayselector"][class*="x-autocontainer-innerC ...
- php 多字节编码转换
PHP 支持的编码 mb_convert_encoding — 转换字符的编码 string mb_convert_encoding ( string $str , string $to_encodi ...
- docker images 按名称过滤
docker images nihao_* 列出所有 nihao_* 正则匹配的镜像
- 【算法笔记】B1033 旧键盘打字
1033 旧键盘打字 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行 ...
- linux 系统管理(二) 磁盘分区
LINUX下分区命令Parted详解 通常划分分区工具我们用的比较多是fdisk命令,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大. 而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁 ...
- 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...
- Paxos算法的通俗理解(转)
维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...
- 批处理 进行svn代码拉取,vs编译,dotfuscator混淆
Dotfuscator的使用:https://www.cnblogs.com/aitong/p/10684004.html 从拉取代码,编译到最后的混淆步骤很多.这时就可以使用批处理来进行自动化. 用 ...