我有一个Django项目,我想在我的Linux上运行的共享networking空间(1und1 Webspace)上运行。 我没有root权限,因此不能编辑apache的httpd.conf或者在系统上安装软件。
我到目前为止做了什么:
完成这些步骤后,我可以在我的项目目录中运行python manage.py runserver
,它似乎正在运行(我可以在本地机器上使用lynx访问login屏幕)。
我读了很多关于如何configurationfastCGI环境的文章,但是因为我使用的是Django 1.9.1,所以我依赖于wsgi。 我看了很多关于为wsgi和virtualenvconfigurationdjango,但所有示例都需要访问httpd.conf。
共享的Web服务器是Apache。 我可以在我的家中创build一个新的目录,其样本为hello.py,它在inputurl时正在工作,但当然是使用服务器提供的python而不是我本地的安装。 当我改变第一行,指出要在我的虚拟环境( #!/path/to/home/ve_tc_lb/bin/python
)中使用哪个python版本时,它似乎在虚拟环境中使用了正确的版本。 由于我正在使用不同的系统进行开发和部署,因此我不确定在djangoproject/wsgi.py
添加这样一行是否是个好主意。
更新2016-06-02我试了几件事:
总而言之,我的供应商1und1似乎没有安装wsgi扩展(即使支持人员告诉我一个星期前它会被安装)
更新2016-06-12:我得到了支持的答复(一个星期左右后:-S)确认他们没有mod_wsgi,但是wsgiref …
所以我有点卡在这里 – 下一步我该怎么做? 我会根据评论和评论定期更新这个问题。 任何帮助表示赞赏。
由于你的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上没有冲突。
你将不得不使用支持Django的虚拟主机。 请参阅https://code.djangoproject.com/wiki/DjangoFriendlyWebHosts 。 就我个人而言,我已经使用了WebFaction,并对此非常满意,他们的支持非常好,客户服务响应速度非常快。