误删Django站点Apache服务器虚拟环境后重启报错求助
解决mod_wsgi模块加载失败的问题
嘿,这个问题我之前帮朋友解决过!核心原因就是你新创建的虚拟环境里没装适配当前Python版本的mod_wsgi,而且旧的Apache配置还死死盯着原来被删掉的虚拟环境路径。按下面的步骤一步步来,很快就能搞定:
第一步:激活新虚拟环境并安装匹配的mod_wsgi
先切换到你的项目目录,激活刚创建的虚拟环境:source /www/site_name/venv/bin/activate一定要在虚拟环境内部安装mod_wsgi,这样才能生成和当前Python3.5完全兼容的模块文件:
pip install mod_wsgi安装完成后,你可以验证一下目标文件是否存在:
ls /www/site_name/venv/lib/python3.5/site-packages/mod_wsgi/server/如果能看到
mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so这个文件,说明这一步没问题了。第二步:重新生成mod_wsgi-express的Apache配置
旧的httpd.conf里的模块路径还是指向已删除的旧虚拟环境,必须重新生成配置来更新路径:
先停止当前运行的服务:sudo /etc/mod_wsgi-express-80/apachectl stop然后用mod_wsgi-express重新生成适配新环境的配置(保持端口和服务器根目录和之前一致):
sudo mod_wsgi-express setup-server --port 80 --server-root /etc/mod_wsgi-express-80这一步会自动覆盖旧的配置文件,把所有路径更新到新虚拟环境。
第三步:重启Apache服务
现在再尝试重启服务:sudo /etc/mod_wsgi-express-80/apachectl restart这次应该就能正常加载mod_wsgi模块,你的Django网站也能恢复运行了。
额外注意事项
如果你的新虚拟环境没有使用Python3.5(比如换成了更高版本),那原来配置里的模块文件名会不匹配。这种情况下要么换回Python3.5的虚拟环境,要么重新生成配置时让mod_wsgi自动适配新的Python版本即可。
内容的提问来源于stack exchange,提问作者Ritambhara Chauhan
相关产品推荐
相关产品推荐

