Gogs搭建总结 | 我的日常分享

Gogs搭建总结

Gogs搭建总结

一、Gogs搭建–Linux

1.1 下载安装包

根据对应的系统版本类型选择下载。

0.12.6 @ 2022-03-19

系统名称 系统类型 SQLite PAM 下载 (GitHub)
Linux 386 HTTPS: ZIP | TAR.GZ
Linux amd64 HTTPS: ZIP | TAR.GZ
Linux armv7 HTTPS: ZIP | TAR.GZ
Linux armv8 HTTPS: ZIP | TAR.GZ
Windows amd64 HTTPS: ZIP | ZIP w/ mws
macOS amd64 HTTPS: ZIP
macOS arm64 HTTPS: ZIP

1.2 检查环境

  • 数据库(选择以下一项):

    • MySQL:版本 >= 5.7
    • PostgreSQL
    • TiDB(实验性支持,使用 MySQL 协议连接)
    • 或者 什么都不安装 直接使用 SQLite3
  • git

    (bash):

    • 服务端和客户端均需版本 >= 1.8.3
    • Windows 系统建议使用最新版
  • SSH 服务器:

    • 如果您只使用 HTTP/HTTPS 的话请忽略此项
    • 如果您选择在 Windows 系统使用内置 SSH 服务器,请确保添加 ssh-keygen 到您的 %PATH% 环境变量中
    • 推荐 Windows 系统使用 Cygwin OpenSSHCopssh
    • Windows 系统 请确保 Bash 是默认的 Shell 程序,而不是 PowerShell

1.3 解压安装

  1. 解压安装包

    截屏2022-03-27 14.21.18

  2. cd gogs进入当前解压的目录

    截屏2022-03-27 14.24.01

  3. 执行命令 ./gogs web

    截屏2022-03-27 14.25.55

    Gogs 默认会在端口 3000 启动 HTTP 服务,访问 /install 以进行初始配置(例如 http://localhost:3000/install )。然后根据提示填写相关的信息后完成即可。

    截屏2022-03-27 14.49.49

二、配置文件

默认配置文件

默认配置都保存在 conf/app.ini,您 永远不需要 编辑它。该文件从 v0.6.0 版本开始被嵌入到二进制中。将不能被更改。

自定义配置文件

那么,在不允许修改默认配置文件 conf/app.ini 的情况下,怎么才能自定义配置呢?很简单,只要创建 custom/conf/app.ini 就可以!在 custom/conf/app.ini 文件中修改相应选项的值即可。

例如,需要改变仓库根目录的路径:

1
2
[repository]
ROOT = /home/jiaxiaoyu/gogs-repositories

当然,您也可以修改数据库配置:

1
2
[database]
PASSWORD = root

三、守护进程启动gogs

如何以守护进程形式运行?

Gogs 拥有一些由第三方提供的脚本来支持以守护进程形式运行:

Systemd 服务

在 GitHub 上的 Gogs 仓库有一个 systemd 服务模版文件,您需要做出一定的修改才能够使用它:

  1. 更新 UserGroupWorkingDirectoryExecStartEnvironment 为相对应的值。其中 WorkingDirectory 为您的 Gogs 实际安装路径根目录。
  2. [可选] 如果您 Gogs 安装示例使用 MySQL/MariaDBPostgreSQLRedismemcached,请去掉相应 After 属性的注释。

当您完成修改后,请将文件保存至 /usr/lib/systemd/system/gogs.service,然后通过 sudo systemctl enable gogs 命令激活,最后执行 sudo systemctl start gogs

您可以通过 sudo systemctl status gogs -lsudo journalctl -b -u gogs 命令检查 Gogs 的运行状态。

需要根据安装路径修改这几处的值:

截屏2022-03-27 14.34.48

常用命令:

1
2
3
4
sudo systemctl enable gogs #激活配置文件
sudo systemctl start gogs #运行gogs
sudo systemcst status gogs -l #查看gogs运行情况
sudo systemctl stop gogs #停止gogs

正常运行的状态:

截屏2022-03-27 14.41.38

四、域名访问

使用 NGINX 的反向代理

nginx.conf 文件中,将下面的 server 部分增加至 http 分区内并重载配置:

1
2
3
4
5
6
7
8
server {
listen 80;
server_name git.yuencode.cn;

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

git提交大文件时发生错误

想要了解如何让 NGINX 支持大文件上传的讨论,可以查看 此贴 。一般 NGINX 会返回 413 错误,在ngnix配置文件中加入以下内容可以解决该问题:

1
client_max_body_size 50m;

如何使用 HTTPS?

custom/conf/app.ini 文件中修改下列配置选项(以下仅为示例):

1
2
3
4
5
[server]
PROTOCOL = https
EXTERNAL_URL = https://try.gogs.io/
CERT_FILE = custom/https/cert.pem
KEY_FILE = custom/https/key.pem

如果您想要使用自签名的 HTTPS,则可以使用下列命令来生成所需文件(需要使用构建标签 cert 或直接从官方下载二进制):

1
$ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com

1.将生成的证书存放至该目录

截屏2022-03-27 14.58.31

  1. 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [server]
    DOMAIN = git.yuencode.cn
    HTTP_PORT = 3033
    #http改为https
    EXTERNAL_URL = https://git.yuencode.cn/
    DISABLE_SSH = false
    #PROTOCOL设置为https
    PROTOCOL = https
    #设置证书路径
    CERT_FILE = custom/https/git.yuencode.cn_bundle.crt
    #设置证书路径
    KEY_FILE = custom/https/git.yuencode.cn.key
    SSH_PORT = 22
    START_SSH_SERVER = false
    OFFLINE_MODE = false
  2. 在nginx中配置域名的https

参考配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server {
#HTTP跳转HTTPS
listen 80;
server_name git.yuencode.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}
server
{
listen 443 ssl http2;
server_name git.yuencode.cn;
index index.php index.html index.htm default.php default.htm default.html;
root /www/gogs/public;
client_max_body_size 500m;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
ssl_certificate /www/server/panel/vhost/cert/git.yuencode.cn/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/git.yuencode.cn/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#配置反向代理
location / {
#这里将http://修改为https://
proxy_pass https://localhost:3033;
}

access_log /www/wwwlogs/git.yuencode.cn.log;
error_log /www/wwwlogs/git.yuencode.cn.error.log;
}

注意:

如果通过宝塔面板这里配置证书,可能会出现页面的js、css文件无法正确加载。

截屏2022-03-27 15.04.24

截屏2022-03-27 15.07.00

这是由于宝塔面板自动生成了一些配置文件,我们需要删除掉。删除下图中的两段配置即可

截屏2022-03-27 15.09.37