🚀 Windows 项目部署到 Linux 全流程指南
1. 前端部署 (Vue/React)
- 本地操作:运行
npm run build。 - 上传路径:将生成的
dist目录下的所有文件上传至 Linux 的/usr/share/nginx/html(或其他你指定的绝对路径)。 - 权限修正:执行
chmod -R 755 /usr/share/nginx/html,确保 Nginx 进程有权读取。 - Nginx 核心配置:
root使用绝对路径。try_files $uri $uri/ /index.html;解决刷新页面 404 问题。
2. 后端部署 (Spring Boot)
本地操作:使用 Maven 打包生成
.jar文件。上传路径:建议放在
/home/project/等自定义目录下。后台启动:
Bash
# 2>&1 的意思是把错误信息(2)也扔到标准输出(1)指向的那个 log 文件里 nohup java -jar your-project.jar --server.port=8080 > output.log 2>&1 &管理进程:
- 查看:
ps -ef | grep java - 停止:
kill -9 [PID]
- 查看:
3. 数据库部署 (MySQL)
导出:在 Windows 用 Navicat 或命令行导出
.sql文件。上传与导入:
Bash
# 登录并进入交互模式 mysql -u root -p # 切换库并导入 use your_db_name; source /path/to/your.sql;权限与加密(针对 MySQL 8.0+):
SQL
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; FLUSH PRIVILEGES;
4. Nginx 反向代理 (核心桥梁)
- 匹配前缀:通常匹配
/api/转发给后端。 - 路径截断:如果
proxy_pass结尾带/,会自动去掉匹配路径(如/api/)。 - 配置文件位置:
/etc/nginx/nginx.conf或/etc/nginx/conf.d/目录。
5. Linux 环境“排坑”三件套
部署后如果无法访问,请按此顺序检查:
- SELinux:
- 检查:
getenforce - 放行:
setsebool -P httpd_can_network_connect 1
- 检查:
- 防火墙 (Firewalld):
- 开放 80 端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent - 生效:
firewall-cmd --reload
- 开放 80 端口:
- 错误日志(终极手段):
- Nginx 报错:
tail -f /var/log/nginx/error.log - Jar 包报错:
tail -f your-output.log
- Nginx 报错:
💡 查阅小贴士
- 改端口无需重打包:启动 Jar 包时使用
--server.port=新端口即可。 - 改域名无需重打包:修改 Nginx 的
server_name并reload。 - 多项目管理:一个项目对应
conf.d/下的一个.conf文件,不要全挤在nginx.conf。