centOS 7.3 64位服务器,git仓库搭建并自动部署

4 篇文章 0 订阅

本文参考连接 https://blog.csdn.net/qq_18358973/article/details/82218823
linux 权限详解 https://blog.csdn.net/u013178472/article/details/78984183

先感慨下,最近工作不是很忙,自己买了台阿里云服务器,想着自己做个项目放上去玩玩,于是乎,就先开始研究,git 在服务器搭建仓库,并实现代码自动同步部署到web 目录下。然后通过nginx 起个服务,来访问页面。
但是这个看似简单的流程,对于我这种没搞过的人来说,在网上找了3天的教程,硬是没有一个能成功的!皇天不负有心人,今天找到一篇写的很不错的,抱着试试的心态,照着博客撸了一遍,(就是顶部的参考链接博主写的很好,很全面,很细致,包括了测试服务器,和正式服务器的自动部署)竟然成功了,为了纪念这个让人沉痛的坑我决定记录一下!也方便其他小伙伴学习!如果想要测试服务器,正式服务器全面的教程,可以点击顶部的参考链接。(不过正常情况下更新正式服务器代码,都是测试区没问题了,手动更新的)废话不多说了,开工!

服务器环境: 阿里云 centOS 7.3 64位

1,服务器上安装git

yum install git -y  #安装git  -y可以免去中途的一些提示

git --version   #查看git版本 ,显示版本信息,说明安装成功,现在yum 源上最新的应该是1.8.3.1版本

2, 创建用于运行gitlab 的用户git

adduser git    #建立git用户
groupadd git    #建立git用户组
usermod -G git git    #将git用户加入git用户组同时从其他组移除
usermod -a -G root git    #将git用户加入root用户组,有-a参数不从其他组移除,此时git用户同时属于git组和root组
 
passwd git    #为git用户设置登录密码(这里回车以后会提示输入两次密码,两次密码都相同的话,设置密码成功)

3,创建git仓库目录

cd /home/git    #进入git用户目录(/home下的git目录是我们在第二步创建完git用户以后自动在/home目录下生成的)
#确保git目录拥有者是git用户,不是就修改chown git:git /home/git -R
mkdir test.git    #创建git仓库目录
cd test.git    #进入目录
git init --bare    #初始化仓库目录
cd ../    #返回上层目录
chown git:git test.git -R   #修改git仓库目录拥有者为git

www目录就创建完了,如果是用nginx运行的需要将nginx以git用户运行,否则可以忽略此步修改nginx.conf文件,在文件头部:

user	git;	#以git身份运行

4,创建服务器上web项目目录

大多数读者喜欢在www 目录下 部署web项目,我们这里就以www 目录为例

cd /home    #示例是在/home目录下,读者可以自行选择
mkdir www    #创建www目录用于放web项目代码
chown git:git www -R    #拥有者改为git
chmod 755 www -R    #权限设为755

5,在web项目目录下克隆git仓库

从这一步开始往下所有服务器端的操作都是在git用户下操作完成的

su - git    #切换为git用户 (切换回root 用户时可能会要输入密码,密码就是服务器的远程连接密码。切换命令 su - root)
cd /home/www    #进入www目录
git clone git@{服务器公网ip}:test test    #克隆线上仓库到test目录

此时会提示输入密码,输入我们刚刚设置的git密码就可以克隆成功。但是如果没有设置git密码,或者即使设置了密码,每次连接线上git库都需要输入密码,这是一件很头疼的事,所以需要免密码连接。
生成密钥后,/home/git/.ssh/ 目录下会出现 如下两个文件
.ssh
├── id_rsa
└── id_rsa.pub #公钥 服务端需要里边内容验证连接着身份

接着修改权限:

chmod 700 /home/git/.ssh   # 700是只git用户有读、写、执行权限。

6,ssh免密码验证连接

cd /home/git    #进入git目录
ssh-keygen -C 'your@email.com' -t rsa    #为你生成rsa密钥,可以直接一路回车,执行默认操作

此处要确保你的RSA认证是打开的!

vim /etc/ssh/sshd_config

确保文件里这三项是打开的(前边有#号的要去掉):

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

如果没有的就加上,修改完之后重启sshd:

systemctl restart sshd

同理,后边我们在客户端(自己开发的电脑上)克隆项目的时候也会让输入密码,所以我们也要在客户端生成一下rsa秘钥,(生成git 秘钥方法网上有很多,这里不再多赘述),我们需要把生成的id_rsa.pub (这个文件是公钥)里的内容拷贝出来放到接下来创建的 authorized_keys 文件中

vim /home/git/.ssh/authorized_keys    #创建authorized_keys文件
 
###将客户端的id_rsa.pub中的内容全部粘贴进去,保存
 
chmod 600 /home/git/.ssh/authorized_keys    #修改权限 600是只有拥有者有读写权限。

7,创建git钩子(hooks)web项目目录下代码自动同步

创建post-receive 文件,此文件作用是当用户push代码时,触发的脚本文件,通过触发此文件内的shell脚本,实现web项目目录下代码同步功能

cd /home/git/test.git/hooks    #进入hooks目录
vim post-receive    #创建post-receive文件
 
#####填入如下内容
 
#!/bin/bash
DIR=/home/www/test	#指定代码自动检出目录
 
git --work-tree=${DIR} clean -fd
 
git --work-tree=${DIR} checkout --force		#直接强制检出

DIR 变量对应的目录就是 放置web项目代码的目录,也是线上git仓库的工作区
修改权限:

chmod +x post-receive    #赋予执行权限

到此为止,服务器端的git仓库,和web项目目录下代码同步功能就算搭建完了,接下来我们需要在客户端克隆一份,然后提交代码验证一下是否成功
客户端先cd 到自己的工作目录下,然后克隆服务器端git仓库代码

git clone git@192.168.0.103:/home/git/test.git  #192.168.0.103 是服务器的公网ip ,这里是随便写的,请自行改正

这里克隆的时候应该不会提示输入密码了,因为在第6步 的时候已经把客户端的秘钥加入到 服务器的authorized_keys 文件中了,
如果这里还是提示要输入密码,请仔细检查authorized_keys 文件中的公钥,和客户端的公钥是否一致,公钥正常情况下都是一行代码的,不会换行,在复制过去的时候有可能会换行,换行边界出现空格等问题,如果都没问题,就要仔细核对一下上边的这些步骤!
如果都没问题就继续往下走:
测试代码是否同步
在客户端创建一个index.html 文件,里边随便写点代码,然后

git add .
git commit -m "第一次提交"
git push origin master

push成功以后,去服务器上的/home/www/test 目录下查看是否有index.html 文件,并vim index.html 打开此文件查看内容是否完整。
至此,整个代码同步功能就完成了!以后就不用再去服务器端的web项目目录下手动去pull 代码了

下一篇文章会记录服务器端nginx 的安装和简单配置,通过nginx 服务实现 静态html 文件通过公网ip 方式在浏览器打开
服务器nginx 简单安装配置 https://blog.csdn.net/shi851051279/article/details/95379232

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值