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 私服搭建,一套搞下来,工具都弄明白了,可以出师了!

相关推荐
YoungHong199211 小时前
Git删除本地已经merge到远程的分支
git
内核程序员kevin16 小时前
GitHub新手入门 - 从创建仓库到协作管理
git·github
南城巷陌19 小时前
node.js实现批量修改git项目的数据源
git·node.js·修改git项目数据源
动不了一点1 天前
关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细
git
joan_851 天前
git提交顺序为什么是:add,conmmit,pull,push
git
yangmc042 天前
二维前缀和 子矩阵的和
c语言·数据结构·c++·git·算法·矩阵·图论
W、明义2 天前
IDEA git提交时如何忽略某个文件或文件夹
java·git·intellij-idea
我是哈哈hh2 天前
Linux环境基础开发工具的使用_yum源_vim_Git控制器
linux·运维·c++·git·vim·1024程序员节
待磨的钝刨2 天前
四期书生大模型实战营(【基础岛】- 第1关 | 书生·浦语大模型开源开放体系)
linux·服务器·git·python
single5942 天前
c++学习:封装继承多态
开发语言·c++·git·vscode·学习