Настройте Django на подкаталоге Apache Ubuntu

Я выполняю apache2 сервер на Ubuntu 14. Теперь я хочу настроить Apache для работы с mod_wsgi для выполнения Django на подкаталоге домена, такого как www.abc.com/lab, но мне всегда не удается сделать это.

Я успешно установил Python между прочим. Я могу сделать python --version который возвращается Python 2.7.3. Следующее является моими шагами установки:

  1. Я создаю pylab папку под/var/www, внутри имеет эти файлы init.py, init.pyc, manage.py, settings.py, settings.pyc, и наконец urls.py

  2. Я затем перехожу в /etc/apache2/sites-available и создайте файл лаборатории со следующим содержанием:

    <VirtualHost *:80>  
    ServerName /lab  
    DocumentRoot /var/www/pylab  
    <Directory /lab>  
    Options All  
    AllowOverride All  
    Require all granted  
    </Directory>  
    
    Alias /static/ /var/www/pylab/static/  
    <Location "/static/">  
    Options -Indexes   
    </Location>   
    
    Alias /media/ /var/www/pylab/media/   
    <Location "/media/">   
    Options -Indexes   
    </Location>   
    
    WSGIScriptAlias / /var/www/pylab/wsgi.py   
    WSGIDaemonProcess labapi python-path=/var/www/pylabprocesses=2 threads=15 display-name=Pylab   
    WSGIProcessGroup pylab   
    
    </VirtualHost>  
    

Но когда я получаю доступ к www.abc.com/lab, я только вижу 404 ошибки. Что я делал неправильно?

2
задан 3 February 2015 в 08:49

1 ответ

При размещении python предпочтительно хранить исходные файлы python вне DocumentRoot. В Apache есть модуль mod_wsgi, скомпилированный с некоторой версией Python. Вы можете найти эту версию Python в /var/log/apache2/error.log (Примечание: вам может понадобиться использовать sudo для чтения этого файла).

... mod_wsgi/4.7.1 Python/3.8 ...

Установите Python

Вы должны использовать ту же версию Python в своем проекте. Если вы хотите использовать другую версию Python, вы должны скомпилировать python и mod_wsgi из исходного кода. Установите эти пакеты:

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget

Загрузите и скомпилируйте python, по крайней мере, с включенными оптимизациями и общими флагами.Если вы не добавите --prefix, тогда сделайте altinstall вместо make install, в противном случае это может привести к перезаписи системного python, что может быть фатальным.

 ./configure --enable-optimizations --enable-shared --prefix=/opt/Python-3.8.2
 make -j4
 sudo make install

С j4 в make он будет использовать 4 параллельных процесса для компиляции.

Установите WSGI

Кроме того, вы должны скачать и скомпилировать mod_wsgi из исходников. Установите apache(-dev):

sudo apt install apache2 apache2-dev

и скомпилируйте mod_wsgi с этими флагами.

export LD_LIBRARY_PATH=/opt/Python-3.8.2/lib:$LD_LIBRARY_PATH
./configure --with-python=/opt/Python-3.8.2/bin/python3
make -j4
sudo make install

Открыть

sudo vim /etc/apache2/mods-available/wsgi.load

и добавить в начало

SetEnv LD_LIBRARY_PATH /opt/Python-3.8.2/lib
SetEnv LD_RUN_PATH /opt/Python-3.8.2/lib

перед

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

Настроить Apache

sudo a2enmod wsgi
sudo apachectl graceful

Давайте теперь настроим apache

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

В разделе VirtualHost напишите

    WSGIDaemonProcess sitename python-home=/path/to/project/venv python-path=/folder/containing/manage.py
    WSGIProcessGroup sitename

    #Static content
    Alias /static /path/to/project/static
    <Directory /path/to/project/static>
        AllowOverride None
        require all granted
    </Directory>

    #WSGI
    WSGIScriptAlias / /path/to/wsgi.py.  # the path is inclusive of wsgi.py
    <Directory /path/contaning/wsgi.py>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

наконец включить сайт и изящно перезапустить apache

sudo a2ensite 000-default
sudo apachectl graceful

Посетите localhost из любого браузера, и он должен работать.

Если вы хотите разместить его в подпапке 'lab', замените WSGIScriptAlias в файле apache-conf на

SetEnv SCRIPT_NAME lab
WSGIScriptAlias /lab /path/to/wsgi.py.  # the path is inclusive of wsgi.py 

и снова аккуратно перезапустите apache.

Ссылки:

  1. https://phoenixnap.com/kb/how-to-install-python-3-ubuntu
  2. https://github.com/GrahamDumpleton/mod_wsgi
0
ответ дан 25 July 2020 в 12:11

Другие вопросы по тегам:

Похожие вопросы: