使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境_百 ...

使⽤git在服务器上部署git仓库并实现提交代码时同步代码到⽣
产环境
最近由于需要对正在运⾏的系统进⾏新功能添加,本来是可以通过github进⾏代码维护,但是由于这个项⽬涉及⼀些问题,⽬前还不能开源,所以只能是⼿动覆盖bug⽂件,⽣产环境上的代码反⽽是最新的了。
之前有个思路,就是将git仓库部署到⽣产环境所在的服务器中,今天做了⼀下尝试,效果还不错,特意再次做出总结。具体实现的⽬标就是:
使⽤git在服务器上部署git仓库并实现提交代码时同步代码到⽣产环境,参考git基本操作.废话少说,进⼊正题。
⾸先,需要在服务器上安装git,这⾥就不再罗嗦,不会装的,⾃⾏百度。
以下代码命令和代码实例中说明⼀下⼏点:
所有服务器上的操作,为了避免遇到权限的问题,是直接进⼊root超级⽤户下的操作。
创建的项⽬名为my_object。
在服务器上,我选择将仓库创建在/var/下,⽣产环境项⽬代码放在/www/wwwroot/my_object/。阅读者可以⾃⾏更改,但是需要记住更改后的路径。
为了隐私,实例的服务器ip⽤127.0.0.1代替,⽤户⽤gits代替。
第⼀步:在服务器上创建git仓库
我选择在/var/下创建:
mkdir git  && cd git
mkdir my_object.git && cd my_object.git
git init --bare
--bare的意思是,该⽂件夹是我们的代码仓库,它将不会放源代码⽽只是做版本控制。
注:my_object.git 可以改成你⾃⼰的名字
第⼆步:创建钩⼦
将会使⽤post-receive钩⼦,更多相关的信息可以参考官⽅⽂档。
ls
可以看到hooks已创建,⽽且⾥⾯也有各种钩⼦的样例。
第三步:创建我们⾃⼰的post-receive
cd hooks
vim post-receive
//这个位置⽤ vim创建⽂件也可以,你们也可以⽤宝塔之类的创建。我是⽤宝塔创建的
在post-receive⽂件中加⼊以下需要同步的语句
#!/bin/sh
git --work-tree=/www/wwwroot/my_object --git-dir=/var/git/my_object.git checkout -f
注:/www/wwwroot/my_object 是你想同步到你服务器哪个⽬录,/var/git/my_object.git 则是你的仓库地址两个地址都可以你⾃定义。
编辑完成之后保存。
将仓库⽂件夹也要设置为gits 所有然后gits拥有读取写⼊的权限即可否则会报错误/var/git/my_object.git
压力检测装置注:gits⽤户创建将在下⽂中说道。
第四步:创建gits推送⽤户并且设置密码
服务器上创建 gits⽤户
adduser gits
然后设置密码(然后输⼊密码回车,输⼊确认密码回车即可)
passwd gits
auts密码输⼊两次后提⽰设置密码成功
第五步:获取你本地的ssh-rsa(如果想每次推送都输⼊gits 密码的可忽略这⼀步)
1、配置⼀个你本地仓库的全局的⽤户名
#配置⼀个本地git的⽤户名
git config --global user.name "xxx"
2、配置该账户的邮箱地址
#配置本地⽤户的邮箱地址
git config --ail "xxx@qq"
3、然后在本地⽣产ssh公钥
#邮箱就是你上⾯设置的那个邮箱地址
ssh-keygen -t rsa -C ###@qq
注:如果windows 系统提⽰ssh-keygen不是内部或者外部命令的话可参考以下⽅法:
(1)到:Git/usr/bin⽬录下的(⼀般在安装 Git 的这个⽬录)
(2)配置环境变量:我的电脑属性-->⾼级系统设置-->环境变量-->系统变量,到Path变量,进⾏编辑,加到最后,输⼊分号,粘贴复制的ssh-keygen所在的路径,保存;
4、查看公钥
linux系统命令:
cat ~/.ssh/id_rsa.pub
window系统则需要去C:/Users/11/.ssh/id_rsa.pub 打开⾥⾯就是公钥
注:11是我当前电脑的⽤户名。具体的⽤户名看你的电脑系统⼀般默认都是administrator
第六步:把你本地的ssh公钥设置到服务器仓库(如果想每次推送都输⼊gits 密码的可忽略这⼀步)
1、切到服务器gits⽬录下
cd /home/gits
2、创建.ssh⽬录
ip调度系统mkdir .ssh
cd .ssh
3、然后创建authorized_keys⽂件⽤宝塔创建也可以在⾥⾯保存你刚才获取的本地ssh公钥⼀⾏⼀个
4、设置.ssh 和 authorized_keys的所有者为gits
linux命令:
cd ../
#注:加-R 是修改⽂件夹下所有⽬录和⽂件的所有者为gits .ssh 是⽬录名
chown -R gits:gits .ssh
第七步:设置仓库⽬录权限
将git仓库⽬录(/www/wwwroot/my_object)设成可读写的(777):(这⼀步想当重要,必须是777,否则将⽆法写⼊⽂件)
设置⽂件夹权限的命令如下:
cd /www/wwwroot/my_object
chmod 777 -R *
如果⽣产环境项⽬所在⽬录/www/wwwroot/my_object/不存在,要记得创建,同时让其的权限成为任何⼈都可读写!
mkdir /www/wwwroot/my_object/ cd /www/wwwroot/my_object/ && chmod 777 -R *
服务器上的仓库和同步钩⼦配置到此完毕,下⾯需要我们在本地编写项⽬并上传⾄服务器仓库。汽水取样装置
第⼋步:本地项⽬推送
⼀般情况是你已经有了⾃⼰的git项⽬了,那么只需要添加仓库地址就⾏了。
git remote add origin ssh://gits@127.0.0.1:22/var/git/my_object.git
注:gits 为git服务端ssh登录⽤户名,127.0.0.1为git服务端地址 22位ssh的登录端⼝, /var/git/my_object.git 为git服务端项⽬仓库路径下⾯就是⼀顿⾏云流⽔的操作啦
#将⽂件加⼊本地缓存区
git add --all
git commit -m "备注"
#推送到git服务端加-f则进⾏覆盖不加则不覆盖
git push -u origin master -f
#如果端⼝和地址访问正常的话。应该会提⽰让你输⼊密码。你就输⼊上⾯设置的gits的密码即可开始同步
#如果你⽬录权限和ssh公钥都配置正确的话第⼀次推送只需要确认⼀下改服务器ip是否可以推送即可如果还是需要输⼊密码那就是⽬录权限或者ssh公钥的问题了扩展知识:
1、多仓库同时推送led生产
(1)添加第⼆个远程地址时使⽤以下命令:
git remote set-url --add origin git@github:morethink/programming.git
(2)查看远程分⽀:
git remote -v
#会显⽰如下信息
#origin  ding:morethink/programming.git (fetch)
#origin  ding:morethink/programming.git (push)
#origin  hexo@MyHost2:/var/repo/gitbook.git (push)
2、删除远程分⽀
git remote add origin
3、查看当前本地git仓库状态
git status
4、提⽰出错信息:fatal: remote origin already exists.
解决办法如下:
(1)先删除远程分⽀信息
git remote rm origin
二氧化碳吸附剂
(2)重新添加远程分⽀
git remote add origin git@github:djqiang/gitdemo.git
好了暂且写到这⾥,如果还是有问题的话可以加我qq或者交流

本文发布于:2024-09-22 19:39:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/273159.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:仓库   代码   服务器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议