Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在没有CGI的情况下部署Django?_Php_Django_Cgi - Fatal编程技术网

Php 在没有CGI的情况下部署Django?

Php 在没有CGI的情况下部署Django?,php,django,cgi,Php,Django,Cgi,我需要在一个共享服务器上部署一个Django项目,我没有根访问权限,也没有任何管理功能 服务器上的每个用户都有一个专用目录,Apache从中为这些用户提供文件(公共URL应该是/~username/) 问题是,此服务器上的Apache没有CGI功能,没有mod_python,没有mod_wsgi。不过,我可以使用PHP 我必须在这个服务器上部署Django项目,可能以某种方式使用PHP,这需要什么技巧 这绝不是一个生产场景,任何你能想到的可行的黑客都会很棒。忽略任何性能或可伸缩性因素-这只是一个

我需要在一个共享服务器上部署一个Django项目,我没有根访问权限,也没有任何管理功能

服务器上的每个用户都有一个专用目录,Apache从中为这些用户提供文件(公共URL应该是
/~username/

问题是,此服务器上的Apache没有CGI功能,没有
mod_python
,没有
mod_wsgi
。不过,我可以使用PHP

我必须在这个服务器上部署Django项目,可能以某种方式使用PHP,这需要什么技巧


这绝不是一个生产场景,任何你能想到的可行的黑客都会很棒。忽略任何性能或可伸缩性因素-这只是一个POC。

如果没有mod_python、mod_wsgi或fastCGI,您将无法直接完成

我在想,你可能需要做的是独立运行django应用程序,监听另一个端口,然后基本上使用PHP代理对它的请求

所以你做你的工作

python manage.py runserver 9999 python manage.py运行服务器9999 也许可以使用nohup启动它,以便在注销时保持其运行:

nohup python manage.py runserver 9999 & nohup python manage.py runserver 9999& 然后,在~username中,生成一个proxy.php脚本,该脚本接受任何其他路径信息,并向localhost:9999发出请求,传递HTTP头,收集响应,然后将其发送回浏览器

例如,浏览器请求和PHP脚本请求并发送结果

我不是一个PHP程序员,所以我不能确切地告诉您如何编写,但我确信一定有人在PHP中实现了HTTP代理

如果您在该目录中有.htaccess支持,并且apache启用了mod_proxy_http,那么您可以让apache直接代理请求。这个方法很容易理解。但是如果他们没有启用CGI,他们可能也没有设置CGI

当然,最简单的事情是,如果您可以在面向公众的端口上运行和监听django,然后直接访问它。即

python manage.py runserver example.com:9999 python manage.py runserver example.com:9999
并直接访问它,因为

您的服务器上安装了python吗?很明显,我的服务器上安装了python,而我的
PYTHONPATH
上安装了Django。