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


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


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

注意:首次设置Gogs时,将Gogs ssh服务从容器映射到主机并设置适当的SSH端口和URI设置非常重要。要使用上述配置访问和克隆Gogs Git存储库,请使用:git clone ssh://git@hostname:10022/username/myrepo.git例如。

/var/gogs在我的情况下,文件将存储在本地路径中。

目录/var/gogs保留Git存储库和Gogs数据:

/var/gogs
|-- git
| |-- gogs-repositories
|-- ssh
| |-- # ssh public/private keys for Gogs
|-- gogs
|-- conf
|-- data
|-- log

自定义目录

“自定义”目录在Docker环境中可能并不明显。将/var/gogs/gogs(在主机)和/data/gogs(容器)已经是“定制”目录,你不需要再创建一个层,而是直接编辑该目录下的相应文件。

带数据容器的卷

如果您更愿意将数据装载到数据容器,则首次执行的命令将如下所示:

#创建数据容器
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 1.9 Volume命令

#创建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,有些设置可能会令人困惑:

  • Repository Root Path:将其保留为默认值,/home/git/gogs-repositories因为start.sh已经为您建立了符号链接。
  • 运行用户:将其保留为默认值,git因为finalize.sh已经使用名称设置了用户git
  • :填写Docker容器IP(例如192.168.99.100)。但是,如果要从其他物理机访问Gogs实例,请填写Docker主机的主机名或IP地址。
  • SSH端口:使用来自Docker容器的公开端口。例如,您的SSH服务器22在Docker内部进行侦听,但是您通过公开了它10022:22,然后将其10022用于此值。不建议在Docker容器中内置SSH服务器
  • HTTP端口:使用您希望Gogs在Docker容器中侦听的端口。例如,您的Gogs3000在Docker内部进行侦听,通过公开了它10080:3000,但仍使用3000该值。
  • 应用程序URL:结合使用公开的HTTP端口值(例如http://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.conf 文件中,将下面的 server 部分增加至 http 分区内并重载配置:

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

location / {
proxy_pass http://localhost:3000;
}
}
配置子路径

如果您想要通过域名的子路径来访问 Gogs 实例,可以将 NGINX 的配置修改为以下形式(特别注意后缀 /):

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

location /gogs/ {
proxy_pass http://localhost:3000/;
}
}

然后在配置文件中设置 [server] EXTERNAL_URL = http://git.crystalnetwork.us/gogs/

迁移

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

备份MySQL数据库。

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

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

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

修改gogs主目录中的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/ 目录下创建一个自定义版本的副本实现 HTML 模板重载(包括邮件模板),该文件不会因为版本升级而受到影响,但可以会因为改动过大导致与后续版本不兼容。

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

  1. 复制模板文件 templates/home.tmpl 的内容
  2. 将修改保存到文件 custom/templates/home.tmpl

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

:warning: 当用户配置 [server] LOAD_ASSETS_FROM_DISK = true 时,邮件模板无法被重载

重载静态文件

用户可以通过在 custom/public/ 目录下创建一个自定义版本的副本实现静态文件重载(CSS、JavaScript、图片等等),该文件不会因为版本升级而受到影响,但可以会因为改动过大导致与后续版本不兼容。

例如,可以通过保存自定义图标到 custom/public/img/favicon.png 实现站点图标的重载。

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

注入自定义内容到模板中

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

了解更多有关 注入自定义头部和尾部。

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

注入自定义 CSS 文件

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

  1. custom/public/css/ 目录下创建一个名为 custom.css 的文件
  2. 向文件中添加一些 CSS 规则
  3. 编辑 custom/templates/inject/head.tmpl 文件并添加一行内容 <link rel="stylesheet" href="/css/custom.css">
  4. 重启 Gogs
  5. 后续对自定义 CSS 文件的编辑不需要重启 Gogs 实例

本地化 Gogs 应用

gogs做本地化也很方便,如果需要自定义展示的内容,可以修改其中的部分字段并保存到 custom/conf/locale/locale_<lang>.ini 中,然后重启 Gogs。


原文始发于微信公众号(云户):Gogs部署补充linux版和部分配置内容

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/35204.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!