Git 代码库 gogs 部署私服及 https 配置手册

背景

玩了一下 Git ,想到一个问题:企业内部怎么用 Git 呢?仓库哪里来呢?

理一理 Git 及其相关产品的区别:

  1. Git 分布式版本管理工具。
  2. GitHub 和 Gitee ,基于 Git 的互联网代码托管平台,一个是国外的,一个是国内的。
  3. GitLab,基于 Git 的互联网代码托管平台,可以在企业内部局域网部署,缺点是重量级。
  4. gogs,基于 Git 、易于搭建的 Git 服务,轻量级。
  5. Gitea,类似 gogs ,轻量级 Git 平台。

所以小项目、小公司,又不想曝露在互联网上的话,可以选择 gogs 来部署。部署 gogs 玩了一下,确实很容易。

安装

CentOS 系统下,准备操作:

  1. yum install git。
  2. 官网下载地址,下载最新版本 gogs_0.13.0_linux_386.tar.gz ,上传目标服务器。
  3. 解压:tar -xvf gogs_0.13.0_linux_386.tar.gz
  4. 进入解压目录 gogs ,后台进程方式执行 :nohup ./gogs web &

第四步执行过程中,如果 go 依赖包不存在时,会碰到两个错误:

  • 错误一: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录。解决办法:执行安装命令 yum -y install glibc.i686
  • 错误二:libpam.so.0: cannot open shared object file: No such file or directory。解决办法:执行安装命令 yum install libpam.so.0

解决完这两个问题后,再次执行启动命令:./gogs web

初始化

gogs 启动成功后,默认端口是 3000,访问安装页面: 简单配置为 SQLite3 数据库。

域名 localhost 改为目标主机 IP,系统运行用户设置为启动用户,SSH 勾选内置修改默认端口。 不创建用户,直接提交,自动跳转到登录首页: 创建一个用户,第一个帐号被视为管理员用户。

使用

创建用户并登录,进入系统首页: 操作界面比较简单,基本操作有:

  1. 创建组织
  2. 创建仓库
  3. 邀请成员

新建仓库的时候,总是会报错,多试几次就能创建成了。

访问仓库

创建仓库后,使用 SourceTree 克隆该仓库,就可以像其他开源应用一样访问 gogs 上托管的应用了。

推送时会弹出帐号认证配置: 输入在 gogs 上注册的帐号和密码后,就完成了文件推送了。

https 部署

如果需要将 gogs 改成 https 的部署方式,需要执行的操作: 第一步,修改 conf/app.ini 配置的 [server] 部分添加 PROTOCOL=https 第二步,生成 https 证书文件目录及文件: 这是官网搜到的默认的 https 的默认配置信息,需要生成证书文件放在 custom/https 目录下。

没有证书和公钥文件,需要自己生成一个,且不能带密码,参考《go配置tls证书_screego 安装配置教程》 这篇文章的方法生成的证书,能够被 gogs 解析。

手动生成证书的步骤:

  1. 生成密钥文件:openssl genrsa -des3 -out server.key 2048
  2. 去除设置的密码:openssl rsa -in server.key -out server.key
  3. 证书的申请:openssl req -new -key server.key -out server.csr
  4. 创建 CA 证书:openssl req -new -x509 -key server.key -out ca.crt -days 3650
  5. 创建服务器证书:openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
  6. 重命名为 pem 后缀:cp server.crt cert.pem
  7. 重命名为 pem 后缀:cp server.key key.pem

关键操作是第 2 步,去除证书文件的密码,否则启动的时候报证书解析错误:[FATAL] [gogs.io/gogs/internal/cmd/web.go:776 runWeb()] Failed to start server: tls: failed to parse private key。

注意,私服设置为 https 协议后,Git GUI 客户端访问的时候会报自签名证书错误:

解决办法是添加配置:git config --global http.sslVerify false

启示录

还有最后一个问题没解决,就是使用 SourceTree 访问 gogs 私服仓库的时候,每次都需要输入 gogs 的密码,想在 SourceTree 中创建全局帐号,尝试了每一种托管主机都不可行: 虽然麻烦一点,但是 Git 的操作的路径是打通了的。

总结:Git 基本用法、Git GUI 客户端用法 、gogs 私服搭建,一套搞下来,工具都弄明白了,可以出师了!

相关推荐
int WINGsssss9 小时前
Git使用
git
用户07605303543811 小时前
Git Revert:安全移除错误提交的方式
git
Good_Starry1 天前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
F_D_Z1 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
等风来不如迎风去2 天前
【git】main|REBASE 2/6
git
艾伦~耶格尔2 天前
IDEA 配置 Git 详解
java·ide·git·后端·intellij-idea
云兮杜康2 天前
IDEA中用过git之后文件名颜色全变红
java·git·intellij-idea
睡不醒的小泽2 天前
git merge 和 git rebase
git
艾伦~耶格尔2 天前
Git 下载及安装超详教程(2024)
git·gitee·码仓