Apache2 上的 Django:问题 in.conf-文件?
Django on Apache2: Issue in.conf-file?
大家好,
与我们公司的管理员一起,我们正尝试与 mod_wsgi 一起在 Apache2 上部署 Django,但我们面临一些小问题。我希望你们中的一些人可以帮忙看看下面几行!?
现在,我们服务器上的目录如下所示:
./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,尽管我的管理员安装了 [=30] =]3.7。安装的 mod_wsgi 是“libapache2-mod-wsgi-py3” for python 3x!这也会是个问题吗?
谢谢,祝大家有个愉快的一天!
我认为你应该首先激活虚拟环境,这就是为什么你得到了 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))
[..]
备注
既然您选择了 venv
而不是 mkviratualenv
最简单的选择是从 virtualenv
存储库下载 activate_this.py
脚本 :https://github.com/dcreager/virtualenv/blob/master/virtualenv_support/activate_this.py 并将其放在venv/bin
(或者 venv/Scripts
如果你在 windows)因为它没有附带(因为它不是它的官方部分)
有关更多详细信息,请参阅此线程 How can I activate a pyvenv vitrualenv from within python? (activate_this.py was removed?)
大家好,
与我们公司的管理员一起,我们正尝试与 mod_wsgi 一起在 Apache2 上部署 Django,但我们面临一些小问题。我希望你们中的一些人可以帮忙看看下面几行!?
现在,我们服务器上的目录如下所示:
./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,尽管我的管理员安装了 [=30] =]3.7。安装的 mod_wsgi 是“libapache2-mod-wsgi-py3” for python 3x!这也会是个问题吗?
谢谢,祝大家有个愉快的一天!
我认为你应该首先激活虚拟环境,这就是为什么你得到了 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))
[..]
备注
既然您选择了 venv
而不是 mkviratualenv
最简单的选择是从 virtualenv
存储库下载 activate_this.py
脚本 :https://github.com/dcreager/virtualenv/blob/master/virtualenv_support/activate_this.py 并将其放在venv/bin
(或者 venv/Scripts
如果你在 windows)因为它没有附带(因为它不是它的官方部分)
有关更多详细信息,请参阅此线程 How can I activate a pyvenv vitrualenv from within python? (activate_this.py was removed?)