关于复现BBS-GO

一、基础配置

使用镜像文件启用虚拟机,这里我使用的是24.04.4版本的Ubuntu,使用以下两行命令安装基础工具
sudo apt update && sudo apt upgrade -y(更新系统包)
sudo apt install -y curl wget git vim nano build-essential net-tools(下载工具)

安装1.24及以上版本的go语言(我这里安装的是1.24.4版本的GO语言)
wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz(下载压缩包)
sudo rm -rf /usr/local/go(若有旧版本的go语言则进行移除,没有则无需此操作)
sudo tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz(解压压缩包到指定位置)
rm go1.24.4.linux-amd64.tar.gz(移除压缩包)

配置环境变量
nano /etc/profile(使用nano或者vim对profile进行修改)
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.cn,direct(于profile最底部添加这四行代码以此启用全局变量和优化下载体验)
source /etc/profile(使配置生效)
go version(查看是否成功及检查版本)

安装Node.js、pnpm和前端依赖
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash –
sudo apt-get install -y nodejs
npm install -g pnpm
cd ../site(进入前端目录)
pnpm install(安装项目依赖,安装过程中出现警告运行pnpm approve-builds命令执行脚本)

验证安装Node.js
node -v
npm -v

二、下载编译BBS-GO

创建专属文件夹
sudo mkdir -p /opt/bbs-go

进入文件夹
cd /opt/bbs-go

下载BBS-GO代码
git clone https://github.com/mlogclub/bbs-go.git

编译项目
go mod download(下载依赖,需进入bbs-go中的server文件中)
make build (编译)

三、安装Mysql

安装Redis和MySQL
sudo apt install mysql-server

启用服务并开机自启
sudo systemctl start mysql
sudo systemctl enable mysql

可运行sudo mysql_secure_installation加固MySQL的安装

配置数据库
sudo mysql -u root -p(以root身份进入MySQL)
CREATE DATABASE bbsgo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(创建数据库bbsgo)
CREATE USER ‘bbsuser’@’localhost’ IDENTIFIED BY ‘你的密码’;(创建用户)
GRANT ALL PRIVILEGES ON bbsgo.* TO ‘bbsuser’@’localhost’;(赋予权限)
FLUSH PRIVILEGES;(刷新权限)
EXIT;(退出)

四、配置、部署文件

复制配置文件并进行修改
cp bbs-go.example.yaml bbs-go.yaml
nano bbs-go.yaml(根据自己的需求更改配置)

我这边复现主要注意以下几行配置:
Port: 8082 # 服务监听端口
BaseUrl: http://你的域名:8080 # 网站域名
# 数据库连接配置
DB:
Url: 用户名:密码@tcp(localhost:3306)/bbsgo_db?charset=utf8mb4&parseTime=True&loc=Local
# 日志配置
Logger:
Filename: /var/log/bbs-go/bbs-go.log # 确保日志目录存在并有写入权限

创建日志目录并授权
sudo mkdir -p /var/log/bbs-go
sudo chown -R $USER:$USER /var/log/bbs-go

配置前端环境
cp .env.example .env.production (复制示例文件,会发现没有.env.example这个文件)
nano .env.production(直接编辑生产环境配置)

设置后端API地址
SERVER_URL=http://你的域名:8082

构建生产版本
pnpm build

五、生产环境部署与进程管理

使用Supervisor管理后端进程

安装、配置Supervisor
sudo apt install supervisor -y

配置bbs-go后端配置
sudo nano /etc/supervisor/conf.d/bbs-go.conf

后端服务配置:
[program:bbs-go]
command=/opt/bbs-go/bbs-go/server/bbs-go -config /opt/bbs-go/bbs-go/server/bbs-go.yaml(这些路径为bbs-go的路径,每个人不太一样)
directory=/opt/bbs-go/bbs-go/server(同上)
process_name=bbs-go
autostart=true
autorestart=true
stopwaitsecs=10
user=bbsuser
redirect_stderr=true
stdout_logfile=/var/log/bbs-go/supervisor.log
stderr_logfile=/var/log/bbs-go/supervisor_err.log

使用PM2管理前端进程

安装PM2
sudo npm install -g pm2

使用PM2启动前端应用
pm2 start .output/server/index.mjs –name bbs-go-site

设置开机自启
pm2 startup
pm2 save

使用Nginx进行反向代理

安装、配置Nginx
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/bbs-go(创建站点配置)

配置示例:
server {
listen 80;
server_name 你的域名;(我这里使用的是本地域名:localhost)

# 前端站点代理
location / {
proxy_pass http://localhost:3000;
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;
}

# 后端 API 代理
location /api/ {
proxy_pass http://localhost:8082;
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;
}
}

启用站点并测试:
sudo ln -s /etc/nginx/sites-available/bbs-go /etc/nginx/sites-enabled/(启用站点)
sudo nginx -t(测试配置)
sudo systemctl reload nginx(重载配置)

启动服务并验证

启动Supervisor管理的后端服务
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart bbs-go

启动 PM2 管理的前端服务
pm2 restart bbs-go-site

启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

验证服务状态
sudo supervisorctl status bbs-go(检查后端服务)
pm2 status(检查前端服务)
sudo systemctl status nginx(检查Nginx服务)

六、完成安装

进入服务所在地址完成安装流程