自建 git 服务器

所有老板(至少 99%)都一样,想花一分钱办两分钱的事,想招十块钱的人干二十块钱的事......我表示理解(A Pei ~~ 既想马儿跑得快,又想马儿不吃草)

在老板眼中,我恰好是那个性价比最高的人(自以为是)!对于我来说,多学点东西不是什么坏事,虽然有点辛苦。我一贯赞同一个观点:在一件中上超过90%以上的人,不容易;在两件事上超过80%以上的人,相对容易;......在五件事、十件事上超过90%以上的人,也相对容易!在快认(天)命的年纪,我有勇气和能力认为工作对于我而言就是工作而已,我不看重任何一份工作,但是只要我干,我就会努力去干好,尽一个职工打工人的本分。

gitee 企业版......呵呵!gitee 私域部署......呵呵呵!

我总不能天天找小伙伴们要源码吧,我不愿意被人 BS:既不专业又多心!这点我也理解:毕竟源码也是公司的资产,现在的小伙伴们流动又快,谁能保证走的时候源码是完整的?

于是,自建 git 服务器就是当下要紧的任务了。

网上搜索了相关的资料,以为 Gitea 是最为理想的方案。开源、免费,支持代码审查、错误跟踪、网络托管、私人分支、个人分支、自托管,版本控制系统为 git (接地气),除不支持构建系统、发布二进制文件外和商业支持外,可以说接近于完美了。而且是开箱即用,只需简单配置即可搭建完成。

服务器:实体、云、虚拟,均可(本例是 win 的 server 系统)

git 工具包:Git,自行安装即可

gitea软件包https://github.com/go-gitea/gitea/releases,相对麻烦一点点,老司机都懂得如何踩油门加速,想办法弄下来就是成功(本例下的是 windows-4.0-amd64,建议下载压缩包,不压缩下载还是有些慢的)

要戳"show all ......",不然是找不到 win 的包的。

sqlite3:SQLite Download Page,小型、快速,免安装(需配置环境变量,方便迁移)

sqlite3 解压到文件夹中(不要有中文、空格、特殊字符等),环境变量中系统变量 Path 添加一条 sqlite3 所在路径(界面为 power toys 系统变量编辑界面)

gitea 下载(解压)完成,放到一个文件夹中(开箱即用,无需安装),位置任意但不建议有中文字符、空格及特殊符号。

自动生成目录不用管。data 目录为手动创建,用于存放数据库及仓库相关文件。data 目录下又有手工创建目录 DB,用于存放 sqlite3 数据库文件。

所有手工创建目录必须要创建,否则在配置时会出错。

运行 gitea,如图。

访问默认地址:localhost:3000,配置说明如下图:

可选设置,依个人实际进行设置即可,无要求可默认。

管理员账号是必须要有,不然何以掌控全局?!填之......

稍等十秒左右,系统就部署完成。因为创建了管理员账号,部署完成后直接进入账号仓库界面。

按正常步骤创建仓库。除仓库名称是必填外(拥有者,可以选择注册用户),其它为选填。

创建完成!

github 20年10月1日后将新库主分支名称改为 main,而 git 默认初始化本地仓库仍为 master,可能导致推送到远程会出现这样或那样的问题。我们修改 git 配置文件(2.X 以上版本支持),将默认(主)分支名称改为 main。修改地方如下图。

万事俱备,以本地现有项目为基础,初始化本地仓库(git 已经安装或配置好)并推送到远程。

推送到远程,提示安全认证未启用。

再次强制推送(--force,创建时初始化了远程仓库【空库,仅有.gitignore】,但未做同步,因此强制推送,本地覆盖远程),弹出对话框要求验证。输入用户密码,确定。推送成功。再次推送时即无需再次认证了。

最终仓库内空如下:

成功!后续研究启用 https 的方法,成功便更新。


gitea 启动后的命令行窗口不能关闭。


一个可以坠落的老菜鸡的自我救赎!

自勉!!!


开启了 https ,因使用的是自签名,所以也一样要添加用户凭据, 添加过一次后续就可以直接 push 推送了。【后面有空再研究使用第三方证书颁发机构签名】

生成自签名,两个签名文件在 gitea 所在目录中,将两个文件复制到 custcom 目录中。

注意:gitea cert --host [127.0.0.1],这里的 gitea 是 gitea 的文件名。如是有版本号则为:

gitea-1.22.1-windows-4.0-amd64 cert --host [127.0.0.1]

嫌麻烦可以修改 gitea 的文件名。

;; HOST 是 gitea 服务器的地址/域名,架在内网的就直接使用内网 IP
gitea cert --host [HOST]

本次使用 gitea 内置的 HTTPS 支持,通过编辑 app.ini 文件实现。app.ini 文件在 custcom 下 的 conf 目录中。修改如下:

    [server]
    PROTOCOL  = https
    ROOT_URL  = https://git.example.com:3000/
    HTTP_PORT = 3000
    CERT_FILE = cert.pem
    KEY_FILE  = key.pem

ROOT_URL 和 HTTP_PORT 按实际进行修改。

重新启动 gitea 后,就只能使用 https 登录 ROOT_URL 指定的地址了,127 的回环地址不能使用了。

漏了一点:要设置HTTP重定向。Gitea服务器仅支持监听一个端口;要重定向 HTTP 请求至 HTTPS 端口,需要启用HTTP重定向服务:

[server]
REDIRECT_OTHER_PORT = true
;; Port the redirection service should listen on
PORT_TO_REDIRECT = 3080
相关推荐
Nu11PointerException2 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
2401_850410832 小时前
文件系统和日志管理
linux·运维·服务器
一只哒布刘4 小时前
NFS服务器
运维·服务器
但老师4 小时前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y4 小时前
git创建分支
git
@小博的博客5 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
lihuhelihu6 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
南宫生6 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
山东布谷科技官方6 小时前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
爱吃喵的鲤鱼6 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++