gpt4 book ai didi

python - 在没有 root 访问权限的共享虚拟主机服务器上使用 wsgi 和 virtualenv 部署 Django 项目

转载 作者:太空狗 更新时间:2023-10-29 12:12:30 30 4
gpt4 key购买 nike

我有一个 Django 项目,我想在 Linux 上运行的共享网站空间 (1und1 Webspace) 上运行。我没有 root 访问权限,因此无法编辑 apache 的 httpd.conf 或在系统范围内安装软件。

到目前为止我做了什么:

  • 在本地安装了 squlite,因为它在服务器上不可用
  • 在 ~/.localpython 中安装了 Python 3.5.1
  • 为我的本地 python 安装了 virtualenv
  • 在 ~/ve_tc_lb 中创建了一个虚拟环境
  • 在我的虚拟环境中安装了 Django 和 Pillow
  • 从 git 服务器克隆了我的 django 项目

完成这些步骤后,我可以在我的项目目录中运行 python manage.py runserver,它似乎正在运行(我可以在我的本地计算机上使用 lynx 访问登录屏幕)。

我阅读了很多关于如何配置 fastCGI 环境的帖子,但由于我使用的是 Django 1.9.1,所以我依赖于 wsgi。我看到了很多有关为 wsgi 和 virtualenv 配置 django 的内容,但所有示例都需要访问 httpd.conf。

共享的网络服务器是apache。我可以使用示例 hello.py 在我的家中创建一个新目录,当我输入 url 时它正在工作,但它(当然)使用服务器提供的 python 而不是我的本地安装。当我将指示要使用哪个 python 版本的第一行更改为我的虚拟环境时 (#!/path/to/home/ve_tc_lb/bin/python),它似乎在虚拟环境中使用了正确的版本环境。由于我使用不同的系统进行开发和部署,我不确定是否是个好主意,例如在我的 djangoproject/wsgi.py 中添加这样一行。

更新 2016-06-02我尝试了一些其他的东西:

总而言之,我的提供商 1und1 似乎没有安装 wsgi 扩展(尽管支持人员一周前告诉我它会安装)

2016-06-12 更新:我收到支持人员的回复(大约一周后 :-S)确认他们没有 mod_wsgi 但有 wsgiref...

所以我有点卡在这里 - 接下来我应该执行哪些步骤?我会根据评论和评论定期更新问题。感谢您的帮助。

最佳答案

由于您的 apache 是共享的,我不希望您可以更改 httpd.conf,而是使用您的解决方案。我的建议是:

  1. 如果您有多个服务器,您将部署您的项目(例如测试、暂存、生产),然后为每个部署目标执行以下步骤。
  2. 在每个服务器中,创建一个真正的wsgi.py 文件您永远不会将其放入版本控制系统。非常类似于您对 local_settings.py 文件所做的操作。此文件将被命名为 wsgy.py,因为您很可能无法编辑 apache 设置(因为它是共享的),并且您的 wsgi 文件需要该名称。
  3. 文件内容为:

     #!/path/to/your/virtualenv/python
    from my_true_wsgi import *

    每个部署服务器都会有所不同,但不同之处很可能在于 shebang 行以找到正确的 python 解释器。

  4. 您将拥有一个名为 my_true_wsgi 的文件,以使其与之前代码中的导入相匹配。与 wsgi.py 文件不同,该文件将位于版本控制系统中。此类文件的内容是任何常规 django 项目上 wsgi.py 的通常内容,只是您没有直接使用该名称。

使用此解决方案,您可以拥有多个不同的 wsgi 文件,而不会在 shebang 上发生冲突。

关于python - 在没有 root 访问权限的共享虚拟主机服务器上使用 wsgi 和 virtualenv 部署 Django 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435151/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com