避开网络配置大坑:有线桥接模式下,手把手在CentOS 7部署RuoYi前后端分离项目
避开网络配置大坑:有线桥接模式下,手把手在CentOS 7部署RuoYi前后端分离项目
在虚拟机环境中部署企业级开源项目时,网络配置往往是第一个拦路虎。我曾亲眼见过不少开发者在RuoYi项目部署初期,因为宿主机与虚拟机之间的网络连通问题耗费数天时间。本文将聚焦有线桥接模式这一最稳定的网络方案,带你避开90%的初期部署陷阱。
1. 网络模式选择:为什么桥接模式是首选
1.1 桥接与NAT的本质区别
桥接模式相当于让虚拟机直接接入物理网络,获得与宿主机同网段的独立IP。而NAT模式则是通过宿主机进行地址转换,形成私有子网。两者核心差异体现在:
| 特性 | 桥接模式 | NAT模式 |
|---|---|---|
| IP分配 | 与宿主机同网段 | 独立子网(如192.168.122.x) |
| 外部设备访问 | 直接可达 | 需端口转发 |
| 网络拓扑 | 平行于宿主机 | 嵌套在宿主机网络下 |
| 适用场景 | 服务器部署/多设备互通 | 个人开发测试 |
1.2 无线网络的特殊限制
重要发现:在无线网络环境中,由于802.11协议限制,桥接模式实际上是通过NAT模拟实现的。这会导致:
- 虚拟机无法获得真正的独立IP
- 同局域网设备无法直接访问虚拟机
- 端口映射规则复杂易出错
实测数据:在5GHz频段下,桥接模式的吞吐量比NAT模式低40%左右
2. 有线桥接实战配置
2.1 宿主机网络信息采集
首先在Windows宿主机执行:
ipconfig /all记录关键参数:
- IPv4地址(如192.168.1.100)
- 子网掩码(如255.255.255.0)
- 默认网关(如192.168.1.1)
- DNS服务器(如8.8.8.8)
2.2 VMware虚拟机设置
- 关闭虚拟机电源
- 右键虚拟机 → 设置 → 网络适配器
- 选择"桥接模式"并勾选"复制物理网络连接状态"
2.3 CentOS 7静态IP配置
编辑网络配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33关键参数修改示例:
BOOTPROTO=static IPADDR=192.168.1.150 # 与宿主机同网段的未占用IP NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes重启网络服务:
systemctl restart network2.4 连通性验证三板斧
基础连通测试:
ping 192.168.1.1 # 测试网关 ping 8.8.8.8 # 测试外网 ping www.baidu.com # 测试DNS双向通信验证:
- 宿主机cmd执行:
ping 192.168.1.150 - 虚拟机执行:
ping 192.168.1.100
- 宿主机cmd执行:
端口可用性检查:
telnet 192.168.1.150 22 # 测试SSH端口
3. 基础环境部署要点
3.1 MySQL 5.7避坑指南
安装后务必执行:
# 修改密码策略 mysql> SET GLOBAL validate_password_length=4; mysql> SET GLOBAL validate_password_policy=0; # 创建远程访问账号 mysql> CREATE USER 'ruoyi'@'%' IDENTIFIED BY 'RuoYi@123'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'ruoyi'@'%';3.2 Redis关键配置
修改/etc/redis.conf:
bind 0.0.0.0 protected-mode no requirepass RuoYiRedis123重启服务:
systemctl restart redis4. RuoYi专项部署技巧
4.1 前端部署优化方案
修改
vue.config.js中的API地址:devServer: { proxy: { '/prod-api': { target: 'http://192.168.1.150:8080', changeOrigin: true } } }Nginx配置建议:
location / { root /home/ruoyi/projects/ruoyi-ui; index index.html; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://192.168.1.150:8080/; proxy_set_header Host $host; }
4.2 后端JAR包调优
启动参数推荐:
nohup java -jar -Xms512m -Xmx1024m \ -Dspring.profiles.active=prod \ -Dserver.port=8080 \ ruoyi-admin.jar > ruoyi.log 2>&1 &关键检查点:
application-prod.yml中的数据库连接- Redis主机地址配置
- 文件上传路径权限
5. 排错工具箱
5.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 前端无法加载验证码 | API地址未正确代理 | 检查Nginx的proxy_pass配置 |
| 数据库连接失败 | 3306端口未开放 | firewall-cmd --add-port=3306/tcp |
| Redis超时 | 保护模式未关闭 | 确认protected-mode=no |
| 文件上传失败 | 目录权限不足 | chmod -R 777 /home/ruoyi/upload |
5.2 日志分析要点
后端日志:
tail -f ruoyi.log | grep -E 'ERROR|Exception'Nginx访问日志:
tail -f /var/log/nginx/access.logMySQL错误日志:
tail -f /var/log/mysqld.log
在实际部署中,遇到过最棘手的问题是Nginx的proxy_pass路径末尾斜杠问题——当配置为http://backend/时,会移除URI前缀;而不带斜杠则会保留完整路径。这个细节曾导致API请求404错误,花费两小时才定位到问题根源。
