前段趁着活动买了个腾讯云服务器,一直没抽时间去折腾,最近才开始部署了一个本身专属的git仓库,实现代码自动发布部署功能。(我也想成为努力向上,积极进取的有志青年啊!)文章的内容基本都是参考自谷歌搜索,而后按个人思路从新整理一遍,既是为了分享也是为了巩固知识。 vue
# 建立git用户
adduser git
复制代码
添加git权限成员git
# 建立/home/git/.ssh/authorized_keys 文件(经过这种方式能使拥有公钥的成员直接访问仓库)
mkdir /home/git
mkdir .ssh
touch authorized_keys
# 使用vim命令将公钥添加到authorized_keys文件里面
复制代码
生成公钥的方法可查看 git官方文档web
建立一个存放git仓库的文件夹npm
mkdir /web/git
cd /web/git
复制代码
初始化仓库vim
git init --bare website.git
# 注意 这里有个坑 由于咱们初始化的时候是处于root管理员状态,因此须要将这个仓库的文件权限设置为刚才建立的git用户
# 不然的话后面push将没有权限
chown -R git website.git
复制代码
git init正常初始化仓库会显示项目文件结构,里面存在.git文件夹。而这里添加--bare参数生成裸仓库,里面的项目文件结构隐藏,将正常方式初始化的.git里面文件结构暴露出来。bash
生成项目仓库服务器
mkdir /web/www
cd /web/www
# 将刚才初始化的裸仓库克隆到项目文件夹
git clone /web/git/website.git
# 在这里,仍是别忘了要给项目文件夹加上git用户操做权限
chown -R git website
复制代码
到这一步的时候代码仓库已经基本初始化完成了,接下来试试将仓库从线上克隆下来。ssh
# 经过ip地址从配置好的线上仓库拉取下来
git clone git@118.24.217.XXX:/web/git/website.git
# 若是有配置域名的话也能够经过域名拉取
git clone git@www.XXX.XXX:/web/git/website.git
复制代码
刚开始的时候由于已经添加了本地的密钥到线上git服务器,因此这一步是不须要密码的,直接能克隆下来。post
# 打开刚才克隆下来的本地仓库
cd website
# 建立README.md文件
touch README.md
git add .
git commit -am"建立README.md文件"
git push
复制代码
啧啧 完美 到这一步的时候就上传成功了! 接下来就开始重头戏,咱们须要设置git的post-receive钩子,在push成功的时候运行咱们设置的一系列命令,进而达到自动编译更新线上代码。ui
回到线上服务器,咱们打开/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文件,而后发布上去就能看到部署效果了。没毛病,妥妥的!
大概是第一次写文章,怕你们看不明白,码文章的过程当中还一步步从新走了遍流程,大概……应该……是写得很详细了吧(捂脸)。这些都是我遇到的坑,若是还有啥不妥的地方但愿你们可以谅解,有什么不对或不够好的地方但愿能联系我修改下,最怕耽误了大家宝贵的青春。带歪车就很差了,新手上路,嘿嘿。