全程使用官方 MySQL 8.0,步骤纯净可直接复制执行。
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl
# 下载 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
# 执行安全配置(必须操作)
sudo mysql_secure_installation
按提示设置:
设置 root 密码
移除匿名用户:Y
禁止 root 远程登录:Y // 这里应该设置为 N 因为要用navicat远程可视化
移除测试数据库:Y
刷新权限:Y
sudo systemctl enable --now mysql
sudo systemctl status mysql
显示 active (running) 即为安装成功。
sudo mysql -u root -p
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;
mysql -u gogs -p gogs
正常进入即配置完成。
sudo adduser --system --shell /bin/bash --gecos 'Gogs' --group --disabled-password --home /home/gogs 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
创建服务文件:
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
浏览器访问:
http://服务器IP:3000/install
数据库配置
数据库类型:MySQL
主机:127.0.0.1:3306
用户名:gogs
密码:你设置的Gogs数据库密码
数据库名:gogs
字符集:utf8mb4
应用基础配置
仓库根目录:/home/gogs/gogs-repositories
运行用户:gogs
域名:服务器IP
端口:3000
点击 立即安装,完成后第一个注册用户即为管理员。
sudo ufw allow 3000/tcp
sudo ufw allow 22/tcp
sudo ufw reload
路径:
/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
MySQL 连接失败
检查密码是否正确
确认 MySQL 运行状态:sudo systemctl status mysql
页面 500 错误
sudo chown -R gogs:gogs /home/gogs中文/表情乱码
utf8mb4 编码本教程纯官方 MySQL 8.0 + Gogs 标准部署,步骤极简、无冗余内容,直接复制即可完成安装。
Nginx 反向代理绑定域名及访问(Gogs 适配版)
本教程为 Gogs 安装完成后,通过 Nginx 反向代理实现域名直接访问(无需携带 3000 端口)的完整步骤,适配 MySQL 8.0 + Gogs 环境,全程可复制执行,支持后续 HTTPS 配置。
// 更新系统依赖(确保安装最新版本 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 即解析成功。
创建 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 加载该配置文件(替换 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 端口(HTTP 访问,域名访问必备) sudo ufw allow 80/tcp // 重新加载防火墙规则 sudo ufw reload
修改 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 登录页,即为反向代理配置成功。
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 排查。