博客

  • 你好

    这里是lzzut的博客,主要用来分享自己的一些学习经验,如代码或项目相关的学习经验,后续也可能分享一些其他的,我会使用分类功能进行区分。

  • 关于复现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服务)

    六、完成安装

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