Развертывание приложения Django 1.7 в Apache2 с помощью WSGI

#python #django #linux #apache #mod-wsgi

#python #django #linux #apache #мод -wsgi

Вопрос:

Я пытаюсь развернуть старое приложение Django (1.7) на сервере Apache2 в Debian. Я, наконец, смог запустить приложение, ./manage.py runserver но мне не удалось добиться успеха в mod-wsgi работе. Я никогда не писал серверное приложение на Python, поэтому, возможно, я упускаю что-то очевидное.

Вот шаги, которые я выполнил

  1. Все, что я пробовал /usr/bin/python , — это 2.7 — я знаю, я должен использовать virtuelenv , но я не хотел добавлять еще больше сложности ко всему этому (поскольку я с этим не знаком)
  2. установлен mod-wsgi с apt-get install libapache2-mod-wsgi
  3. Добавьте следующую конфигурацию в /etc/apache2/mods-enabled/wsgi.conf
  4. Перезапуск Apache2
 <IfModule mod_wsgi.c>
    WSGIScriptAlias / /home/rosasystem.pl/public_html/rosasystem/rosasystem/wsgi.py
    WSGIPythonHome /usr/bin/python
    WSGIPythonPath /home/rosasystem.pl/public_html/rosasystem
    LogLevel warn

    <Directory /home/rosasystem.pl/public_html/rosasystem/rosasystem>
        <Files wsgi.py>
            Order deny,allow
            Require all granted
        </Files>
    </Directory>
</IfModule>
  

С тех пор я продолжаю получать это сообщение об ошибке в error.log — большинство материалов, которые я использовал в Google, предполагает, что существует несоответствие версии Python между mod-wsgi и system / virtualenv версией Python, что в этом не имеет смысла, потому что все на Python 2.7.

 [Tue Oct 06 15:13:42.946626 2020] [mpm_event:notice] [pid 17059:tid 139874785088640] AH00489: Apache/2.4.38 (Debian) mod_fcgid/2.3.9 OpenSSL/1.1.1g mod_wsgi/4.6.5 Python/2.7 configured -- resuming normal operations
[Tue Oct 06 15:13:42.946650 2020] [core:notice] [pid 17059:tid 139874785088640] AH00094: Command line: '/usr/sbin/apache2'
[Tue Oct 06 15:13:42.951277 2020] [wsgi:warn] [pid 17061:tid 139874785088640] mod_wsgi (pid=17061): Python home /usr/bin/python is not a directory. Python interpreter may not be able to be initialized correctly. Verify the supplied path.
[Tue Oct 06 15:13:42.951531 2020] [wsgi:warn] [pid 17062:tid 139874785088640] mod_wsgi (pid=17062): Python home /usr/bin/python is not a directory. Python interpreter may not be able to be initialized correctly. Verify the supplied path.
ImportError: No module named site
  

На данный момент я в значительной степени застрял; что нового я могу попробовать?

Комментарии:

1. Вы пробовали это без WSGIPythonHome, поскольку используете системный python?

2. @WombatPM да, у меня есть, без изменений

3. Вы пытались добавить /usr/lib/python2.7 в WSGIPythonPath? И были ли какие-либо ошибки при запуске pip install -r requirements.txt ?

Ответ №1:

site-packages путь должен быть добавлен WSGIPythonPath , просто укажите правильный путь для вашей системы

 <IfModule mod_wsgi.c>
    WSGIScriptAlias / /home/rosasystem.pl/public_html/rosasystem/rosasystem/wsgi.py
    WSGIPythonHome /usr/bin/python
    WSGIPythonPath '/home/rosasystem.pl/public_html/rosasystem;/usr/lib/python2.7/dist-packages'
    LogLevel warn

    <Directory /home/rosasystem.pl/public_html/rosasystem/rosasystem>
        <Files wsgi.py>
            Order deny,allow
            Require all granted
        </Files>
    </Directory>
</IfModule>
  

Комментарии:

1. В WSGI определенно отсутствует путь к библиотеке python на основе сбоя импорта.

2. Я попробую через мгновение