搭建轻量级git server和git web UI

背景

如果你用ECS来管理日常代码,一定会有这样一个过程:

step 1:

git clone user@domain.com:/my/git/repo/dir

step 2:

git clone http://domain.com/my-repo.git

step 3:

浏览器里输入 http://domain.com/my-repo.git 即时浏览源码和git提交记录

大部分人,停止在了第一步,因为第二步、第三步,还挺麻烦。特别是第二步。

周末再次(大约1年前已经折腾过一次,惜败)尝试安装gitlab-ce (community-edition),再次,惜败!于是我决定放弃 gitlab,开辟新大陆。

工具

  • GitPHP

    在线浏览源码和 git 提交记录的工具。基于PHP编写,很轻量,无需数据库,权限控制功能相当强大。

    下载地址: https://github.com/xiphux/gitphp

  • Git-Lighttp

    以 http 的形式对外提供 git clone push 服务。基于Rudy编写,无需数据库。厌倦了基于 ssh 服务提交代码的话,不妨一试。

    下载地址:https://gitlab.com/hallison/git-lighttp.git

两个工具都很靠谱,安装文档比较缺乏,需要动用你的钻研精神哦。下面就重点介绍一下。

安装配置

安装很简单,直接从 git clone 即可。

GitPHP 和 Git-Lighttp 都支持权限控制,下面重点说明。

GitPHP 配置

GitPHP的配置(包括权限控制)都在源码的 config 目录下

[ray@aliyun config]# tree
.
|-- gitphp.conf.php
|-- projects.conf.php
`-- users.conf.php

核心配置包括:

gitphp.conf.php
---
// 注意:php 必须具有对 git 仓库目录的访问权限
$gitphp_conf['projectroot'] = './your/git/repo/dir';


projects.conf.php
---
可以不动


projects.conf.php
---
$gitphp_users = array(
  array(
    'username' => 'ray',
    'password' => 'woshidachunlv'
  ),
  array(
    'username' => 'jack',
    'password' => 'iloverose'
  ),
  array(
    'username' => 'rose',
    'password' => 'youjumpijump'
  )
);

用户名密码配置好后,去每一个 git 数据仓库的 .git/config 文件里面增加项目 (project) 级别的权限控制。例如 vue.git 项目中,给 ray 增加可读的权限:

[ray@aliyun vue.git]# pwd
/web/domain.com/git/repo/vue.git/

[ray@aliyun vue.git]# cat config
[core]
  repositoryformatversion = 0
  filemode = true
  bare = true
[gitphp]
  category = Vue
  description = Vue
  owner = Evan You
  cloneurl = http://git.domain.com:4096/vue.git
  pushurl = http://git.domain.com:4096/vue.git
  bugpattern = "/#([0-9]+)/"
  bugurl = http://bug.domain.com/projects/gitphp/issues/${1}
  compat = false
  website = http://www.domain.com/
  allowedusers = ray

不配置 [gitphp] 的话,默认对所有人可见。

Git-Lighttp 的权限控制

它依赖 htpasswd 文件来做权限控制。运行 htpasswd 命令能够添加用户,将结果放到 repo 根目录的 htpasswd 文件里。下面是我的配置:

[ray@aliyun repo]# pwd
/web/domain.com/git/repo
# 这是我的数据仓库位置

[ray@aliyun repo]# tree -L 1
.
|-- htpasswd
|-- gitphp.git
|-- vue.git
`-- vue-cli.git

[ray@aliyun repo]# cat htpasswd
ray:.za9933xxooB6

ray 就是我的用户名,在 clone 和 push 的时候会用到。

例如,在我的 Mac 上使用 git 仓库:


[ray@mac repo]#  git clone http://git.domain.com:4096/vue.git
Cloning into 'vue'...
Username for 'http://git.domain.com:4096': ray
Password for 'http://ray@git.domain.com:4096':
remote: Counting objects: 16183, done.
remote: Compressing objects: 100% (4274/4274), done.
remote: Total 16183 (delta 11817), reused 16172 (delta 11811)
Receiving objects: 100% (16183/16183), 5.33 MiB | 487.00 KiB/s, done.
Resolving deltas: 100% (11817/11817), done.
Checking connectivity... done.

总结

其实,还是 gitlab 省事,无奈 gitlab-ce 就不是诚心给人用,太难安装了。 如果你有钱,专门买个预装了 Gitlab 的 ECS,忒方便。 或者买个 预装 Ubuntu 的 ECS, 然后安装一个 Docker,最后搞个 Gitlab 的 Docker 发布包装一下就行了。

自己装一个 Git Server 是长久以来的打算,终于完成了,之后的代码管理可以更规范一些,不错不错。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gogs是一款极易搭建的自助Git服务。Gogs的目标是打造一个最简单、最快速和最轻松的方式搭建自助Git服务。使用Go语言开发使得Gogs能够通过独立的二进制分发,并且支持Go语言支持的所有平台,包括Linux、MacOSX、Windows以及ARM平台。 Gogs功能特性: 支持活动时间线 支持SSH以及HTTP/HTTPS协议 支持SMTP、LDAP和反向代理的用户认证 支持反向代理子路径 支持用户、组织和仓库管理系统 支持添加和删除仓库协作者 支持仓库和组织级别Web钩子(包括Slack集成) 支持仓库Git钩子和部署密钥 支持仓库工单(Issue)、合并请求(Pull Request)、Wiki以及保护分支 支持迁移和镜像仓库以及它的Wiki 支持在线编辑仓库文件和Wiki 支持自定义源的Gravatar和Federated Avatar 支持Jupyter Notebook 支持邮件服务 支持后台管理面板 支持MySQL、PostgreSQL、SQLite3、MSSQL和TiDB(实验性支持)数据库 支持多语言本地化(22种语言) 系统要求: 最低的系统硬件要求为一个廉价的树莓派 如果用于团队项目,建议使用2核CPU及1GB内存 浏览器支持: 请根据Semantic UI查看具体支持的浏览器版本。 官方支持的最小UI尺寸为1024*768,UI不一定会在更小尺寸的设备上被破坏,但我们无法保证且不会修复。 安装部署: 在安装Gogs之前,您需要先安装基本环境。 然后,您可以通过以下5种方式来安装Gogs: 二进制安装 源码安装 包管理安装 采用Docker部署 通过Vagrant安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值