Apache从localhost /内部网络GET时会引发错误500:内部服务器错误

问题描述 投票:0回答:1

我有一个使用mod_wsgi安装了apachedjango的生产服务器。

django应用程序具有一个REST API,该API在发送GET请求时会提供一些信息。

如果我们在屏幕上使用manage.py来运行django,那么在开发服务器上这总是可以正常工作的。现在,我们使用运行django的apache创建了一个生产服务器,但是当从localhost或同一网络中其他计算机(使用192.168.XX IP)运行wget时,此API返回错误500 )。

这是wget的输出:

~$ wget localhost:80/someinfo
--2020-04-02 16:26:59--  http://localhost/someinfo
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2020-04-02 16:26:59 ERROR 500: Internal Server Error.

似乎连接成功,所以我想这不是一个apache问题。错误来自API响应。

apache error.log中的错误看起来像这样:

127.0.0.1 - - [02/Apr/2020:14:24:36 +0000] "GET /someinfo HTTP/1.1" 500 799 "-" "Wget/1.19.4 (linux-gnu)"

问题:500之后是多少?有时是799,而其他时候是803。

但是,如果请求是使用服务器的公共IP从外部(即从浏览器)完成的,则该API可以正常工作,并且我可以看到正确的信息。

我已经检查了django允许的主机,并且它正在接受localhost和另一台计算机的192.168.X.X IP。最后,我像这样离开了django的settings.py

#ALLOWED_HOSTS = ['localhost', '127.0.0.1', '192.168.1.101']
ALLOWED_HOSTS = ['*']

注:192.168.1.101是尝试发出GET请求的计算机。所有这一切的最终目标是能够从在该计算机上运行的python脚本发出GET请求(如果django通过manage.py运行,该脚本就已经可以工作了。)

我的apache.conf


    <VirtualHost *:80>

            ServerAdmin webmaster@localhost
            #DocumentRoot /var/www/html

            Alias /static /home/myuser/myproject/django/static_root
        <Directory /home/myuser/myproject/django/static_root>
            Require all granted
        </Directory>

        <Directory /home/myuser/myproject/django/myproject_django>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>

        WSGIDaemonProcess myproject python-home=/home/myuser/env python-path=/home/myuser/myproject/django
        WSGIProcessGroup myproject
        WSGIScriptAlias / /home/myuser/myproject/django/myproject_django/wsgi.py
    </VirtualHost>

我尝试通过manage.py运行django,来自本地主机的wget正常运行。 仅当由apache运行django时出现问题。

我也尝试了this post中给出的解决方案,但是更改该行并不能解决错误。

我对此错误有疑问:

  1. apache如何运行django?
  2. 重新启动apache2服务还会重新启动django吗? (因此,请再次阅读settings.py)
  3. 是否还有其他django设置文件,而不是我正在编辑的文件?
  4. 我如何查看Django日志?我现在没有控制台,所以看不到实时打印。

我非常感谢您的帮助。

django apache rest mod-wsgi internal-server-error
1个回答
0
投票

我终于设法自己解决了。

事实证明,wsgi将来自本地主机或外部IP的请求作为不同的实例组来处理。所以我要做的就是把

WSGIApplicationGroup %{GLOBAL}

输入

/ etc / apache2 / sites-available / 000-default.conf
© www.soinside.com 2019 - 2024. All rights reserved.