如何部署Angular+MySQL+SpringBoot Web应用并实现开机自启?
规范部署与开机自启方案
针对你的Angular+SpringBoot+MySQL应用,当前用IDE和开发命令运行的方式仅适合开发阶段,以下是更适合长期稳定运行的规范部署方案,以及实现开机自动启动的配置:
一、前端(Angular)优化部署
ng serve是开发模式,性能差且不稳定,必须先构建生产包再用静态服务器部署:
- 构建生产静态包
在VS Code终端执行命令,生成编译压缩后的静态文件:
- 构建生产静态包
ng build --prod --base-href /
注:如果前端需要挂载在子路径(比如
http://机器IP/myapp),把--base-href改成/myapp/;构建完成后,项目根目录的dist/文件夹就是部署用的所有静态资源。
- 用Nginx部署静态资源
推荐用Nginx(轻量、高性能、配置简单):
- 安装Nginx到目标机器;
- 找到Nginx的配置文件(Linux一般在
/etc/nginx/nginx.conf,Windows在安装目录的conf/nginx.conf); - 修改
server块,指向Angular的dist目录,同时配置后端接口反向代理(解决跨域问题):server { listen 80; # 可自定义端口,比如8080 server_name 你的机器IP; # 处理前端静态资源 location / { root /绝对路径/到/angular/dist/文件夹; try_files $uri $uri/ /index.html; # 解决Angular单页应用刷新404问题 } # 反向代理后端接口(如果前端用相对路径调用后端,比如/api/xxx) location /api/ { proxy_pass http://localhost:8081/; # 替换成你的SpringBoot后端端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 重启Nginx服务生效(Linux:
systemctl restart nginx;Windows:打开Nginx安装目录的nginx.exe,或者用命令nginx -s reload)。
- 用Nginx部署静态资源
二、后端(SpringBoot)优化部署
用Eclipse运行是开发模式,规范做法是打包成独立Jar包运行:
- 打包Jar包
在Eclipse中右键SpringBoot项目 → Run As → Maven build,在Goals输入框填clean package,执行完成后,项目的target/文件夹会生成你的项目名.jar文件。
- 打包Jar包
- 后台运行Jar包
直接用命令行启动,避免终端关闭导致应用停止:
- Linux/macOS:
nohup java -jar /绝对路径/到/你的项目名.jar > /var/log/springboot-app.log 2>&1 &注:
nohup让程序后台运行,日志输出到指定文件方便排查问题 - Windows:
用命令start /B java -jar D:\绝对路径\到\你的项目名.jar后台运行,或者写个批处理脚本。
- 后台运行Jar包
三、实现开机自动启动
1. 前端Nginx开机自启
- Linux:安装后默认已加入系统服务,执行
systemctl enable nginx确保开机启动; - Windows:创建Nginx启动脚本(比如
start-nginx.bat,内容是cd /d Nginx安装目录 & nginx.exe),然后打开「任务计划程序」,创建基本任务,设置触发器为「当计算机启动时」,操作选择启动这个批处理脚本,勾选「不管用户是否登录都要运行」和「最高权限运行」。
2. 后端SpringBoot开机自启
Linux(用systemd服务管理)
- 创建服务配置文件:
/etc/systemd/system/springboot-app.service,内容如下:[Unit] Description=SpringBoot应用服务 After=network.target mysql.service # 确保网络和MySQL先启动 [Service] User=root # 替换成实际运行的系统用户 ExecStart=/usr/bin/java -jar /绝对路径/到/你的项目名.jar Restart=always # 应用意外退出时自动重启 RestartSec=5 # 重启间隔5秒 StandardOutput=append:/var/log/springboot-app.log StandardError=append:/var/log/springboot-app-error.log [Install] WantedBy=multi-user.target - 执行以下命令生效:
systemctl daemon-reload systemctl enable springboot-app.service # 设置开机自启 systemctl start springboot-app.service # 启动服务
Windows(任务计划程序)
- 创建批处理脚本
start-springboot.bat:@echo off cd /d D:\绝对路径\到\jar文件所在文件夹 java -jar 你的项目名.jar - 打开「任务计划程序」创建基本任务:
- 触发器选「当计算机启动时」;
- 操作选「启动程序」,指向这个批处理脚本;
- 配置「不管用户是否登录都要运行」,并勾选「最高权限运行」。
3. MySQL开机自启
- Linux:执行
systemctl enable mysql; - Windows:打开「服务」列表,找到MySQL服务,设置启动类型为「自动」。
四、额外注意事项
- 防火墙配置:确保目标机器的前端端口(比如80)、后端端口(比如8081)在防火墙中开放,局域网内其他PC才能正常访问;
- 日志清理:定期清理Nginx、SpringBoot和MySQL的日志文件,避免磁盘空间被占满;
- 备份:定期备份Angular的
dist包、SpringBoot的Jar包和MySQL数据库,防止数据或代码丢失。
内容的提问来源于stack exchange,提问作者Carlac
相关产品推荐
相关产品推荐

