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/'