Apache2 上的 Django:问题 in.conf 文件?
Posted
技术标签:
【中文标题】Apache2 上的 Django:问题 in.conf 文件?【英文标题】:Django on Apache2: Issue in.conf-file? 【发布时间】:2021-02-26 18:06:09 【问题描述】:大家好,
与我们公司的管理员一起,我们正在尝试将 Django 与 mod_wsgi 一起部署在 Apache2 上,但我们面临一些小问题。我希望你们中的一些人可以帮忙看看以下几行!?
现在,我们服务器上的目录如下所示:
./var/www/
|-- myproject
|-- manage.py
|-- project/
|-- __init__.py
|-- settings.py
|-- urls.py
|-- wsgi.py
|-- statics
|-- venv
当我试图打开该网站时,它一直在加载,但什么也不会发生!我想知道我们的 .conf 文件中的数据是否有误!
<VirtualHost *:80>
. . .
Alias /static /var/www/myproject/static
<Directory /var/www/myproject/static>
Require all granted
</Directory>
<Directory /var/www/myproject/project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-path=/var/www/myproject python-home=/var/www/myproject/venv
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/myproject/project/wsgi.py
</VirtualHost>
如果我理解正确,“WSGIDaemonProcess”中的“python-home”应该指向我的虚拟环境以收集必要的组件和“python-path" 到我的项目中!?
import os
import time
import traceback
import signal
import sys
from django.core.wsgi import get_wsgi_application
sys.path.append('/var/www/myproject/project')
sys.path.append('/var/www/myproject/venv/lib/python3.7/site-packages')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
try:
application = get_wsgi_application()
except Exception:
# Error loading applications
if 'mod_wsgi' in sys.modules:
traceback.print_exc()
os.kill(os.getpid(), signal.SIGINT)
time.sleep(2.5)
第二个“sys.get.append”是否必须指向我的 venv 或我们的管理员安装实际 python-version( 3.7)?
我还注意到,服务器上当前运行的 python 版本是 2.7.6,尽管我的管理员安装了版本 3.7。对于 python 3x,安装的 mod_wsgi 是“libapache2-mod-wsgi-py3”!这也会是个问题吗?
谢谢大家,祝大家有个美好的一天!
【问题讨论】:
你能给我们看看wsgi.py
文件吗?
@cizario 对不起,我忘了,现在添加!非常感谢您的努力!
【参考方案1】:
我认为您应该首先激活虚拟环境,这就是为什么您得到默认版本的 python 2.7.6 而不是预期的 3.7,为此,您必须在 wsgi.py
文件中添加这两行非常顶
activate_this = '/var/www/myproject/venv/bin/activate_this.py'
exec(open(activate_this).read(), dict(__file__=activate_this))
[..]
参考这个话题https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html#daemon-mode-multiple-applications
注意
因为您选择了venv
而不是mkviratualenv
,所以最简单的选择是从virtualenv
存储库:https://github.com/dcreager/virtualenv/blob/master/virtualenv_support/activate_this.py 下载activate_this.py
脚本并将其放在venv/bin
下(或者venv/Scripts
,如果你在windows),因为它没有附带(因为它不是它的官方部分)
更多详细信息请参阅此主题How can I activate a pyvenv vitrualenv from within python? (activate_this.py was removed?)
【讨论】:
非常感谢!等明天去试试!但有趣的是:我发现没有任何在线教程或文档提到这个话题!无论如何...谢谢! 如果我的回答解决了您的问题,请告诉我@finethen 抱歉,差点忘了:这个解决方案解决了我的问题!谢谢! @cizario以上是关于Apache2 上的 Django:问题 in.conf 文件?的主要内容,如果未能解决你的问题,请参考以下文章
最近在虚拟机上想配置apache2 上的django时提示mod_python error本地服务器遇到的问题
Windows 上的 Apache 2.4、Python 和 Django
Django - Apache2 - Postgresql:_psycopg 出错
如何在 ubuntu 上为 django restful 服务配置 apache2