Отказ в выдаче разрешения и проблемы с модулем Python при развертывании Django с Apache на Ubuntu
Я столкнулся с трудностями при попытке развернуть свой Django-сайт с помощью Apache на сервере Ubuntu. Вот подробности проблемы:
Сообщения об ошибках:
Current thread 0x00007e9faacab780 (most recent call first):
<no Python frame>
[Thu Jun 27 02:58:10.538441 2024] [wsgi:warn] [pid 16762:tid 139224230311808] (13)Permission denied: mod_wsgi (pid=16762): Unable to stat Python home /home/robch/TestSite/django_env. Python interpreter may not be able to be initialized correctly. Verify the supplied path and access permissions for whole of the path.
Python path configuration:
PYTHONHOME = '/home/robch/TestSite/django_env'
PYTHONPATH = (not set)
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
и когда я перехожу на свою страницу, я вижу ошибку 403:
Вот еще немного информации о моих файлах:
Взятые шаги:
Проверили и настроили права доступа для /home/robch/TestSite/django_env. Проверили установку Python в виртуальном окружении (/home/robch/TestSite/django_env). Проверили конфигурацию Apache (файлы *.conf в /etc/apache2/sites-available/) на предмет правильности директив python-home и python-path.
Просьба о помощи:
Как я могу добиться того, чтобы мой сайт отображался ПОЛНОСТЬЮ.
Какие шаги я должен предпринять, чтобы убедиться, что Python в виртуальной среде имеет все необходимые модули, особенно "кодировки"?
Решение:
Проблема связана с тем, что у Apache нет разрешения на доступ к вашему домашнему каталогу. Вот как это исправить:
Создайте новый каталог:
sudo mkdir /var/www/TestSite
sudo chown -R $USER:www-data /var/www/TestSite
sudo chmod -R 775 /var/www/TestSite
Переместить проект:
mv ~/TestSite /var/www/
Обновление конфигурации Apache: Обновление /etc/apache2/sites-enabled/TestSite.conf:
apache conf:
<VirtualHost *:80>
ServerName 85.215.209.167
DocumentRoot /var/www/TestSite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /var/www/TestSite/static
<Directory /var/www/TestSite/static>
Require all granted
</Directory>
Alias /media /var/www/TestSite/files/media
<Directory /var/www/TestSite/files/media>
Require all granted
</Directory>
<Directory /var/www/TestSite/Soundrise>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /var/www/TestSite/Soundrise/wsgi.py
WSGIDaemonProcess django_app python-home=/var/www/TestSite/django_env python-path=/var/www/TestSite
WSGIProcessGroup django_app
</VirtualHost>
Перезапустите Apache:
sudo systemctl restart apache2
Переместив проект из домашнего каталога и обеспечив надлежащие права доступа, проблемы с развертыванием будут решены.