python - 部署 Django 应用程序(Apache、Passenger、Virtualenv)
问题描述
我坚持在生产 PLESK 服务器上部署我的工作 Django 应用程序。该项目可以通过键入以下内容成功启动为开发服务器:
httpdocs# cd mysite
httpdocs/mysite# source myvenv/bin/activate
httpdocs/mysite# export LD_LIBRARY_PATH="/usr/local/lib"
httpdocs/mysite# python manage.py runserver <freyt.de>:8000
然后,如果我将浏览器指向 freyt.de:8000 我可以看到我的应用程序。美好的。现在,我正在尝试通过来自 Apache 的乘客调用我的应用程序。当使用“passenger-config restart-app”检查时,它似乎在运行,但是当 curl freyt.de 显示带有 403 Forbidden 的 html 时。所以,我假设我的 Django 应用程序没有成功启动。
这是我当前的文件夹结构:
我已经对 PLESK 中的一些主题进行了如下调整:
Apache Webserver:wsgi 已激活
我创建了一个服务计划并使用我的域 freyt.de 订阅了它
在“Webserver”选项卡下的服务计划中,我为 HTTP 添加了额外的指令,如下所示。
PassengerEnabled On
PassengerAppType wsgi
PassengerStartupFile passenger_wsgi.py
在“托管参数”下的服务计划中,我启用了对服务器外壳的 SSH 访问:/bin/bash
对于“域”,我将文档根设置为“..httpdocs/public”。我还在“Apache & nginx 设置”中添加了相同的指令。(我也试过没有,但似乎没有效果。)
文档根目录的一些细节:
我再次使用相同的指令公开添加了 .htaccess(仅用于测试)。没有其他公开文件。
我的passenger_wsgi.py 包含,这似乎没问题:
import sys, os
cwd = os.getcwd()
sys.path.append(cwd)
sys.path.append(cwd + '/mysite')
if sys.version < "2.7.9":
os.execl(cwd + "/mysite/myvenv/bin/python", "python3.6", *sys.argv)
sys.path.insert(0, cwd + '/mysite/myvenv/bin')
sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6')
#sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6/site-packages/django')
sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6/site-packages')
os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
- 文件 mysite/mysite/wsgi.py 保持不变:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()
如果有人能指出我正确的方向,那就太好了。我认为这只是某个地方的一个小错误:-) 在此先感谢。
解决方案
推荐阅读
- go - 查询两张表并从响应中选择一个字段
- javascript - javascript 闭包如何处理对象
- r - 如何摆脱输出中的列表位置/行号
- sql - 从与同一表中的另一个值匹配的行中选择一个值
- angular - 如何用最少的代码行 Angular 6 重定向
- javascript - 错误类型错误:在 Ionic 4 中没有“新”就无法调用类构造函数 EventEmitter
- android - 在模拟器 SDK 22 android.content.res.Resources$NotFoundException 上运行时出错:资源 ID #0x7f07006c
- amazon-web-services - 客户错误:不允许使用额外的超参数 - 图像分类训练 - Sagemaker
- cygwin - Cygwin64 中需要服务器身份验证
- python - 如何在 Django 模板中使用 objects.filter(user=request.user)?