手摸手带你部署git服务器实现自动发布代码

栏目: 编程工具 · 发布时间: 6年前

内容简介:前段趁着活动买了个腾讯云服务器,一直没抽时间去折腾,最近才开始部署了一个自己专属的git仓库,实现代码自动发布部署功能。(我也想成为努力向上,积极进取的有志青年啊!)文章的内容基本都是参考自谷歌搜索,然后按我的思路重新整理一遍,既是为了分享也是为了巩固知识。我也是第一次折腾服务器,前期部署就不写太详细了,装个git是必须的吧?(滑稽笑)添加git权限成员

前段趁着活动买了个腾讯云服务器,一直没抽时间去折腾,最近才开始部署了一个自己专属的git仓库,实现代码自动发布部署功能。(我也想成为努力向上,积极进取的有志青年啊!)文章的内容基本都是参考自谷歌搜索,然后按我的思路重新整理一遍,既是为了分享也是为了巩固知识。

我也是第一次折腾服务器,前期部署就不写太详细了,装个git是必须的吧?(滑稽笑)

创建git用户

# 创建git用户
adduser git
复制代码

添加git权限成员

# 创建/home/git/.ssh/authorized_keys 文件(通过这种方式能使拥有公钥的成员直接访问仓库)
mkdir /home/git
mkdir .ssh
touch authorized_keys
# 使用vim命令将公钥添加到authorized_keys文件里面
复制代码

生成公钥的方法可查看git官方文档

初始化仓库

创建一个存放git仓库的文件夹

mkdir /web/git
cd /web/git
复制代码

初始化仓库

git init --bare website.git
# 注意 这里有个坑 因为我们初始化的时候是处于root管理员状态,所以需要将这个仓库的文件权限设置为刚才创建的git用户
# 否则的话后面push将没有权限
chown -R git website.git
复制代码

git init正常初始化仓库会显示项目文件结构,里面存在.git文件夹。而这里添加--bare参数生成裸仓库,里面的项目文件结构隐藏,将正常方式初始化的.git里面文件结构暴露出来。

生成项目仓库

mkdir /web/www
cd /web
# 在这里,还是别忘了要给项目文件夹加上git用户操作权限 并打开www文件夹
chown -R git www && cd www
# 将刚才初始化的裸仓库克隆到项目文件夹
git clone /web/git/website.git
复制代码

到这一步的时候代码仓库已经基本初始化完成了,接下来试试将仓库从线上克隆下来。

克隆仓库到本地

# 通过ip地址从配置好的线上仓库拉取下来
git clone git@118.24.217.XXX:/web/git/website.git
# 如果有配置域名的话也可以通过域名拉取
git clone git@www.XXX.XXX:/web/git/website.git
复制代码

刚开始的时候因为已经添加了本地的密钥到线上git服务器,所以这一步是不需要密码的,直接能克隆下来。

创建文件并上传

# 打开刚才克隆下来的本地仓库
cd website
# 创建README.md文件
touch README.md
git add .
git commit -am"创建README.md文件"
git push
复制代码

啧啧 完美 到这一步的时候就上传成功了! 接下来就开始重头戏,我们需要设置git的post-receive钩子,在push成功的时候运行我们设置的一系列命令,进而达到自动编译更新线上代码。

添加post-receive钩子

回到线上服务器,我们打开/web/git/website.git/hooks文件夹。

# 生成post-receive文件
touch post-receive
# 使用vim编辑
vim post-receive
复制代码

在post-receive文件输入我们的命令行命令

#!/bin/sh

# 打印输出
echo '======上传代码到服务器======'
# 打开线上项目文件夹
cd /web/www/gd168
# 这个很重要,如果不取消的话将不能在cd的路径上进行git操作
unset GIT_DIR
git pull origin master
# 自动编译vue项目
# npm run build
echo $(date) >> hook.log
echo '======代码更新完成======'
复制代码

保存后给post-receive文件加上运行权限

chmod +x post-receive
复制代码

搞定,现在试着修改下README.md文件,然后发布上去就能看到部署效果了。没毛病,妥妥的!

手摸手带你部署git服务器实现自动发布代码

结语

大概是第一次写文章,怕大家看不明白,码文章的过程中还一步步重新走了遍流程,大概……应该……是写得很详细了吧(捂脸)。这些都是我遇到的坑,如果还有啥不妥的地方希望大家能够谅解,有什么不对或不够好的地方希望能联系我修改下,最怕耽误了你们宝贵的青春。带歪车就不好了,新手上路,嘿嘿。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java Concurrency in Practice

Java Concurrency in Practice

Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea / Addison-Wesley Professional / 2006-5-19 / USD 59.99

This book covers: Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Pe......一起来看看 《Java Concurrency in Practice》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具