https://gogs.io/
https://www.liangzl.com/get-article-detail-122489.html
https://my.oschina.net/u/4000302/blog/3031135
其他的开源git
Gitlab是一个强大的git服务,基本功能和对手GitHub一样。 这是一个成熟的项目和并且在不断更新。
他们最近收购了Gitorius(另一个类似GitHub的服务),所以功能将有望得到扩展(查看有关收购的新闻剪辑)。
以前是手动安装,很耗时间,问题也很多。最近安装过程有所改善。
现在有 Linux DEB/RPM 的安装包可用(称为Omnibus),解决了所有的依赖问题,简化了安装过程。
升级是一个复杂的事情,尤其是从较早的版本升级到最新版,但也没那么复杂。
然而,你可以感受到很多东西是在后台执行的。 你可以运行 Sidekiq、Unicorn、Nginx、Ruby (包括 gems) 和 Gitlab本身。
自定义安装不是那么简单,有很多不确定因素,如果出了什么差错,要自己一个个排查。
现在,我们有了Gogs。 你所要做的就是运行一个的二进制包。
它是用Go语言写的,能兼容各个系统。
它能运行于 Windows,MAC,Linux,ARM 等。
安装时只需要把压缩包解压到选定的文件夹中。 就是这样。 升级也一样:只要解压压缩包即可。
这就是Go语言二进制开发的美,你可以轻松在多个平台下开发。
Gogs占用资源少,所以它很容易在系统资源上运行(它可以在Raspberry Pi运行)。
你可以用默认的配置运行,或做一些小调整。
默认的配置文件位于安装文件夹的/conf/app.ini
,文档建议把自定义配置写到/custom/conf/app.ini
,这样升级就不会覆盖配置。
有三个可自定义的东西:
库的位置
[repository]
ROOT = !! 库的地址 !!
数据库位置
[database]
PATH = !! 数据库地址 !!
公钥
注意:目前,你需要运行一个SSH服务器(OpenSSH也很好),这和gitlab相同。
让我们比较一下这两个产品。 我将以GitHub作为参考。
特性 | Gogs | Gitlab | Github |
---|---|---|---|
Dashboard & File Browser | Y | Y | Y |
Issue Tracking, Milestones & Commit keywords | Y | Y | Y |
Organizations support | N | Y | Y |
Wiki | N | Y | Y |
Code Review | N | Y | Y |
Code Snippets | N | Y | Y |
Web Hooks | Y | Y | Y |
Git Hooks | Y | * Enterprise | * Enterprise |
LDAP Login | Y | Y | Y |
LDAP Group Sync | N | * Enterprise | * Enterprise |
Branded Login Page | N | * Enterprise | * Enterprise |
Language | Go | Ruby | Ruby |
Platform | Cross-Platform | Linux | * Virtual Machine |
License | MIT | MIT | Proprietary |
Resource Usage | Low | Medium/High | Medium/High |
代码审查(拉取请求)可以说是缺失的最重要的功能。 这是 Gogs 在Github issues 里首要问题,Gogs的主要开发者正在尽力开发中。
但总的来说,这是一个功能丰富的、私有的Git托管服务。
我以前描述我如何我的服务器环境docker化,所以我也会把gogs作为Docker容器来运行
让我们一步一步来做。
假设我有一个应用程序的文件在我的服务器根目录/home/kayak/apps
,给每个作为Docker容器的应用创建子目录。
下载并解压最新版本gogs。
$ cd /home/kayak/apps
$ wget http://gogs.dn.qbox.me/gogs_v0.5.13_linux_amd64.zip
$ unzip gogs_v0.5.13_linux_amd64.zip
$ rm gogs_v0.5.13_linux_amd64.zip
自定义配置
$ cd gogs
$ mkdir -p custom/conf
$ cd custom/conf
$ nano app.ini
[repository]
ROOT = !! this is the location where you want to keep the repositories !!
[database]
PATH = !! this is the location of your database (sqlite3 by default) !!
注: 你也可以不把gogs作为docker容器,直接运行。
现在让我们创建dockerfile
$ cd /home/kayak/apps/gogs
$ nano Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
RUN sed 's/main$/main universe multiverse/' -i /etc/apt/sources.list && \
apt-get update && apt-mark hold initscripts && \
apt-get install -y sudo openssh-server git && \
apt-get clean
EXPOSE 22 3000
RUN addgroup --gid 501 kayak && adduser --uid 501 --gid 501 --disabled-password --gecos 'kayak' kayak && adduser kayak sudo
WORKDIR /home/kayak
ENV HOME /home/kayak
ENTRYPOINT ["/home/kayak/boot"]
dockerfile是基于最新的Ubuntu LTS版服务器(14.04)。
然后安装 sudo, openssh 和 git,暴露端口22(用于SSH)和3000(给gogs的Web界面)。
另外,我通常会创建一个用户(这里用 kayak),它具有与我的Max box用户相同的UID/GID,以防止访问权限问题。
最后,启动shell脚本运行。
$ touch boot
$ chmod +x boot
$ nano boot
#!/bin/bash
sudo -u kayak -H touch /home/kayak/.ssh/authorized_keys
chmod 700 /home/kayak/.ssh && chmod 600 /home/kayak/.ssh/authorized_keys
# start openssh server
mkdir /var/run/sshd
/usr/sbin/sshd -D &
exec sudo -u kayak /home/kayak/gogs web
这样就运行了ssh守护进程和gogs。现在是以kayak用户运行,这样比用默认的root用户好一些。
建立镜像
$ cd /home/kayak/apps/gogs
$ docker build --rm -t apertoire/gogs .
镜像建立好就可以运行了
$ docker run -d --name gogs \
-v /etc/localtime:/etc/localtime:ro \
-v /home/kayak/apps/gogs:/home/kayak \
-p 62723:22 \
-p 3000:3000 \
apertoire/gogs
可以在命令行查看运行情况。
现在可以打开网页界面,它会显示一个安装页面(首次运行)。
安装完成后,就搭建好一个功能丰富的Gogs了。
Gogs 是一个轻量级的、易于设置、跨平台的Git托管服务,不逊色于 Gitlab 和 GitHub。
虽然不比这二者成熟,但它有很大的潜力。
它是开源的,所以你可以帮助改善它。
我用Gogs取代Gitlab几个月了,感觉不错。
我创建42个库,感觉它的性能非常好。
我绝对推荐Gogs作为你的Git自托管服务。