Deploy Django на Apache в Debian12

Помогите разобраться, написал проект на Django - запустил его, как service = работает.

[Unit]
Description=SiteTestService
After=multi-user.target

[Service]
User=my_login
Group=my_group
Type=simple
ExecStart=/usr/bin/python3 /path/to/django/project/manage.py runserver 0.0.0.0:5090
Restart=always

[Install]
WantedBy=multi-user.target

Когда решил попробовать запустить тот же сайт, через Apache:

Server version: Apache/2.4.57 (Debian)
Server built:   2023-04-13T03:26:51
Server's Module Magic Number: 20120211:127
Server loaded:  APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Compiled using: APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Architecture:   64-bit

Сделал все по мануалу, установил библиотеки:

sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

Внес изменения в файл /etc/apache2/sites-available/000-default.conf:

<VirtualHost *:80>
Define domain domain.name
Define path /path/to/django/project/
Define project myproject
Define app siteapp

ServerName ${domain}
ServerAlias www.${domain}

DocumentRoot ${path}

WSGIDaemonProcess ${domain} python-home=/usr/bin python-path=${path}
WSGIProcessGroup ${domain}
WSGIScriptAlias / ${path}/${project}/wsgi.py

<Directory ${path}/${project}>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>


Alias /functions/ ${path}/${app}/functions/
<Directory ${path}/${app}/functions>
        Require all granted
</Directory>
Alias /static/ ${path}/${app}/static/
<Directory ${path}/${app}/static>
        Require all granted
</Directory>
Alias /favicon.ico ${path}/${app}/static/images/favicon.ico
<Directory ${path}/${app}/static/images/>
        Require all granted
</Directory>

# logging
ErrorLog /path/to/django/project/logs/ApacheError.log
CustomLog /path/to/django/project/logs/ApacheAccess.log combined
</VirtualHost>

Файл wsgi.py:

import os
import sys
import logging
from django.core.wsgi import get_wsgi_application

logging.basicConfig(level=logging.INFO, filename="/path/to/django/project/logs/WSGI.log",filemode="a+",
                    format="%(asctime)s %(levelname)s %(message)s")


sys.path.append('/path/to/django/project/')
sys.path.append('/path/to/django/project/myproject')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

try:
    application = get_wsgi_application()
    logging.info('Запустился!')
except:
    logging.info('Не запустился!')

При запуске на прямую через python файла wsgi.py = сайт не работает, но логи пишутся, при запуске, через Apache2 - логов от wsgi - нет.

После запуска ни каких ошибок, но при переходе на страницу c именем домена - получаю Apache2 Debian Default Page

Получилось запустить, вот что я сделал, первое я установил все необходимые библиотеки в локальный Python из под root (django, corsheaders и mssql-cli - это опционально, о отсутствии библиотек мне сообщил Apache в файл ApacheError.log), второе, внес правки в файлы:

Файл WSGI:

import os
import sys
import logging
from django.core.wsgi import get_wsgi_application

sys.path.append('/path/to/django/project/')
sys.path.append('/path/to/django/project/myproject')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_wsgi_application()

Файл 000-default.conf:

<VirtualHost *:80>
        ServerName domain.name
        ServerAlias www.domain.name

        DocumentRoot /path/to/django/project
        WSGIScriptAlias / /path/to/django/project/myproject/wsgi.py
        <Directory /path/to/django/project/myproject/wsgi.py>
                Order allow,deny
                Allow from all
        </Directory>

        Alias /functions/ /path/to/django/project/siteapp/functions/
        <Directory /path/to/django/project/siteapp/functions>
                Require all granted
        </Directory>
        Alias /static/ /path/to/django/project/siteapp/static/
        <Directory /path/to/django/project/siteapp/static>
                Require all granted
        </Directory>
        Alias /favicon.ico /path/to/django/project/siteapp/static/images/favicon.ico
        <Directory /path/to/django/project/siteapp/static/images/>
                Require all granted
        </Directory>


        ErrorLog /path/to/django/project/logs/ApacheError.log
        CustomLog /path/to/django/project/logs/ApacheAccess.log combined
</VirtualHost>

Файл settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = '/path/to/django/project/siteapp/static/'
Вернуться на верх