You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+WSGI+Apache应用闲置后故障的配置问题求助

基于你给出的Ubuntu+Apache+Django 1.11+Python2.7+mod_wsgi 4.6.4的配置环境,我来帮你梳理这类多Django应用部署的关键配置要点和常见问题排查方向:

核心配置验证与优化要点

1. 全局WSGI设置的合理性

你配置的WSGIApplicationGroup %{GLOBAL}是非常关键的——它强制所有WSGI应用使用Python全局解释器,避免了mod_wsgi子解释器带来的兼容性问题。毕竟Django 1.11在Python2.7环境下,对子解释器的支持存在不少坑,这个设置能帮你避开大部分这类问题。

不过要注意:如果你的多个Django应用依赖不同版本的第三方库,那可能需要为每个应用单独配置独立的守护进程(你已经在做这件事了),确保彼此的依赖环境隔离。

2. WSGI别名文件的规范配置

你提到在wsgi-aliases里配置多应用的别名和守护进程,这里给你一个标准的示例模板,方便你对照检查:

# 为EmployeeDirectory应用创建独立守护进程
WSGIDaemonProcess EmployeeDirectory \
    python-path=/home/django/EmployeeDirectory:/home/django/venvs/employee_env/lib/python2.7/site-packages \
    user=www-data group=www-data \
    processes=2 threads=15

# 指定该应用使用上述守护进程组
WSGIProcessGroup EmployeeDirectory

# 绑定URL路径到WSGI入口文件
WSGIScriptAlias /EmployeeDirectory /home/django/EmployeeDirectory/EmployeeDirectory/wsgi.py \
    process-group=EmployeeDirectory

这里要重点注意:

  • python-path必须包含项目根目录和虚拟环境的site-packages目录(如果用了虚拟环境的话),否则Django会找不到依赖包
  • 务必指定user=www-data和group=www-data,确保守护进程用Apache的运行用户权限访问文件
  • WSGIScriptAlias里的process-group要和守护进程名完全匹配,避免应用跑到默认进程里

3. 权限与路径检查

这是多应用部署最容易踩坑的点:

  • 确认Apache用户www-data对所有项目目录、静态文件目录、媒体文件目录有读取权限(如果有文件上传需求,媒体目录还需要写入权限)
  • 可以用这条命令快速设置权限:
    sudo chown -R www-data:www-data /home/django/
    sudo chmod -R 755 /home/django/
    

4. 静态/媒体文件的配套配置

每个Django应用的静态和媒体文件都需要单独配置Apache别名,否则前端会加载失败:

# 配置EmployeeDirectory的静态文件访问
Alias /EmployeeDirectory/static /home/django/EmployeeDirectory/static
<Directory /home/django/EmployeeDirectory/static>
    Require all granted
</Directory>

# 配置EmployeeDirectory的媒体文件访问
Alias /EmployeeDirectory/media /home/django/EmployeeDirectory/media
<Directory /home/django/EmployeeDirectory/media>
    Require all granted
</Directory>

别忘了运行Django的静态文件收集命令:

cd /home/django/EmployeeDirectory
python manage.py collectstatic

5. 常见问题排查技巧

如果部署后出现500错误或应用无法访问,优先做这几件事:

  • 查看Apache错误日志:tail -f /var/log/apache2/error.log,几乎所有的配置错误、依赖缺失、权限问题都会在这里给出明确提示
  • 验证mod_wsgi与Python版本匹配:运行mod_wsgi-express module-config,确认输出里的Python路径是你使用的Python2.7
  • 检查Django配置:确保settings.py里的ALLOWED_HOSTS包含你的服务器域名/IP,DEBUG在生产环境要设为False

内容的提问来源于stack exchange,提问作者Pat Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:20