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 库/模块/工具
1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...
- Java学习--多态
1. 多态 多态:同一个对象(实物),在不同时刻体现出来的不同状态 多态的前提: A:要有继承关系 B:要有方法重写 C:要有父类引用指向子类对象 父类 f = new 子类() 多态中的成员访问特点 ...
- loj #6515. 「雅礼集训 2018 Day10」贪玩蓝月
\(\color{#0066ff}{输入样例}\) 0 11 10 QU 0 0 QU 1 9 IG 14 7 IF 3 5 QU 0 9 IG 1 8 DF QU 0 4 IF 1 2 DG QU ...
- leetcode-821-Shortest Distance to a Character
题目描述: Given a string S and a character C, return an array of integers representing the shortest dist ...
- 如何调用另一个包中的Application
在项目中要集成Xabber,将它作为一个Lib, ..... Xabber 原有代码 /** * Base entry point. * * @author alexander.ivanov */ p ...
- nginx克隆之后问题
[alert] kill(2942, 1) failed (No such process) 背景:虚拟机克隆之后启动service nginx reload报这个错,而且没有日志 根据这个博文htt ...
- TP5.0学习历程(1)
验证码的使用 控制器代码如下: $captcha = new \think\captcha\Captcha(); if (!$captcha->check($data['code ...
- weex 自定义Component
扩展iOS的功能 ~ Component 与UI控件相关 ,即通过原生方法创建UI界面,返回给weex 使用 一. 新建 WXComponent 的子类 在子类实现WXComponent 的 ...
- Pycharm 导入 Python 包、模块
1.点击File->settings 2.选择Project Interpreter,点击右边绿色的加号添加包 3.输入你想添加的包名,点击Install Package 4.可以在Pychar ...
- python设计模式--读书笔记
GoF在其设计模式一书中提出了23种设计模式,并将其分为三类: 创建型模式 将对象创建的细节隔离开来,代码与所创建的对象的类型无关. 结构型模式 简化结构,识别类与对象间的关系,重点关注类的继承和组合 ...