网络和系统 / 软件 · 2017年11月4日

在群晖NAS上快速搭建属于自己的Git Server

2017110421584797
2017110422084825
2017110422165548
2017110421403711
2017110421474388
2017110421552558
2017110421270132
2017110421283156
2017110421031915
2017110421075492
2017110421163475
2017110421210463

曾经,小编入手了一台群晖入门NAS,买之前想着我要下电影,存资料、存照片,我一定要好好利用。可是买回来使用一段时间,热情渐渐消退,我的设备就开始进入吃灰状态了。由于设备是入门级的性能也很弱,做家庭娱乐中心CPU老是爆100%,无奈平时也就映射个磁盘在电脑偶尔存个资料什么的。

最近小编手里有个小项目,因为项目需要保存项目历史版本,同时又需要在其他机器取得最新文件并编辑再提交。结合上述需求,我想起了Git。说起Git代码托管服务,目前国外有大名鼎鼎的GitHub,国内也有码云、coding等平台。虽然这些平台都有较好的体验,但是作为一个折腾帝,不知道为什么,就是想要利用自己吃灰的群晖NAS来折腾一下,搭建一个属于自己的Git Server服务器,所以就有了以下的文章内容。

群晖NAS套件中心是有Git Server套件的,只要在套件中心安装即可。但是需要注意的是:第一、git 相关的命令需要使用 SSH 客户端连接到NAS上进操作。第二、配置git时需要使用 管理员权限账户,而 push / fetch 使用的账户一般都为普通用户,一定要注意权限问题。

1 配置NAS

1.1 安装Git Server套件

1.2 创建用来存放git仓库的共享目录

1.3 创建一个用来使用Git的普通权限账户

1.4 设置 Git Server ,并赋予Git_test用户访问Git Server的权限。

1.5  打开NAS的家目录,并允许使用SSH连接

注意:请依次打开NAS控制台→控件面板→用户账号→高级设置→家目录启用家目录服务。

然后在依次打开NAS控制台→控制面板→终端机和SNMP-终端机,启用SSH功能。

2 通过SSH创建Git仓库

以下操作过程主要只利用SSH工具来链接至群晖NAS操作,SSH工具以Xshell为例,同时需要注意的是SSH登录账户必须具有管理员权限,以下操作截图只保留关键步骤。

2.1 使用Xshell登陆NAS 进入Git_test目录

cd /volume1/Git_test/

2.2 创建仓库目录,初始化git仓库

mkdir test.git
cd test.git
git init --bare

2.3 设置Git目录权限,并赋予Git_test用户访问权限

#请注意,以下命令建议手打,//后面的内容为注释内容,无需输入
sudo -i                               // 取得root权限
cd /volume1/Git_test/
chown xxx:users .                     // 将Git_test目录的所有者改为管理员账户xxx(xxx为具备管理员权限的账户),目录的所属群组改为users。注意不要忘了[.]
chmod 770 .                           // 将Git_test目录的所有者、所属群组的权限改为 读/写/运行
chown -R Git_test:users test.git      // 改变test.git目录及所有包含文件、子目录的所有者
chmod -R 770 test.git                // 改变test.git目录及所有包含文件、子目录的权限

3 开始使用自己的Git Server服务器

注意:以下操作需要本机安装有Git程序,没有安装的小伙伴可以访问 https://git-for-windows.github.io/ 下载安装。

3.1 取得仓库

安装完Git程序后,我们只需要打开CMD命令符窗口并输入以下命令,即可取得Git仓库:

git clone ssh://Git_test@192.168.8.243/volume1/Git_test/test.git

▲图为获成功获取到了test.git

3.2 add(添加)文件并push到仓库

git add .
git commit -m "add test.txt file"
git push

▲图为成功成功创建文件并push到仓库

在使用过程中,我们不一定非要用CMD命令行窗口来操作Git,一般我们使用的IDE开发工具都集成有Git功能,可以很方便进行Git操作。如果需要外网访问Git Server,我们需要对NAS的SSH端口进行端口映射。