# MySQL 8.0 与 Gogs 完整安装教程 # 纯 MySQL 8.0 版 Gogs 完整安装教程 全程使用官方 MySQL 8.0,步骤纯净可直接复制执行。 ## 一、服务器环境准备 ### 1. 更新系统依赖 ```Bash sudo apt update && sudo apt upgrade -y sudo apt install -y git curl ``` ### 2. 安装官方 MySQL 8.0 ```Bash # 下载 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 初始化与安全配置 ```Bash # 执行安全配置(必须操作) sudo mysql_secure_installation ``` 按提示设置: - 设置 root 密码 - 移除匿名用户:Y - 禁止 root 远程登录:Y // 这里应该设置为 N 因为要用navicat远程可视化 - 移除测试数据库:Y - 刷新权限:Y ### 4. 启动 MySQL 并设置开机自启 ```Bash sudo systemctl enable --now mysql sudo systemctl status mysql ``` 显示 `active (running)` 即为安装成功。 --- ## 二、创建 Gogs 专用数据库 ### 1. 登录 MySQL ```Bash sudo mysql -u root -p ``` ### 2. 执行数据库创建命令(直接复制运行) ```SQL 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. 验证数据库连接 ```Bash mysql -u gogs -p gogs ``` 正常进入即配置完成。 --- ## 三、安装配置 Gogs ### 1. 创建 Gogs 运行用户 ```Bash sudo adduser --system --shell /bin/bash --gecos 'Gogs' --group --disabled-password --home /home/gogs gogs ``` ### 2. 下载并安装 Gogs ```Bash 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 服务(开机自启) 创建服务文件: ```Bash sudo nano /etc/systemd/system/gogs.service ``` 粘贴内容: ```TOML [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 ``` 启动服务: ```Bash sudo systemctl daemon-reload sudo systemctl enable --now gogs sudo systemctl status gogs ``` --- ## 四、Web 界面完成安装 浏览器访问: ```Plain Text http://服务器IP:3000/install ``` ### 核心配置(严格填写) 1. **数据库配置** - 数据库类型:**MySQL** - 主机:`127.0.0.1:3306` - 用户名:`gogs` - 密码:`你设置的Gogs数据库密码` - 数据库名:`gogs` - 字符集:`utf8mb4` 2. **应用基础配置** - 仓库根目录:`/home/gogs/gogs-repositories` - 运行用户:`gogs` - 域名:服务器IP - 端口:3000 点击 **立即安装**,完成后第一个注册用户即为管理员。 --- ## 五、防火墙放行端口 ```Bash sudo ufw allow 3000/tcp sudo ufw allow 22/tcp sudo ufw reload ``` --- ## 六、Gogs 配置文件(备用) 路径: ```Plain Text /home/gogs/gogs/custom/conf/app.ini ``` MySQL 核心配置: ```TOML [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 排查。