Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
使用Apache在RHEL上为Django项目提供服务(503错误)_Django_Apache_Port_Mod Wsgi_Http Status Code 503 - Fatal编程技术网

使用Apache在RHEL上为Django项目提供服务(503错误)

使用Apache在RHEL上为Django项目提供服务(503错误),django,apache,port,mod-wsgi,http-status-code-503,Django,Apache,Port,Mod Wsgi,Http Status Code 503,我是整个网站的新手。。。如果您能在这里提供帮助,我将不胜感激 我想做的是在远程服务器上托管一个Django项目(red hat,CentOS 6.5版) 我一直在使用开发服务器和端口8000在远程服务器上运行项目测试: python manage.py runserver *.*.*.*:8000 --insecure 在这种情况下,网站运行良好,可以从其他机器访问 0 errors found September 04, 2014 - 08:13:03 Django v

我是整个网站的新手。。。如果您能在这里提供帮助,我将不胜感激

我想做的是在远程服务器上托管一个Django项目(red hat,CentOS 6.5版)

我一直在使用开发服务器和端口8000在远程服务器上运行项目测试:

  python manage.py runserver *.*.*.*:8000 --insecure
在这种情况下,网站运行良好,可以从其他机器访问

   0 errors found
   September 04, 2014 - 08:13:03
   Django version 1.6.4, using settings 'mysite.settings'
   Starting development server at http://*.*.*.*:8000/
   Quit the server with CONTROL-C.
现在我想把它投入生产,我选择使用ApacheHTTP服务器和mod_wsgi。我已经安装并激活了httpd和wsgi。我将httpd.conf配置文件更改为:

   Listen *:80 (I've also tried Listen *:8000 and Listen (IP address):8000)

   #DocumentRoot "/var/www/html"
   DocumentRoot "/testsite"      (I put a plan html file under the directory just for test)

   ServerName <here is the url of the site,with no port number>
(2) 重新启动apache服务器:

  service httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
(3) 在测试的DocumentRoot目录/var/www/html/testsite中放置一个plain.html

(4) 我尝试在不同的端口(如8008、8001和80)上运行django

如上所示,在终端中,它看起来正在工作,但即使使用开发服务器,我也无法从远程机器访问网站。我尝试了不同的端口号,但只能使用8000端口。但是当我更改端口号时,为什么我可以在localhost上打开网页?e、 g.127.0.0.1:8008或127.0.0.1:8080将起作用

我猜可能是防火墙设置,然后我转到/etc/sysconfig/iptables,我发现在web部分下,只有一行:

   -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
然后,我添加了另一行用于测试:

   -A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
然后再次尝试使用端口8001进行开发。同样,它看起来像是在远程服务器上工作,但无法从远程机器访问

对不起,如果我弄糊涂了,如果我问了一些很愚蠢的问题。现在,我有三个问题我真的不明白。首先,503错误真的让我很恼火。即使显示apache服务器正在运行(restart httpd正常),实际上也没有显示任何内容。。。其次,在使用开发服务器时,为什么我只能使用端口8000而不能使用其他端口?最后,在503错误消息中,它显示apache在端口80上运行,即使我在配置文件中将侦听端口更改为8000,这是为什么


谢谢你的帮助

如果这是您唯一的配置,我不知道Apache如何知道您的Django正在运行8000。没有迹象表明您正在使Apache连接或代理请求到正在运行的Django实例

你需要做的是

您可以使用Django development server自由选择任何端口。您可以使用命令行参数配置开发服务器侦听的IP地址和端口

您可以使Django开发服务器侦听所有IP地址,包括服务器上的公共IP地址,如下所示:

 python manage.py runserver 0.0.0.0:8000 
Apache日志也可以在/var/log/Apache(或类似的目录)中读取,因此它应该解释为什么会得到503


我怀疑iptables和您的问题没有任何关系,但Django开发服务器并没有监听公共IP地址。通过在服务器上禁用iptables防火墙,您可以很容易地尝试这一点。

mod_wsgi和FASTCGI机制是完全独立的。您不需要同时配置两者,只需选择一种。尽管FASTCGI是最不受欢迎的选择,而mod_wsgi通常是更好的选择。开发服务器也不需要为这两个项目运行。对不起,我发现答案令人困惑,所以我想我会澄清。@GrahamDumpleton,谢谢!添加了缺少的“或”字:)
   -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
   -A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
 python manage.py runserver 0.0.0.0:8000