В Django не настроен демонический процесс WSGI

#python #django #apache

#python #django #apache

Вопрос:

У меня есть проект Django, загруженный Lightsail. Я хочу запустить его с помощью Apache. Я следовал руководству, расположенному здесь, но по какой-то причине он выдает следующую ошибку сайта и ошибку apache при попытке подключиться к серверу только по его IP.

Получение следующей ошибки при посещении моего сайта:

500 Внутренняя ошибка сервера

При просмотре моих журналов Apache

 No WSGI daemon process called 'smp_api' has been configured: /home/ubuntu/test/smp_api/wsgi.py,
  

WSGI.py Файл

 import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smp_api.settings")

application = get_wsgi_application()
  

Apache Conf

 <VirtualHost *:80>

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /static /home/ubuntu/test/static

<Directory /home/ubuntu/test/static>
Require all granted
</Directory>

<Directory /home/ubuntu/test/smp_api>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

<Directory /test>
Require all granted
</Directory>

WSGIDaemonProcess python-path=/home/ubuntu/test
WSGIProcessGroup smp_api
WSGIScriptAlias / /home/ubuntu/test/smp_api/wsgi.py

</VirtualHost>
  

Ответ №1:

Отредактируйте свой Apache conf с помощью приведенной ниже команды:

 sudo nano /etc/apache2/sites-available/000-default.conf
  

Затем установите конфигурацию виртуального хоста, как показано ниже:

 <VirtualHost *:80>
    . . .

    Alias /static /home/user/myproject/static
    <Directory /home/user/myproject/static>
        Require all granted
    </Directory>

    <Directory /home/user/myproject/myproject>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/home/user/myproject python-home=/home/user/myproject/myprojectenv
    WSGIProcessGroup myproject
    WSGIScriptAlias / /home/user/myproject/myproject/wsgi.py

</VirtualHost>
  

ПРИМЕЧАНИЕ:

  1. Замените myproject на имя каталога вашего проекта Django.
  2. Замените myprojectenv на имя вашей папки virtualenv и убедитесь, что папка virtualenv находится внутри корневой папки вашего проекта Django.
  3. Запустите sudo chmod 664 /home/user/myproject/db.sqlite3 , чтобы разрешить apache читать и записывать ваш файл базы данных.
  4. Запустите sudo chown :www-data /home/user/myproject/db.sqlite3 , чтобы разрешить группе apache владеть файлом базы данных.
  5. Запустите sudo chown :www-data /home/user/myproject , чтобы предоставить apache полный доступ для записи в корневой каталог проекта. 6 Наконец, запустите sudo service apache2 restart , чтобы перезапустить apache.
  6. Попробуйте получить доступ к вашему веб-сайту Django с IP-адресом вашего сервера или доменным именем.