Ubuntu下搭建GIT服务器并自动布署到WEB站点

2020-12-11  本文已影响0人  O无为学长O

之前为了学习和测试,在本地Ubuntu系统下搭建了一个GIT服务器,时间长有点忘记了,这次记录下来,以备以后复习。
具体功能为:在Ubuntu下搭建GIT服务器,并且可以自动发布到指定目录作为WEB站点,适合个人或者小团队学习研究。

先说说我的目录结构:
/srv -- 目录作为git服务器的根目录,所有的git仓库都在这个目录下创建。
/mnt -- 目录为web站点根目录,所有web站点都放在这个目录下。

一,搭建GIT服务器

说服务器有点夸大,其实就是搭建一个GIT的资源仓库,方便多设备多伙伴之间协同开发。
主要命令只有一条

  # 该命令的作用是创建一个没有工作区的git仓库,所以不能直接进行分支编辑操作,只用来push pull资源
 git init --bare

网上各种文章都推荐说专门创建一个git用户来进行管理,我个人觉得不用这么麻烦,而且对于新手来说容易被绕晕,如果只是个人研究或小团队之间协同使用,完全不需要这么麻烦 我所有的操作都是直接在安装完Ubuntu之后的默认当前用户下进行的,客户端克隆用的都是root用户。

仓库搭建很简单,比如要建一个 web 仓库:

cd /srv
# 创建一个名为web目录 并进入目录
mkdir web
cd web
# 将目录初始化为一个git裸仓库(即没有工作区的资源库)
git init --bare

这样一个git中心仓库就创建好了。

二,配置自动布署

自动布署本身就是git提供的功能,只需要根据规则配置好脚本即可:

# ls 查看web目录,会看到有 hooks 目录,进入该目录
cd hooks
# 创建 post-receive 文件,该文件名是默认,不可修改
touch post-receive
# 编辑该文件,我用的 vim ,大家根据自己爱好选择
vim post-receive
# 脚本完整内容,代码含义有兴趣的可以自己进一步研究
# 脚本代码网上的各不相同,这段是我觉得最省事的,可以先按这代码来,有兴趣再深入研究
===========代码分割线===================
#!/bin/sh
#指定代码检出目录,这里指的是自动布署到的web站点目录、
# 设置将仓库内容自动发布到 /mnt/web 目录中
DIR=/mnt/web  
git --work-tree=${DIR} clean -fd
#直接强制检出
git --work-tree=${DIR} checkout --force
===========代码分割线====================
# (不会有人把 代码分割线也复制下来了吧)
#  脚本保存好后,还需要给脚本可执行权限,否则不能自动布署
chmod +x post-receive

以上就是整个GIT仓库搭建和自动布署的所有步骤,但如果这样直接在本地git clone,每次都需要输入密码,很麻烦,可以参考第三步设置 ssh 免密。

三,ssh 免密设置

请先确保安装了 ssh 服务,Ubuntu 系统可以使用以下命令安装:

sudo apt-get install openssh-server

使用以下命令检查是否安装成功

ps -e | grep ssh

如果看到有 sshd 字样,表示安装成功,如果只有 ssh-agent 显示,则没有安装成功,具体请百度解决。

** 注意以下操作是在本地进行的 **
服务器安装好ssh服务之后,在本地创建安全密钥, win10 系统默认支持 ssh ,其他系统需要自己确认。
win10系统建议使用 power-shell ,这样 win10 mac linux 等命令都是相同的,降低学习成本,下面的命令都是在 win10 的 power-shell 和 mac 的终端执行。

# 生成 ssh 密钥命令
ssh-keygen -t rsa -C "xxx@xxx" (引号部分为git邮箱地址, -C 的字母为大写)

命令会生成两个文件, .pub 后缀的为公钥,没有后缀的为私钥
文件默认保存在 .ssh 目录中, 通过以下命令可以进入 .ssh 目录

# ~ 为用户主目录的意思, win10 的 power-shell , mac 和 linux 终端 通用。
cd ~/.ssh
# ls 命令查看当前目录,可以看到生成的两个文件

.ssh 为隐藏文件夹, mac 和 linux 系统下可以通过终端打开编辑,但win10系统下比较麻烦,除非自己有安装第三方的终端工具。

接下来要做的是把有 .pub 后缀的公钥文件上传到 ubuntu 服务器中,这里提供两种方案:

1,如果终端命令比较陌生,可以用u盘拷,如果是在本地安装的虚拟机的话,一般虚拟机是可以直接复制粘贴内容的。
(win10系统中访问.ssh文件夹比较麻烦,可以在power-shell中 使用 cat ~/.ssh/id_rsa.pub >> d:\id_rsa.pub 命令将文件复制到D盘,方便操作 )

2,使用 scp 命令
power-shell 或终端中输入以下命令:

# 该命令用来将本地的 id_rsa.pub 文件上传到 ubuntu 服务器的 home 主目录的 user 目录中
scp ~/.ssh/id_rsa.pub root@192.168.3.12:/home/user 

# 接下来 使用 ssh 登录到 ubuntu 服务器
ssh root@192.168.3.12

# 将公钥文件移动到.ssh目录,并改名为 authorized_keys, 名字是固定的,不要打错!
mv id_rsa.pub ~/.ssh/authorized_keys

网上有文章说需要修改 authorized_keys 文件和 .ssh 目录的权限,其实不太需要,反正我一直没改过,也没什么影响,就默认的就行了,如果不放心可以按网上的改成 644 和 755。

四,大功告成

做完以上三步,可以自动布署到web站点的GIT服务器也就搭建完成了,如果没有自动布署,请检查是否给 post-receive 文件添加了可执行权限。

接下来,在本地拉取仓库:

git clone root@192.168.3.12:/srv/web

将仓库内容拉取到本地之后,只要往仓库添加内容,并push到服务器仓库 /srv/web 中,就会自动发布到web 站点 /mnt/web 目录中。

上一篇 下一篇

猜你喜欢

热点阅读