Parallels Ubuntu虚拟机项目如何让手机访问?完整解决方案

本期敖行客研发实战日记,Parallels + Ubuntu 虚拟机 环境为例,解决在虚主机运行的项目,怎样在移动端调试访问的干货教程。

1、背景

在日常开发过程中,很多项目并不是直接运行在本机环境,而是在虚拟机中运行,例如:

  • Mac 使用 Parallels Desktop 创建 Ubuntu 开发环境
  • 项目运行在 Ubuntu 虚拟机中
  • 前端或移动端需要通过手机访问调试

这时候经常会遇到一个问题:

项目在虚拟机里面运行正常,Mac 主机可以访问,但是手机无法访问。

原因在于:虚拟机默认网络环境与宿主机、局域网设备之间存在隔离。

本文以:

  • Mac + Parallels Desktop
  • Ubuntu 虚拟机
  • Web 项目(假设端口 3000)

为例,完整解决:

如何让手机访问运行在虚拟机中的项目。

2、 第一阶段测试让主机可以访问虚拟机的项目

2.1 确认虚拟机IP地址

进入 Ubuntu 虚拟机终端:

bash 复制代码
ip addr | grep "inet "

输出示例:

inet 10.211.55.4/24 # Parallels 共享网络分配的 IP(主机与虚拟机通信)

inet 172.20.0.1/16 # Docker 网络

inet 172.18.0.1/16 # Docker 网络

inet 172.17.0.1/16 # Docker 网络

inet 172.19.0.1/16 # Docker 网络

关键10.211.55.4 是 Parallels 共享网络下虚拟机与 Mac 主机通信的 IP。

2.2 检查项目绑定地址

ss -tlnp | grep 3000(假设项目端口)

如果显示 127.0.0.1:3000,说明项目只监听本地,外部无法访问。需要修改启动配置

2.3 开放Ubuntu防火墙端口

如果 Ubuntu 开启了防火墙,需要放行项目端口。

开放3000端口:

sudo ufw allow 3000/tcp

或临时关闭

sudo ufw disable

2.4 Mac 主机访问虚拟机项目测试

直接在主机浏览器上直接访问http://10.211.55.4:3000

3、访问故障

若是运行项目中有数据请求 需要将原先本地请求如:localhost:3000/xxxx

这个就得更改http://10.211.55.4:3000/xxxxx

4、端口转发

若是主机能正常访问虚拟机上项目 此时就需要解决关键一步:

5、获取主机局域网ip(本人是mac为例)

ifconfig | grep "inet " | grep -v "127.0.0.1"

输出示例:

inet 192.168.3.76 netmask 0xffffff00 broadcast 192.168.3.255 i

net 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255

关键 IP192.168.3.76 是 Mac 在 Wi-Fi 局域网中的地址。

6、修改项目 URL 为 Mac 主机 IP

(与前面1.1类似,是需要修改项目运行的ip的地址)

URL=http://10.211.55.4:3000

修改后(使用 Mac 主机局域网 IP)

URL=http://192.168.3.76:3000

成功后手机浏览器访问:http://192.168.3.76:3000

若此时手机端访问成功,那么基本上打通信息端就已经成功了,

需要解决一些奇怪的兼容性问题就不再需要让维运打包盲测了。

敖行客介绍:

敖行客(Allthinker)聚焦服务企业研发团队及开发者,以搭载自研企业级智能体引擎的 AT Work-Agent 研发工作台为核心支撑,打造 AI 原生一体化研发协同体系,依托企业智能体重构研发协作范式,致力于赋能各类研发团队轻量化完成智能化升级。

AT Work介绍:

AT Work-Agent 研发工作台是国内首个分钟级部署、AI 原生全链路研发协同平台,依托企业级智能体赋能研发全流程,零门槛打造专属 AI 研发团队,实现研发效率与数据安全的双重飞跃。

官网:www.allthinker.com

邮箱:allthinker@allthinker.com

相关推荐
ltl8 小时前
内核追踪:ftrace、kprobe、uprobe、tracepoint 生产实战
linux
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
小小、码农11 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
不会就选b11 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
沫璃染墨13 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
AIgorithmGEEK14 小时前
Linux 环境变量完全指南:从入门到理解底层原理
linux·运维·服务器
修罗王14 小时前
Linux Docker 服务管理与排查实战指南(新手速查版)
运维·docker
迪康Defender14 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他
酷可达拉斯15 小时前
Linux操作系统-升级OpenSSH修复漏洞
linux·运维·服务器·云计算
Molesidy15 小时前
【Linux】基于busybox的根文件系统的完善
linux·服务器·嵌入式linux