安装使用Yuelai Engine Blog - 后端篇
前言
本文章非真正意义上的从零开始部署,只是自己做一个记录。阅读本文时,默认你是会一些知识的
环境要求及目录说明
本文基于阿里云服务器部署
系统版本: 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
# 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
# 安装 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
# 安装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
# 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做本次部署的根目录
root@iZj6cbfy3py6qd7ogbsnkkZ:/opt/yuelaiengine# pwd
/opt/yuelaiengine
后端,不需要环境,二进制程序文件。在yuelaiengine目录下,把提供的文件直接上传就行。

上传成功后,设置权限,chmod +x 加后端文件名
chmod +x /opt/yuelaiengine/yuelai-engine-server-linux-amd64
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,内容如下
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
根据这个文件创建系统服务,基于如下内容进行修改
[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。
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。
systemctl restart nginx
访问域名,前往初始化




提示初始化成功后,服务器上执行sudo systemctl restart yuelai-engine,重启注入插件
然后登录。默认用户名是admin。
登录之后,先点击侧栏的超级管理员。然后点击角色管理,设置权限

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

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

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

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

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


评论区