设为首页 收藏本站
查看: 1142|回复: 0

[经验分享] Gogs:可能是比Gitlab更好的选择

[复制链接]

尚未签到

发表于 2018-1-11 16:36:20 | 显示全部楼层 |阅读模式
  Gitlab是一个很棒的Git托管服务,几乎像GitHub一样强大。 但是,有没有能和Gitlab/Github媲美但操作更简单的项目呢?我认为 Gogs 是很好的选择。

简介
  现在,GitHub已经成为首选的代码托管平台。 因为它又很多很棒的功能,操作简单,几乎所有的开发者都喜欢它。
  同时,谷歌的代码托管项目准备关闭,你可以把项目转移到这里。
  但如果你在写Android应用程序,或者正在创建下一个伟大的iOS游戏,或者不想让别人看到你的代码没,该怎么办?
  你当然可以购买私人GitHub库,但你肯定更想把资金投资到更紧迫的事情上。
  这就是 Gitlab 和 Gogs 这样的软件诞生的原因。
  他们提供的服务和GitHub非常相似,不同的是,你可以把项目放在你自己的服务器上,甚至是自己的工作站上。
  下面一起来进行更深入的了解。

Gitlab
  Gitlab是一个强大的git服务,基本功能和对手GitHub一样。 这是一个成熟的项目和并且在不断更新。
DSC0000.jpg

  他们最近收购了Gitorius(另一个类似GitHub的服务),所以功能将有望得到扩展(查看有关收购的新闻剪辑)。
  以前是手动安装,很耗时间,问题也很多。最近安装过程有所改善。
  现在有 Linux DEB/RPM 的安装包可用(称为Omnibus),解决了所有的依赖问题,简化了安装过程。
  升级是一个复杂的事情,尤其是从较早的版本升级到最新版,但也没那么复杂。
  然而,你可以感受到很多东西是在后台执行的。 你可以运行 Sidekiq、Unicorn、Nginx、Ruby (包括 gems) 和 Gitlab本身。
  自定义安装不是那么简单,有很多不确定因素,如果出了什么差错,要自己一个个排查。

输入二进制包
  现在,我们有了Gogs。 你所要做的就是运行一个的二进制包。
  它是用Go语言写的,能兼容各个系统。
  它能运行于 Windows,MAC,Linux,ARM 等。
DSC0001.jpg

  安装时只需要把压缩包解压到选定的文件夹中。 就是这样。 升级也一样:只要解压压缩包即可。
  这就是Go语言二进制开发的美,你可以轻松在多个平台下开发。
  Gogs占用资源少,所以它很容易在系统资源上运行(它可以在Raspberry Pi运行)。
  你可以用默认的配置运行,或做一些小调整。
  默认的配置文件位于安装文件夹的/conf/app.ini,文档建议把自定义配置写到/custom/conf/app.ini,这样升级就不会覆盖配置。
  有三个可自定义的东西:


  •   库的位置
      

    [repository]  
    ROOT = !! 库的地址 !!
      

      


  •   数据库位置
      

    [database]  
    PATH = !! 数据库地址 !!
      

      


  •   公钥

DSC0002.jpg

  注意:目前,你需要运行一个SSH服务器(OpenSSH也很好),这和gitlab相同。

比较
  让我们比较一下这两个产品。 我将以GitHub作为参考。

特性GogsGitlabGithubDashboard & 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托管服务。

运行一个 Gogs docker
  我以前描述我如何我的服务器环境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
  

  

  可以在命令行查看运行情况。
DSC0003.jpg

  现在可以打开网页界面,它会显示一个安装页面(首次运行)。
DSC0004.jpg

  安装完成后,就搭建好一个功能丰富的Gogs了。
DSC0005.jpg


总结
  Gogs 是一个轻量级的、易于设置、跨平台的Git托管服务,不逊色于 Gitlab 和 GitHub。
  虽然不比这二者成熟,但它有很大的潜力。
  它是开源的,所以你可以帮助改善它。
  我用Gogs取代Gitlab几个月了,感觉不错。
  我创建42个库,感觉它的性能非常好。
  我绝对推荐Gogs作为你的Git自托管服务。

附该项目在Github上的4位开发者:

DSC0006.jpg DSC0007.jpg DSC0008.jpg DSC0009.jpg 无闻Unknwon
Liu Peng
Lunny Xiao
傅小黑

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433966-1-1.html 上篇帖子: gitlab安装过程总结 下篇帖子: GitLab 数据自动备份
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表