搭建轻量级git server和git web UI

本文介绍了一种不使用GitLab的情况下搭建Git服务器的方法,通过GitPHP实现代码在线浏览及提交记录查看,通过Git-Lighttp提供HTTP形式的git clone/push服务,并详细介绍了配置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

如果你用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 是长久以来的打算,终于完成了,之后的代码管理可以更规范一些,不错不错。

### 如何在Git项目中实现WebUI或使用带有Web界面的Git工具 #### GitWebUI集成概述 为了使Git项目能够拥有Web用户界面(WebUI),通常的做法是在Git仓库内集成了支持Web访问的应用程序。对于现有的Git工作流来说,这意味着引入额外的服务层来处理HTTP请求并呈现HTML页面给客户端浏览器。 #### 使用GitHub Pages展示静态站点 一种简单的方法是利用像GitHub Pages这样的托管服务,在版本控制系统之上快速搭建起一个基于Markdown文档或其他静态资源构成的小型网站[^1]。这种方式适合用来发布API文档、项目介绍或是博客文章等内容。 #### 配置Python虚拟环境下的Web应用程序 当涉及到更复杂的动态网页开发时,则可能需要用到类似于`venv`这样的Python虚拟环境管理器来隔离依赖项,并通过安装Flask/Django框架等建立完整的Web应用服务器端逻辑[^2]。一旦完成设置之后,就可以按照常规流程提交代码至远程Git库了。 #### 替换默认前端模板 如果目标是替换现有项目的前端部分而保留后端不变的话,那么可以从移除原有的ClientApp目录开始着手准备新的React/Vue.js之类的预构建启动包作为替代方案[^3]。这一步骤同样适用于任何希望自定义外观风格或者增加特定功能特性的场合下。 #### 开源Git WebUI工具推荐 针对那些寻找现成解决方案的人群而言,市场上存在不少成熟的开源产品可供选择。例如Gogs/Gitea就是两个轻量级且易于部署的选择;而对于追求更高性能的企业级客户来讲,GitLab提供了更为全面的功能集合,不仅限于基本的版本控制操作还包括CI/CD流水线自动化等功能模块[^4]。 ```bash git clone https://github.com/go-gitea/gitea.git cd gitea make build ./gitea web ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值