У меня есть рабочий сервер с apache и django, установленными с использованием mod_wsgi .
Приложение django имеет REST API, который предоставляет некоторую информацию при отправке запроса GET.
Это всегда хорошо работало на разрабатываемом сервере, где мы запускали django, используя manage.py на экране. Теперь мы создали рабочий сервер с apache, работающим django, но этот API возвращает Ошибка 500 при запуске wget из localhost или другие машины в той же сети (используя 192.168.XX IP).
Вот вывод от 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.
Но если запрос выполняется с использованием publi c IP-адреса сервера извне (т.е. из браузера), API работает нормально, и я вижу правильная информация.
Я уже проверил разрешенные хосты django, и он принимал localhost, а также IP-адрес 192.168.XX другой машины. В конце я оставил django settings.py примерно так:
#ALLOWED_HOSTS = ['localhost', '127.0.0.1', '192.168.1.101']
ALLOWED_HOSTS = ['*']
Примечание: 192.168.1.101 - это машина, которая пытается выполнить запрос GET. Конечная цель всего этого - создать GET-запрос для скрипта python, запущенного на этом компьютере (который уже работает, если django запускается через manage.py).
My 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>
Я попытался запустить django через manage.py, и wget от localhost работает просто отлично. Проблема появляется только тогда, когда django запускается apache.
Я также попробовал решение, приведенное в в этом посте , но изменил строку не исправляет ошибку.
У меня есть некоторые сомнения относительно этой ошибки:
- как apache запускает django?
- перезапускает Служба apache2 также перезапускает django? (таким образом, читая снова файл settings.py)
- Есть ли какой-либо другой django файл настроек, а не тот, который я редактирую?
- как я могу увидеть django журналы? У меня сейчас нет консоли, поэтому я не вижу распечатки в реальном времени.
Я очень ценю любую помощь.