如何在Apache服务器中为Django应用配置使用virtualenv虚拟环境?
Apache部署Django使用virtualenv虚拟环境配置方案
终端执行source myenv/bin/activate仅作用于当前交互式shell会话,Apache的WSGI进程为独立运行的服务,不会继承当前终端的环境变量,需要在Apache站点配置中显式指定虚拟环境路径,具体操作步骤如下:
步骤1:获取虚拟环境绝对路径
先记录你创建的myenv虚拟环境的绝对路径,比如你在项目根目录/var/www/your_django_project下创建的虚拟环境,绝对路径就是/var/www/your_django_project/myenv,后续配置需要用到该路径。
步骤2:修改Apache站点配置
打开Django对应的Apache站点配置文件,默认存放路径为/etc/apache2/sites-available/你的站点配置.conf,在<VirtualHost>配置块中修改WSGI相关参数,推荐使用mod_wsgi的daemon运行模式,配置示例如下:
<VirtualHost *:80> ServerName your-domain.com # 其他基础配置省略 # 指定虚拟环境路径和项目根路径 WSGIDaemonProcess django_app python-home=/var/www/your_django_project/myenv python-path=/var/www/your_django_project WSGIProcessGroup django_app WSGIScriptAlias / /var/www/your_django_project/项目同名目录/wsgi.py # 静态文件、目录权限等其余配置保持不变 </VirtualHost>
参数说明:
python-home:填写你之前记录的虚拟环境绝对路径,告诉mod_wsgi使用该虚拟环境下的Python解释器和依赖包python-path:填写你的Django项目根目录的绝对路径
注意:如果你的虚拟环境使用Python3版本,需要提前安装对应Python3的mod_wsgi模块,Debian/Ubuntu系安装命令为apt install libapache2-mod-wsgi-py3,避免版本不兼容报错
步骤3:重启Apache生效
修改完配置后执行重启命令即可生效:
- Debian/Ubuntu系:
systemctl restart apache2 - CentOS/RHEL系:
systemctl restart httpd
验证配置是否生效
可以在Django视图中添加测试代码,查看当前使用的Python解释器路径:
import sys from django.http import HttpResponse def test_python_path(request): return HttpResponse(f"当前使用的Python解释器路径:{sys.executable}")
访问对应路由,如果输出路径为/你的虚拟环境路径/bin/python,说明配置成功。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

