gogs-mysql安装.md 9.6 KB

MySQL 8.0 与 Gogs 完整安装教程

纯 MySQL 8.0 版 Gogs 完整安装教程

全程使用官方 MySQL 8.0,步骤纯净可直接复制执行。

一、服务器环境准备

1. 更新系统依赖


sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl

2. 安装官方 MySQL 8.0


# 下载 MySQL 官方源
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb

# 安装源(弹出界面直接按 Tab → OK 确认)
sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb

# 更新并安装 MySQL 8.0
sudo apt update
sudo apt install -y mysql-server mysql-client

3. MySQL 初始化与安全配置


# 执行安全配置(必须操作)
sudo mysql_secure_installation

按提示设置:

  • 设置 root 密码

  • 移除匿名用户:Y

  • 禁止 root 远程登录:Y // 这里应该设置为 N 因为要用navicat远程可视化

  • 移除测试数据库:Y

  • 刷新权限:Y

4. 启动 MySQL 并设置开机自启


sudo systemctl enable --now mysql
sudo systemctl status mysql

显示 active (running) 即为安装成功。


二、创建 Gogs 专用数据库

1. 登录 MySQL


sudo mysql -u root -p

2. 执行数据库创建命令(直接复制运行)


CREATE DATABASE gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'gogs'@'localhost' IDENTIFIED BY '你的Gogs数据库密码';
GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3. 验证数据库连接


mysql -u gogs -p gogs

正常进入即配置完成。


三、安装配置 Gogs

1. 创建 Gogs 运行用户


sudo adduser --system --shell /bin/bash --gecos 'Gogs' --group --disabled-password --home /home/gogs gogs

2. 下载并安装 Gogs


GOGS_VERSION="0.13.3"
sudo curl -L https://github.com/gogs/gogs/releases/download/v${GOGS_VERSION}/gogs_${GOGS_VERSION}_linux_amd64.tar.gz -o /tmp/gogs.tar.gz

sudo tar -zxvf /tmp/gogs.tar.gz -C /home/gogs/
sudo chown -R gogs:gogs /home/gogs
sudo chmod +x /home/gogs/gogs/gogs

3. 配置 Systemd 服务(开机自启)

创建服务文件:


sudo nano /etc/systemd/system/gogs.service

粘贴内容:


[Unit]
Description=Gogs Git Service
After=network.target mysql.service

[Service]
User=gogs
Group=gogs
WorkingDirectory=/home/gogs/gogs
ExecStart=/home/gogs/gogs/gogs web
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

启动服务:


sudo systemctl daemon-reload
sudo systemctl enable --now gogs
sudo systemctl status gogs

四、Web 界面完成安装

浏览器访问:


http://服务器IP:3000/install

核心配置(严格填写)

  1. 数据库配置

    • 数据库类型:MySQL

    • 主机:127.0.0.1:3306

    • 用户名:gogs

    • 密码:你设置的Gogs数据库密码

    • 数据库名:gogs

    • 字符集:utf8mb4

  2. 应用基础配置

    • 仓库根目录:/home/gogs/gogs-repositories

    • 运行用户:gogs

    • 域名:服务器IP

    • 端口:3000

点击 立即安装,完成后第一个注册用户即为管理员。


五、防火墙放行端口


sudo ufw allow 3000/tcp
sudo ufw allow 22/tcp
sudo ufw reload

六、Gogs 配置文件(备用)

路径:


/home/gogs/gogs/custom/conf/app.ini

MySQL 核心配置:


[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs
USER = gogs
PASSWD = 你的密码
CHARSET = utf8mb4

七、常见问题

  1. MySQL 连接失败

    • 检查密码是否正确

    • 确认 MySQL 运行状态:sudo systemctl status mysql

  2. 页面 500 错误

    • 修复目录权限:sudo chown -R gogs:gogs /home/gogs
  3. 中文/表情乱码

    • 数据库必须使用 utf8mb4 编码

总结

本教程纯官方 MySQL 8.0 + Gogs 标准部署,步骤极简、无冗余内容,直接复制即可完成安装。

以上操作完成以后,还有nginx和阿里云等配置

Nginx 反向代理绑定域名及访问(Gogs 适配版)

本教程为 Gogs 安装完成后,通过 Nginx 反向代理实现域名直接访问(无需携带 3000 端口)的完整步骤,适配 MySQL 8.0 + Gogs 环境,全程可复制执行,支持后续 HTTPS 配置。

一、安装 Nginx

// 更新系统依赖(确保安装最新版本 Nginx) sudo apt update // 安装 Nginx sudo apt install -y nginx // 启动 Nginx 并设置开机自启 sudo systemctl enable --now nginx // 验证 Nginx 运行状态(显示 active (running) 即为成功) sudo systemctl status nginx

二、域名解析(前提操作)

登录你的域名服务商(如阿里云、腾讯云),进入域名解析控制台,添加 A 记录,将域名指向你的服务器公网 IP:

  • 记录类型:A(将域名指向 IPv4 地址)

  • 主机记录:@(主域名,如 gogs.example.com 则填 gogs)

  • 记录值:服务器公网 IP(如 47.101.xxx.xxx)

  • TTL:默认 10 分钟(解析生效时间,耐心等待即可)

验证解析是否生效:在本地终端执行 ping 你的域名,返回服务器 IP 即解析成功。

三、配置 Nginx 反向代理(核心步骤)

创建 Gogs 专用的 Nginx 配置文件,避免与默认配置冲突:

// 进入 Nginx 配置目录,创建配置文件(替换 your-domain.com 为你的实际域名) sudo nano /etc/nginx/sites-available/your-domain.com.conf

粘贴以下配置(替换所有 your-domain.com 为你的域名,无需修改其他内容):

server {

// 监听 80 端口(HTTP 默认端口,无需携带端口访问)
listen 80;
// 绑定你的域名(多个域名用空格分隔,如 your-domain.com www.your-domain.com)
server_name your-domain.com;
// 允许大文件上传(适配 Gogs 代码仓库推送,可根据需求调整)
client_max_body_size 5G;

// 核心反向代理配置,将域名请求转发到 Gogs 的 3000 端口
location / {
    proxy_pass http://localhost:3000;
    // 传递客户端真实 IP 和域名信息,避免 Gogs 识别异常
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    // 支持 WebSocket(适配 Gogs 实时通知功能)
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_cache_bypass $http_upgrade;
}

}

保存并退出:按 Ctrl+O → 回车确认 → Ctrl+X。

四、启用 Nginx 配置并重启服务

// 创建软链接,让 Nginx 加载该配置文件(替换 your-domain.com 为你的域名) sudo ln -s /etc/nginx/sites-available/your-domain.com.conf /etc/nginx/sites-enabled/ // 禁用 Nginx 默认配置,避免端口冲突 sudo rm -f /etc/nginx/sites-enabled/default // 检查配置文件语法(关键步骤,避免配置错误导致 Nginx 无法启动) sudo nginx -t // 语法无错误后,重启 Nginx 使配置生效 sudo systemctl restart nginx

提示 nginx: configuration file /etc/nginx/nginx.conf test is successful 即为配置语法正确。

五、放行 80 端口(防火墙配置)

// 放行 80 端口(HTTP 访问,域名访问必备) sudo ufw allow 80/tcp // 重新加载防火墙规则 sudo ufw reload

六、调整 Gogs 配置(确保域名访问正常)

修改 Gogs 配置文件,同步域名信息,避免跳转异常:

// 编辑 Gogs 核心配置文件 sudo nano /home/gogs/gogs/custom/conf/app.ini

找到 [server] 段落,修改以下参数(替换 your-domain.com 为你的域名):

[server] HTTP_PORT = 3000 SSH_PORT = 22 DOMAIN = your-domain.com # 改为你的域名 ROOT_URL = http://your-domain.com/ # 域名访问地址,末尾加 / 这里默认是localhost:3000 记得修改 // 要不然代码的http地址就无法访问 PROTOCOL = http

保存退出后,重启 Gogs 服务使配置生效:

sudo systemctl restart gogs

七、验证域名访问

打开浏览器,直接访问 http://你的域名(无需加 :3000 端口),能正常进入 Gogs 登录页,即为反向代理配置成功。

八、可选:配置 HTTPS(免费 SSL 证书)

这里的证书 需要去阿里云官网申请https://yundun.console.aliyun.com/?spm=5176.100251.111252.41.6d784f15w8yDiA&p=cas#/instance/test/cn-hangzhou

SSL证书 然后填入 比如 git.leadmuta.com 再去nginx配置好该证书即可通过域名访问

为提升安全性,可通过 Let's Encrypt 申请免费 SSL 证书,实现 HTTPS 访问,步骤如下:

// 安装 Certbot 工具(用于申请免费 SSL 证书) sudo apt install -y certbot python3-certbot-nginx // 申请并自动配置 SSL 证书(替换 your-domain.com 为你的域名) sudo certbot --nginx -d your-domain.com

按提示操作:输入邮箱 → 同意协议 → 选择是否接收通知(随意选择),等待证书申请完成,Certbot 会自动修改 Nginx 配置,开启 HTTPS 并将 HTTP 自动跳转至 HTTPS。

验证 HTTPS:访问 https://你的域名,浏览器地址栏显示小锁图标即为成功。

反向代理常见问题

  • 域名访问 404:检查 Nginx 配置文件中的域名是否正确,软链接是否创建成功,执行 sudo nginx -t 排查语法错误。

  • 访问跳转异常:确认 Gogs 配置文件中 ROOT_URL 末尾是否加 /,未加会导致静态资源加载失败。

  • Nginx 启动失败:大概率是配置文件语法错误,检查分号、大括号是否闭合,重新执行 sudo nginx -t 排查。