技术栈:Spring Boot、MyBatis Plus、Spring Security、Vue Element Admin、DM数据库、redis...
后端部分:
数据库和MyBatis Plus:
- 当使用达梦数据库时,确保在实体类上使用
@TableName
注解时将value
值设置为"库名.'表名'"
。- 注意达梦数据库的大小写敏感特性,在书写 SQL 语句时要严格区分单引号和双引号的使用。
- 使用 MyBatis Plus 分页工具时,避免在
mapper.xml
中定义selectPage
方法,以防被自定义方法覆盖。
Spring Boot 应用:
- 避免将端口设置为 6666-6669,因为这些端口可能存在安全风险,与 IRC 协议有关,虽然在 postman 上测试可以正常的访问接口,但是在使用浏览器时前后端无法联调。
- 在执行 mvn clean package 指令打包成 JAR 包前,确保 DAO 层接口中多参数的方法使用
@Param
注解或将多个参数封装成 POJO 类,因为在打完包后 mapper.xml 无法自动识别这些参数会遇到遇到显示 Parameter not found 的报错。
Jar包部署和启动脚本:
- 打包 JAR 包:执行
mvn clean package
指令。- 服务器配置: 在服务器上创建一个
config
文件夹,用于存放例如 YAML 格式的配置文件。您还可以创建一个log
文件夹,用于存放项目的日志文件。- 启动脚本: 创建一个
start.sh
脚本,用于启动项目。该脚本内容如下所示:#!/bin/bash nohup java -Dfile.encoding=utf-8 -Xbootclasspath/a:./config/ -jar /home/boss/demo/ct-test/dmDemo.jar --spring.config.location=config/application.yml 2>&1 & sleep 2 tail -100f nohup.out
该脚本使用
nohup
命令在后台运行 Spring Boot 项目,并将输出重定向到nohup.out
文件中。您可以根据实际情况修改 JAR 包的路径和配置文件的路径- 停止脚本: 创建一个
stop.sh
脚本,用于停止项目。该脚本内容如下所示:#!/bin/bash # 查找 dmDemo.jar 的进程 ID (PID) APP_PID=$(ps -ef | grep 'dmDemo.jar' | grep -v grep | awk '{print $2}') echo "dmDemo.jar 进程的 PID 为:$APP_PID" # 终止 dmDemo.jar 进程 if [ -n "$APP_PID" ]; then echo "正在关闭 dmDemo.jar 进程..." kill -9 $APP_PID echo "dmDemo.jar 进程已关闭。" else echo "未找到 dmDemo.jar 进程。" fi
该脚本通过查找 JAR 包的进程 ID (PID) 并终止该进程来停止项目。确保脚本中的 JAR 包名称与实际部署的 JAR 包名称一致。
授予这些脚本执行权限或直接使用bash来执行这些脚本。
Tips:注意使用安全的连接服务器工具,如 WinSCP 和 SecureCRT,而不是 Xshell 和 Xftp。
前端部分:
Nginx 部署 vue element admin 项目:
- 为了避免出现 403 错误,建议使用非 root 用户来安装 Nginx,注意运行nginx的用户,假如是 root 运行 nginx ,则在 nginx.conf 中就要添加 user root 。
- 在
vue.config.js
中设置publicPath
,并在nginx.conf
中配置root
,对publicPath
和root
的设置要特别注意,它们之间是相关的。以确保正确部署 vue element admin项目,如果配置错误可能出现空白界面。- 确保前端项目的位置正确配置。
- 将localhost全部修改为服务器ip地址。
- 在修改好前端项目配置后可通过 npm run build:prod 指令构建dist文件,可以通过 http-server dist 在本地运行dist文件。
本项目 vue.config.js
部分代码:
module.exports = {
publicPath: './',
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: false,
indexPath:'index.html',
productionSourceMap: false,
devServer: {
port: port,
open: true,
disableHostCheck: true,
overlay: {
warnings: false,
errors: true
},
//代理配置
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: "http://localhost:9999/api",
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
},
服务器 nginx.conf
部分代码:
user root;
worker_processes auto;
server {
listen 9991;
server_name localhost;
add_header Set-Cookie "/; Path=/; HttpOnly;SameSite=Lax;";
client_max_body_size 4m;
root /home/boss/demo/ct-test/html/deviceManage/dist/;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/bossapp6/lwj/nginx-1.20.2/html/;
}
}
前端项目位置:
最后可以通过输入服务器ip地址:9991访问网页。