Gogs部署补充版和部分配置内容


官网地址

https://github.com/gogs/gogs/tree/main/Docker#application

https://gogs.io/docs/

docker 安装

#`拉取镜像`
[root@localhost ~]# docker pull gogs/gogs
Using default tag: latest
latest: Pulling from gogs/gogs
cbdbe7a5bc2a: Pull complete 
81d0bde4fe48: Pull complete 
e9e8a66fcb2f: Pull complete 
852b83343c6f: Pull complete 
872ea13b4e20: Pull complete 
45149fdadb5d: Pull complete 
3c73f3d8a7ef: Pull complete 
b3bc6aa8b4de: Pull complete 
Digest: sha256:2ed2e994fb53a4b3ba7929ead17de27983a347983284984ffa7691967a82d1c5
Status: Downloaded newer image for gogs/gogs:latest
docker.io/gogs/gogs:latest
#`docker 创建/var/gogs目录 供服务使用`
##为了将数据保留在Docker容器之外,我们在此处做一个卷(/var/gogs-> /data),您可以根据自己的情况进行更改
[root@localhost ~]# mkdir -p /var/gogs
#第一次使用`docker run`。
$ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
/var/gogs
|-- git
| |-- gogs-repositories
|-- ssh
| |-- # ssh public/private keys for Gogs
|-- gogs
|-- conf
|-- data
|-- log
#创建数据容器
docker运行--name = gogs-data --entrypoint / bin / true gogs / gogs

#第一次使用`docker run`。
docker run --name = gogs --volumes-from gogs-data -p 10022:22 -p 10080:3000 gogs / gogs
#创建docker卷。
$ docker volume create --name gogs-data

#第一次使用`docker run`。
$ docker run --name = gogs -p 10022:22 -p 10080:3000 -v gogs-data:/数据gogs / gogs

配置运行

大多数设置都很明显并且易于理解,但是通过在Docker内部运行Gogs,有些设置可能会令人困惑:

/home/git/gogs-repositoriesstart.shgitfinalize.shgit192.168.99.1002210022:2210022300010080:30003000http://192.168.99.100:10080/

有关应用程序设置的完整文档,请参见此处。

linux部署

环境准备

MySQL环境这边先跳过了,不清楚的小伙伴可以自行百度

git安装

# yum -y install git
软件包 git-1.8.3.1-23.el7_8.x86_64 已安装并且是最新版本
# git --version # 查看git版本 以满足gogs 的要求
git version 1.8.3.1

版本选择问题

官方提供了很多个版本,我查询了自己的虚机系统版本,具体如下:

# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
# uname -srm
Linux 5.4.108-1.el7.elrepo.x86_64 x86_64

初步判断应该下载amd64版本,下载解压

# tar  -zxf  gogs_0.12.4_linux_amd64.tar.gz;   mv gogs    /gogs

groupadd git

useradd -r -g git git

chown -R  git:git   /gogs

# mkdir /gogs-repositories

#chown  -R  git:git   /gogs-repositories
chmod -R 777 /gogs

按照官网运行./gogs web报错如下:

# ./gogs web
./gogs: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./gogs)

网上搜索提示是GLIBC版本过低,但是升级这个类库的版本需要特别谨慎,这个是centos底层的C库的版本,几乎系统所有的应用都会依赖该库。所以至此分析,应该是版本的问题,由于官网并没有给出具体的linux版本对应关系,我这边打算换个低版本试试0.12.3。

重新下载gogs_0.12.3_linux_amd64.tar.gz之后很顺利就启动了,确认为版本问题。

配置运行

目前是窗口方式的启动,这种情况无法关闭对话框,生产环境肯定是需要做守护进程的。

nohup

nohup ./gogs web &

配置引导定制服务

修改初始化脚本


vi gogs/script/init/centos/gogs
  • GOGS_HOME 指向你 Gogs 的目录
  • GOGS_USER 指向你运行 Gogs 所用的用户,这个用户一定要存在且有相关权限
NAME=gogs
GOGS_HOME=/gogs
GOGS_PATH=${GOGS_HOME}/$NAME
GOGS_USER=root ##这里我是在root 用户下操作的,生产环境用git用户
SERVICENAME="Gogs"
LOCKFILE=/var/lock/subsys/gogs
LOGPATH=${GOGS_HOME}/log
LOGFILE=${LOGPATH}/gogs.log
RETVAL=0

然后将该文件拷贝到系统目录,并为其增加相关权限

# 修改初始化脚本
cd /gogs/script/init/centos/
sudo cp ./gogs /etc/init.d/
sudo chmod +x /etc/init.d/gogs

运行或重启服务

sudo service gogs start
sudo service gogs restart

windows部署

1、下载git for windows

https://github.com/git-for-windows/git/releases/download/v2.15.0.windows.1/Git-2.15.0-64-bit.exe

2、下载NSSM:

https://nssm.cc/release/nssm-2.24.zip

3、下载Gogs:

https://dl.gogs.io/0.11.29/windows_amd64.zip

4、安装git for windows:一直下一步完成。

5、安装NSSM:解压安装包:安装包解压至D:GitNSSM 设置系统变量:”控制面板” –> “系统和安全”–> “系统”–> “高级系统设置”–> “环境变量”–> “系统变量”–>”编辑系统变量”

一、在”变量值”项目添加NSSM文件路径”D:GitNSSMwin64″(记得在路径前添加半角”;”)

二、配置上git目录到path环境变量 C:Program Files (x86)Gitbin;

Gogs部署补充linux版和部分配置内容
img

6、添加Gogs到系统服务:安装包解压至:D:GitGogs 新建代码仓库目录:D:GitGogsdatarepositories 编辑系统安装文件:D:GitGogsscriptswindowsinstall-as-service.bat 修改如下项目:SET gogspath=D:GitGogs (按实际安装目录修改)

以管理权限运行安装脚本:

Gogs部署补充linux版和部分配置内容
img

安装完成!

Gogs部署补充linux版和部分配置内容
img

注意:有可能右键管理员运行会提示一直提示 未能安装服务 error setting startup parameters for the service

这时需要手工打开脚本,然后右键cmd–》管理员运行,一行行复制脚本执行,最终就能成功

注意:也可能是因为相关软件版本的问题。

Gogs部署补充linux版和部分配置内容
img

成功效果如下

系统服务列表:

Gogs部署补充linux版和部分配置内容
img

右键启动,设为自动,若修改配置文件,需要在此处右键重启。

管理

#关闭注册功能
DISABLE_REGISTRATION = true 重启
#登录后才可查看信息 当设置为True时
REQUIRE_SIGNIN_VIEW = ture(从 false 修改为 true)

部署

反向代理

如何使用 NGINX 的反向代理?

nginx.confserverhttp
server {
listen 80;
server_name git.crystalnetwork.us;

location / {
proxy_pass http://localhost:3000;
}
}
配置子路径
/
server {
listen 80;
server_name git.crystalnetwork.us;

location /gogs/ {
proxy_pass http://localhost:3000/;
}
}
[server] EXTERNAL_URL = http://git.crystalnetwork.us/gogs/

迁移

停止Gogs服务。防止迁移过程中有人修改。

备份数据库。

把数据库备份文件、gogs主目录、gogs-repositories目录,都拷贝到新机器上。

新机器上安装MySQL,创建gogs数据库和用户,导入备份数据。为简单起见,我使用了相同的数据库名,不给自己找麻烦。

在新机器上安装Git软件。我一开始图省事直接拷贝Git目录到新机器,并修改系统环境变量,把Git路径加入Path,但后来使用中遇到问题,最后还是重新安装了。

customconfapp.ini

如果在局域网做了代理服务来对外网提供git服务,别忘了同时修改代理服务器配置。

存在问题:

在按照上述方法迁移后出现路径问题:

在测试push时报错,remote: ./hooks/pre-receive: line 2: E:/gogs/gogs.exe: No such file or directory

发现在新环境的gogs-repositories/hooks文件夹下的post-receivepre-receiveupdate还是使用linux的路径,可以通过手动的方式逐一修改这些脚本,手工改一个两个没问题,每个仓库都改,岂不累死?

gogs的大咖还是给力,在控制面板的管理员操作中发现了批量修改的方法

Gogs部署补充linux版和部分配置内容
image-20210119233506678
Gogs部署补充linux版和部分配置内容
img

执行后OK。

模板定义

需要先到Git上下载源码中的templates,一定要选择与部署版本一致的模板,否则会有问题。

重载 HTML 模板

custom/templates/

例如,可以通过以下步骤自定义站点首页:

templates/home.tmplcustom/templates/home.tmpl

:warning: 所有针对自定义模板的修改都需要重启 Gogs 实例

[server] LOAD_ASSETS_FROM_DISK = true

重载静态文件

custom/public/
custom/public/img/favicon.png

:warning: 所有针对自定义静态文件的修改都不需要重启 Gogs 实例

注入自定义内容到模板中

您可以不需要修改仓库源码就能注入自定义头部和尾部内容,这对添加分析代码和自定义静态资源非常有用。

在条件允许的情况下,尽可能使用该方案以减少对模板渲染的影响。

注入自定义 CSS 文件

这里展示如何为您的 Gogs 实例添加自定义 CSS 文件,目录和文件名都是为了方便演示,您可以把文件放在任何能够通过网络访问的目录。

custom/public/css/custom.csscustom/templates/inject/head.tmpl

本地化 Gogs 应用

custom/conf/locale/locale_.ini