Невозможность развертывания django + apache на сервере aws Ubuntu
Я пытаюсь развернуть приложение Django, используя Apache на сервере Ubuntu, у меня возникает странная ошибка (500 internal error server error) при использовании порта :80.
Я провел несколько тестов, используя порт :8000, выполнив команду:
python3 manage.py runserver 0.0.0.0:8000
И приложение работает без проблем, но когда я пытаюсь получить доступ к приложению, используя порт 80, оно работает.
Мой файл конфигурации apache выглядит следующим образом:
<VirtualHost *:80>
Alias /static /home/ubuntu/gh_system/static
<Directory /home/ubuntu/gh_system/static>
Require all granted
</Directory>
<Directory /home/ubuntu/gh_system/HRSYSTEM>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess HRSYSTEM python-home=/home/ubuntu/gh_system/env python-path=/home/ubuntu/gh_system>
WSGIProcessGroup HRSYSTEM
WSGIScriptAlias / /home/ubuntu/gh_system/HRSYSTEM/wsgi.py
После некоторых исследований, тестирования и просмотра журналов apache с:
sudo tail -100 /var/log/apache2/error.log
Я обнаружил, что проблема связана с этой строкой:
WSGIDaemonProcess HRSYSTEM ***python-home=/home/ubuntu/gh_system/env*** python-path=/home/ubuntu/gh_system>
В основном, apache пытался прочитать пакеты внутри виртуальной среды, но я установил их с помощью команды:
sudo pip3 install -r requirements.txt
По-видимому, использование команды "sudo" устанавливало пакеты вне виртуальной среды, это так странно; но без "sudo" консоль регистрирует ошибку permission denied, поэтому я даю разрешение chmod 700 виртуальной среде и снова устанавливаю пакеты без "sudo", и тогда все работает!
Некоторые вещи, которые я узнал об ошибках:
Problem: Not module 'encodings' --> this problem occurs when apache can not access your packages, usually for a bad path specified in the config file.
Problem: Not module 'x module, could be django' means you need to install the package using pip3.
Надеюсь, это кому-нибудь поможет! И просто чтобы отметить, кое-что, чему я научился в последнее время, это: когда вы тратите слишком много времени, пытаясь решить проблему, и нет много информации об этом в интернете, это означает, что что-то очень, очень базовое не работает в вашем проекте; например, установка пакетов вне виртуальной среды, даже не осознавая этого, как это сделал я.
".