在Ubuntu16.04的Apache2服务器部署两个Django应用遇故障求助
解决Ubuntu 16.04 Apache2上Django应用pep_web无法访问的问题
咱们一步步排查你的问题,先从最容易忽略的基础配置开始:
1. 确认Apache是否监听8080端口
Apache默认只监听80端口,你需要手动配置让它监听8080:
- 打开
/etc/apache2/ports.conf文件,检查是否存在一行Listen 8080,如果没有就添加进去。 - 保存后重启Apache服务:
sudo service apache2 restart - 验证监听状态:执行
netstat -tulpn | grep apache2,输出里应该能看到0.0.0.0:8080的条目,说明Apache正在监听这个端口。
2. 检查防火墙是否开放8080端口
Ubuntu 16.04默认使用ufw防火墙,可能拦截了8080端口的流量:
- 开放8080端口:
sudo ufw allow 8080/tcp - 查看防火墙状态确认生效:
sudo ufw status,输出里应该有8080/tcp ALLOW Anywhere的记录。
3. 验证pep_web的文件路径与权限
Apache需要能读取你的Django应用文件和目录:
- 先检查wsgi.py文件是否存在:
ls -l /home/bic/pep_web/pep_learn/wsgi.py,确保路径完全正确(注意有没有拼写错误或大小写问题)。 - 给目录添加遍历权限:
sudo chmod 755 /home/bic/pep_web/pep_learn - 给wsgi.py文件添加读取权限:
sudo chmod 644 /home/bic/pep_web/pep_learn/wsgi.py - 静态文件目录也要确保权限正确:
sudo chmod -R 755 /home/bic/pep_web/protocol/static
4. 查看Apache错误日志定位具体问题
这是最直接的排查方式,能看到具体的错误原因:
- 实时查看错误日志:
sudo tail -f /var/log/apache2/error.log - 然后在浏览器尝试访问
http://172.16.16.68:8080/pep_learn,观察日志里的输出——比如路径不存在、权限不足、Python依赖缺失等,根据日志信息针对性解决。
5. 确认WSGI守护进程的Python环境配置
如果你的pep_web用了虚拟环境,需要把虚拟环境的路径加到python-path里:
- 假设虚拟环境在
/home/bic/pep_web/venv,修改WSGIDaemonProcess配置为:WSGIDaemonProcess pep_web python-path=/home/bic/pep_web:/home/bic/pep_web/venv/lib/python2.7/site-packages:/usr/lib/python2.7/dist-packages - 修改后重启Apache生效:
sudo service apache2 restart
内容的提问来源于stack exchange,提问作者jax
相关产品推荐
相关产品推荐

