如何让Django项目在公司内网中可供全体员工访问?
Django内网专属部署问题解决方案
一、服务器必须安装Python
没错,必须安装。Django是Python Web框架,运行项目依赖Python环境,建议安装和你本地开发一致的Python版本(比如3.8及以上),避免依赖兼容问题。装完别忘了装pip来管理项目依赖。
二、Django配置调整(解决ALLOWED_HOSTS无效问题)
你加了服务器IP但没生效,大概率是这几个原因:
- 格式写错:
ALLOWED_HOSTS要写成字符串列表,比如ALLOWED_HOSTS = ['192.168.1.100', 'localhost'](把192.168.1.100换成你的服务器内网IP),如果同事用内网域名访问,也要把域名加进去 - 环境变量覆盖:如果服务器上设置了
DJANGO_ALLOWED_HOSTS环境变量,会直接覆盖settings里的配置,检查服务器的环境变量设置 - 没重启服务:修改settings后,必须重启Django服务或者你用的WSGI服务器(比如Gunicorn),配置才会生效
另外,部署时别让Django监听0.0.0.0(这会让所有IP都能访问),改成只监听服务器的内网IP:
# 开发测试用(不建议生产环境使用) python manage.py runserver 192.168.1.100:8000
三、服务器端安全限制(核心:彻底阻断外部访问)
仅靠Django配置不够,必须配合服务器防火墙或公司网络规则锁死访问范围:
- 用防火墙限制IP段:以Ubuntu的
ufw为例,假设公司内网IP段是192.168.1.0/24,项目端口是8000:
要是用CentOS,就用# 允许内网段访问8000端口 sudo ufw allow from 192.168.1.0/24 to any port 8000 # 拒绝所有其他IP访问该端口 sudo ufw deny 8000 # 启用防火墙(如果没开的话) sudo ufw enablefirewalld配置类似规则。 - 公司网络层面限制:如果公司有网关或路由器,直接在网络设备上设置,只允许内网IP段访问服务器的项目端口,禁止外部流量转发过来,这是最稳妥的方式。
四、完整部署步骤梳理
- 服务器上安装Python、pip,然后拉取你的项目代码(用scp、Git都可以)
- 安装项目依赖:
pip install -r requirements.txt - 修改Django的
settings.py:- 配置正确的
ALLOWED_HOSTS - 把
DEBUG改成False(生产环境必须关闭,否则会泄露敏感信息) - 收集静态文件:
python manage.py collectstatic(如果项目用到静态文件的话)
- 配置正确的
- 用WSGI服务器启动项目(生产环境别用runserver),比如Gunicorn:
gunicorn --bind 192.168.1.100:8000 your_project.wsgi:application - 配置防火墙规则,限制仅内网访问
- 测试:用公司内网的电脑访问
http://服务器内网IP:8000,确认能打开;用外网(比如手机流量)测试,应该无法访问
内容的提问来源于stack exchange,提问作者ecworker
相关产品推荐
相关产品推荐

