安装使用Yuelai Engine Blog - 后端篇

2026/5/14 00:54:01Chixm3 阅读0 点赞0 评论

前言

本文章非真正意义上的从零开始部署,只是自己做一个记录。阅读本文时,默认你是会一些知识的

环境要求及目录说明

本文基于阿里云服务器部署

系统版本: Ubuntu 24.04

中间件及环境:Nginx1.28,Node.js v24.15.0,MySQL8.0,Redis 8.6.3

注意:Nuxt 3 对 Node.js版本有明确要求,最低v18.x,本文基于v24.x版本

本文章基于 /opt 目录,创建yuelaiengine子目录归类存档本次部署的所有文件

再自己准备一个域名,访问后台会用到,

本文后端域名admin.chixm.group

环境安装

只做简短命令记录,更多详细的东西可以前往之前记录的文章查看,或者网上自行搜索

Nginx

BASH
# 1.安装必要依赖
apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring

# 2.导入Nginx官方签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

# 3.添加Nginx官方APT仓库(适用于Ubuntu 24.04,代号为noble)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu noble nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

# 4.更新软件包列表并安装Nginx
sudo apt update
# 查看可安装的 nginx 版本
sudo apt-cache show nginx
#安装nginx 1.28.2
sudo apt-get install nginx=1.28.2-1~noble
# 查看Nginx版本
sudo nginx -v

Node.js

BASH
# 安装 Node.js 版本管理工具 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# 生效环境
source ~/.bashrc

# 验证版本
nvm --version

# 安装 Node.js
nvm install 24.15.0

MySQL

BASH
# 安装MySQL8.0
sudo apt -y install mysql-server

# 查看MySQL版本
mysql -V

# 配置MySQL

#进入MySQL
sudo mysql

#设置root用户密码
## 密码以Mysql.1234为例
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql.1234';

## 退出MySQL数据库
exit;

# 对MySQL进行安全性配置
sudo mysql_secure_installation

Redis

BASH
# 1. 安装依赖
sudo apt install lsb-release curl gpg -y

# 2. 添加 Redis 官方 GPG 密钥
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg

# 3. 添加官方软件源
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

# 4. 更新并安装 Redis
sudo apt update
sudo apt install redis -y

# 验证安装
# 查看版本
redis-server --version
# 查看服务状态
sudo systemctl status redis
# 测试连接
redis-cli ping
# 输出 PONG 即正常

后端部署

在/opt目录下创建一个文件夹yuelaiengine做本次部署的根目录

BASH
root@iZj6cbfy3py6qd7ogbsnkkZ:/opt/yuelaiengine# pwd
/opt/yuelaiengine

后端,不需要环境,二进制程序文件。在yuelaiengine目录下,把提供的文件直接上传就行。

上传成功后,设置权限,chmod +x 加后端文件名

BASH
chmod +x /opt/yuelaiengine/yuelai-engine-server-linux-amd64
BASH
root@iZj6cbfy3py6qd7ogbsnkkZ:/opt/yuelaiengine# ls
yuelai-engine-server-linux-amd64
root@iZj6cbfy3py6qd7ogbsnkkZ:# chmod +x /opt/yuelaiengine/yuelai-engine-server-linux-amd64

创建后端配置文件

在yuelai-engine-server-linux-amd64 的同级目录 /opt/yuelaiengine 下创建一个配置文件 config.yaml,内容如下

YAML
aliyun-oss:
    endpoint: yourEndpoint
    access-key-id: yourAccessKeyId
    access-key-secret: yourAccessKeySecret
    bucket-name: yourBucketName
    bucket-url: yourBucketUrl
    base-path: yourBasePath
aws-s3:
    bucket: xxxxx-10005608
    region: ap-shanghai
    endpoint: ""
    secret-id: your-secret-id
    secret-key: your-secret-key
    base-url: https://www.yuelaigroup.com
    path-prefix: yuelai-engine
    s3-force-path-style: false
    disable-ssl: false
captcha:
    key-long: 4
    img-width: 240
    img-height: 80
    open-captcha: 3
    open-captcha-timeout: 3600
cors:
    mode: strict-whitelist
    whitelist:
        - allow-origin: example1.com
          allow-methods: POST, GET
          allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id
          expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
          allow-credentials: true
        - allow-origin: example2.com
          allow-methods: GET, POST
          allow-headers: content-type
          expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
          allow-credentials: true
db-list:
    - type: ""
      alias-name: ""
      prefix: ""
      port: ""
      config: ""
      db-name: ""
      username: ""
      password: ""
      path: ""
      engine: ""
      log-mode: ""
      max-idle-conns: 10
      max-open-conns: 100
      singular: false
      log-zap: false
      disable: true
disk-list:
    - mount-point: /
email:
    to: xxx@qq.com
    from: xxx@163.com
    host: smtp.163.com
    secret: xxx
    nickname: test
    port: 465
    is-ssl: true
    is-loginauth: false
mq:
    driver: redis
    queue-len: 64
    rabbitmq:
        url: amqp://guest:guest@127.0.0.1:5672/
        exchange: engine.exchange
        exchange-type: direct
        dlx-exchange: engine.dlx
        dlx-exchange-type: direct
        consumer-tag: engine-consumer
        prefetch-count: 16
jwt:
    signing-key: 5d303b70-862d-4494-a4c7-d86485829932
    expires-time: 7d
    buffer-time: 1d
    issuer: yuelaigroup
oidc:
    enabled: false
    provider-name: ""
    login-button-text: "Sign in with OIDC"
    issuer-url: ""
    client-id: ""
    client-secret: ""
    redirect-url: ""
    scopes:
        - openid
        - profile
        - email
    allow-auto-bind: true
    allow-auto-register: true
local:
    path: /uploads/file
    store-path: uploads/file
minio:
    endpoint: yourEndpoint
    access-key-id: yourAccessKeyId
    access-key-secret: yourAccessKeySecret
    bucket-name: yourBucketName
    use-ssl: false
    base-path: ""
    bucket-url: http://host:9000/yourBucketName
mongo:
    coll: ""
    options: ""
    database: ""
    username: ""
    password: ""
    auth-source: ""
    min-pool-size: 0
    max-pool-size: 100
    socket-timeout-ms: 0
    connect-timeout-ms: 0
    is-zap: false
    hosts:
        - host: ""
          port: ""
mysql:
    prefix: ""
    port: ""
    config: ""
    db-name: ""
    username: ""
    password: ""
    path: ""
    engine: ""
    log-mode: ""
    max-idle-conns: 10
    max-open-conns: 100
    singular: false
    log-zap: false
pgsql:
    prefix: ""
    port: ""
    config: ""
    db-name: ""
    username: ""
    password: ""
    path: ""
    engine: ""
    log-mode: ""
    max-idle-conns: 10
    max-open-conns: 100
    singular: false
    log-zap: false
qiniu:
    zone: ZoneHuaDong
    bucket: ""
    img-path: ""
    access-key: ""
    secret-key: ""
    use-https: false
    use-cdn-domains: false
redis:
    name: ""
    addr: 127.0.0.1:6379
    password: ""
    db: 0
    useCluster: false
    clusterAddrs:
        - 172.21.0.3:7000
        - 172.21.0.4:7001
        - 172.21.0.2:7002
redis-list:
    - name: cache
      addr: 127.0.0.1:6379
      password: ""
      db: 0
      useCluster: false
      clusterAddrs:
        - 172.21.0.3:7000
        - 172.21.0.4:7001
        - 172.21.0.2:7002
sqlite:
    prefix: ""
    port: ""
    config: ""
    db-name: engine
    username: ""
    password: ""
    path: ./
    engine: ""
    log-mode: error
    max-idle-conns: 10
    max-open-conns: 100
    singular: false
    log-zap: false
system:
    db-type: ""
    oss-type: local
    router-prefix: /api/v1
    addr: 8888
    iplimit-count: 15000
    iplimit-time: 3600
    use-multipoint: false
    use-redis: false
    use-redis-list: false
    use-rabbitmq: false
    use-mongo: false
    use-strict-auth: false
    disable-auto-migrate: false
tencent-cos:
    bucket: xxxxx-10005608
    region: ap-shanghai
    secret-id: your-secret-id
    secret-key: your-secret-key
    base-url: https://www.yuelaigroup.com
    path-prefix: yuelai-engine
zap:
    level: info
    prefix: '[yuelai-engine]'
    format: console
    director: log
    encode-level: LowercaseColorLevelEncoder
    stacktrace-key: stacktrace
    show-line: true
    log-in-console: true
    retention-day: -1
engine_group:
    cache:
        list-ttl-seconds: 90
engine_blog:
    ip2region:
        v4-xdb-path: uploads/ip2region/data/ip2region_v4.xdb
        v6-xdb-path: uploads/ip2region/data/ip2region_v6.xdb

这个配置文件里面你目前只需要配置system部分下的addr 配置项。addr也就是后端监听端口,默认是8888,你可以不改。

本教程演示使用7777端口

其他就先不用管了,保存。下一步!

创建系统服务配置文件

yuelai-engine.service放/etc/systemd/system 目录下

vim /etc/systemd/system/yuelai-engine.service

根据这个文件创建系统服务,基于如下内容进行修改

INI
[Unit]
Description=Yuelai Engine Server
After=network.target
Wants=network.target

[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/opt/goapps/yuelai-engine
ExecStart=/opt/goapps/yuelai-engine/yuelai-engine-server -c /opt/goapps/yuelai-engine/config.yaml
Restart=always
RestartSec=5
LimitNOFILE=65535

# 由 systemd 接管日志
StandardOutput=journal
StandardError=journal

# 如需环境变量可继续加
Environment=GIN_MODE=release
Environment=TZ=Asia/Shanghai

[Install]
WantedBy=multi-user.target

改好后,然后就是很经典的:

sudo systemctl daemon-reload

sudo systemctl enable yuelai-engine

sudo systemctl start yuelai-engine

这样开机就会自启了,log在后端所在文件夹中可以查看

后端启动后,可以输入curl -L http://localhost:7777/api/v1/health,如果显示ok,那就完成了

sudo systemctl status yuelai-engine

改完之后记得sudo systemctl daemon-reload,

再sudo systemctl restart yuelai-engine

后台部署

后台的文件创建一个dist目录存放,也是在放后端系统的文件夹下创建

/opt/yuelaiengine/dist

然后把文件上传解压到dist目录后,就先配置nginx。

NGINX
server {
    listen 443 ssl default_server;
    server_name admin.chixm.group;
    root /opt/yuelaiengine/dist;

    # SSL 配置
    ssl_certificate /etc/nginx/ssl/admin.chixm.group.pem;
    ssl_certificate_key /etc/nginx/ssl/admin.chixm.group.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;



    location / {
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location ^~ /api/v1/ {
        proxy_pass http://127.0.0.1:7777;
        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;
        
    }
}

上面提供的配置,自己做如下的改动。

然后重启nginx。

BASH
systemctl restart nginx

访问域名,前往初始化

提示初始化成功后,服务器上执行sudo systemctl restart yuelai-engine,重启注入插件

然后登录。默认用户名是admin。

登录之后,先点击侧栏的超级管理员。然后点击角色管理,设置权限

然后把所有的权限都选中!

接着把角色api里的权限也选中!

然后点击侧栏应用中心,博客系统下的自定义字段

把提供的theme-custom-fields.import.json导入

然后查看全局设置,出现各种设置即为完成!

评论区