我有一个Django项目,我想在我在linux上运行的共享网站空间(1und1 Webspace)上运行。我没有超级用户权限,因此无法编辑apache的httpd.conf或安装系统软件。
到目前为止我做了什么:
完成这些步骤后,我可以在项目目录中运行python manage.py runserver
,它似乎正在运行(我可以在本地计算机上使用lynx访问登录屏幕)。
我读了很多关于如何配置fastCGI环境的帖子,但由于我使用的是Django 1.9.1,我依赖于wsgi。我看到很多关于为wsgi和virtualenv配置django的事情,但是所有的例子都需要访问httpd.conf。
共享Web服务器是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 ......
所以我有点卡在这里 - 接下来我应该做哪些步骤? 我会根据评论和评论定期更新问题。任何帮助表示赞赏。
答案 0 :(得分:1)
您必须使用支持Django的虚拟主机。见https://code.djangoproject.com/wiki/DjangoFriendlyWebHosts。就我个人而言,我已经使用了WebFaction并对此非常满意,他们的支持非常好,客户服务非常敏感。
答案 1 :(得分:1)
由于您的apache是共享的,我不希望您可以更改httpd.conf,而是使用您的解决方案。我的建议是:
wsgi.py
文件,您永远不会在版本系统中添加。非常类似于使用local_settings.py
文件。此文件将命名为wsgy.py
,因为很可能您无法编辑apache设置(因为它是共享的),并且该名称将用于您的wsgi文件。该文件的内容为:
#!/path/to/your/virtualenv/python
from my_true_wsgi import *
每个部署服务器的情况会有所不同,但最有可能的是,在shebang行找到合适的python解释器。
my_true_wsgi
的文件,以使其与前一代码中的导入相匹配。与wsgi.py
文件不同,该文件将位于版本控制系统中。这个文件的内容是任何常规django项目中wsgi.py
的通常内容,只是你没有直接使用该名称。使用此解决方案,您可以拥有几个不同的wsgi文件,并且不会在shebangs上发生冲突。