Jar部署
大约 4 分钟deploycode
运行环境要求
- Java: 17
- NodeJs: 18
- Maven: 3.8+
- MySql: 5.7+
- Redis: 5.0+
- TDengine 3.x
- InfluxDB: 1.8.x+
- IoTDB 1.3.x
中间件说明
- 采用Jar包部署,需要提前安装MySQL、Redis、InfluxDB等中间件。具体安装方法请参考官方文档。
一、Jar部署
1. 后端工程打包
- 修改
BladeX-Links
项目的blade-server
和blade-broker
目录的application.yml
文件,publicKey、privateKey、signKey等密钥。 - 修改
BladeX-Links
项目的blade-server
和blade-broker
目录的application-xx.yml
文件,数据库、Redis、InfluxDB等信息。 - 部署时我们一般采用
prod
环境变量,所以需要修改application-prod.yml
配置文件。 - 配置完毕后在项目根目录执行
mvn clean package -DskipTests
命令,打包成功后会在target
目录下生成blade-server.jar
和blade-broker.jar
两个文件。
2. 前端工程打包
- 修改
BladeX-Links-UI
项目的website.js
配置文件,指定publicKey配置,与后端保持一致。 - 部署时我们一般采用
prod
环境变量,所以需要修改.env.production
配置文件。 - 配置完毕后在项目根目录执行
pnpm run build:prod
命令,打包成功后根目录生成包含完整编译内容的dist
文件夹。
3. 部署包上传至服务器
- 将后端
target
目录下生成blade-server.jar
和blade-broker.jar
两个文件上传至服务器对应目录。 - 将前端
dist
目录下生成的所有文件上传至服务器Nginx的静态资源目录,一般为/usr/share/nginx/html
。 - 找到根目录
/script/start.sh
脚本,并上传至服务器/www/server/script/
目录。 - Nginx配置文件核心内容如下:
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
upstream gateway {
server blade-server;
}
server {
listen 88;
server_name web;
root /usr/share/nginx/html;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
location /{
index index.html;
error_page 404 /index.html;
}
location ~ ^/(api/)?actuator {
return 403;
}
location ^~ /oauth/redirect {
try_files $uri /index.html;
}
location ^~ /api/ {
proxy_redirect off;
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_buffering off;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://gateway/;
}
}
}
4. 执行脚本启动服务
脚本已做好最基础的配置,采用prod环境变量,直接启动便会注册服务,注意服务器需要先安装`java17`的环境
- 执行如下命令给脚本赋予权限:
chmod +x /www/server/script/start.sh
- 执行如下命令启动
server
服务:/www/server/script/start.sh blade-server startd
- 执行如下命令启动
broker
服务:/www/server/script/start.sh blade-broker startd
- 若配置连接参数无误,服务启动后,若无异常信息,则服务启动成功。
- 若服务启动失败,请查看对应错误日志再进行分析,一般是broker服务的mqtt地址或者中间件地址、账号密码未配置对导致,耐心查找问题所在。
- 注意⚠️:为了避免不同服务器的编码问题,推荐在服务器用命令新建脚本文件,把脚本内容拷贝粘贴保存,然后赋予可执行权限再运行。
5. 上传node-red-pro
工程源码至服务器
- 进入对应目录,执行
pnpm install
安装依赖,注意服务器需要先安装nodejs18
的环境。 - 修改
packages/node_modules/node-red/settings.js
数据库连接信息,执行pnpm run build
命令打包工程,生成对应的配置文件。 - 修改
node-red.service
中的运行用户和目录 - 执行命令拷贝服务
cp node-red.service /etc/systemd/system/
- 执行命令设置开机自启动
systemctl enable node-red.service
- 执行命令直接正式启动服务
systemctl start node-red.service
- 注意⚠️:部署node-red工程并采用nginx反向代理,需要开启websocket配置,nginx参考配置如下:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:1880;
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;
# 着重关注这三行配置,必须要有
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
6. 验证部署情况
- 分别验证前后端访问后返回的信息是否正确,注意查看各服务具体的日志。
二、部署总结
注意
- 若是服务器部署,需要将服务器的88端口映射到外网,然后通过外网ip:88访问系统。
- 为了让外部连接到mqtt服务器,同时需要将1883、8083端口映射到外网,然后通过外网ip:端口进行连接。
- 工程默认将前端打包放到了
/script/docker/nginx/html
目录,若后续有二开,请在前端工程根目录执行yarn run build
命令,然后将dist目录下的文件拷贝到/script/docker/nginx/html
目录下即可。