如何为Django本地服务器创建永久公网URL并实现无源码访问
Django公网访问配置指南
一、解决runserver x.x.x.x:8088无法被他人访问的问题
你用runserver指定IP后别人打不开,大概率是这几个原因:
- 确认IP正确性:你填的
x.x.x.x必须是本机的内网IP(比如192.168.1.100),不是公网IP。可以用ipconfig(Windows)或ip addr(Linux)查看本机内网IP。 - 防火墙放行端口:
- Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」,新建规则允许8088端口的TCP连接。
- Linux:执行
sudo ufw allow 8088开放端口,不推荐直接关闭防火墙。
- 内网端口转发(外部网络访问):如果对方不在你的局域网内,需要在路由器后台设置「端口转发」,把外网的8088端口映射到你的内网IP:8088。
⚠️ 注意:runserver是Django的开发服务器,仅用于本地调试,性能差且不安全,绝对不能用于公网长期访问。
二、为localhost创建永久公网IP/URL
1. 临时测试方案(快速生成公网URL)
用内网穿透工具,比如ngrok:
- 下载工具后,在终端执行
ngrok http 8000,工具会生成一个临时公网URL(比如https://xxxx.ngrok.io),直接分享给别人就能访问你的本地Django项目。但重启ngrok后URL会改变,适合临时演示。
2. 永久公网方案(生产环境)
要获得固定公网IP,需要部署到云服务器:
- 购买云服务器(阿里云、腾讯云等),获取服务器的固定公网IP。
- 将Django项目代码上传到服务器(用Git、scp或FTP)。
- 在服务器上配置Python环境、安装依赖,部署成生产环境(见下文)。
三、让他人无需源码即可访问
核心是把Django项目部署为生产环境,步骤如下:
安装WSGI服务器(Gunicorn)
执行pip install gunicorn,然后启动服务:gunicorn --bind 0.0.0.0:8000 your_project_name.wsgi这里
your_project_name是你Django项目的根目录名(包含wsgi.py的那个文件夹)。配置Nginx反向代理(可选但推荐)
Nginx负责处理静态文件、请求转发,提升性能和安全性:- 安装Nginx后,在
/etc/nginx/sites-available/下新建配置文件:server { listen 80; server_name 你的公网IP或域名; location /static/ { alias /path/to/your/project/static/; # 替换为你的静态文件实际路径 } location /media/ { alias /path/to/your/project/media/; # 替换为你的媒体文件实际路径 } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 启用配置:
sudo ln -s /etc/nginx/sites-available/your_config /etc/nginx/sites-enabled/ - 重启Nginx:
sudo systemctl restart nginx
- 安装Nginx后,在
收集静态文件
Django生产环境需要手动收集静态文件,执行:python manage.py collectstatic确保
settings.py里已配置STATIC_ROOT:STATIC_ROOT = os.path.join(BASE_DIR, 'static')开放服务器端口
在云服务器的安全组里开放80端口(HTTP)或443端口(HTTPS),同时服务器防火墙放行对应端口。
这样配置后,别人直接访问你的公网IP或域名就能使用项目,不需要任何源码。
内容的提问来源于stack exchange,提问作者Akshay Kumar Pasupunooti
相关产品推荐
相关产品推荐

