Django mod_wsgi daemon mode touch wsgi.py не вызывает обновления
Я не могу перезагрузить шаблоны django, коснувшись скрипта wsgi.py, расположенного в корне/имени моего приложения django.
Сценарий и проект расположены в /var/www, поэтому мне нужен sudo для выполнения touch.
Я запускаю производственный сервер apache2, на котором работает сайт django с mod_wsgi в режиме демона. Я могу собирать статику и делать миграции, получать доступ к базе данных (без проблем с разрешениями). Я также могу изменить флаг DEBUG в настройках. Если я коснусь wsgi.py, он переведет производственный сайт в режим отладки, как и ожидалось, но html-файлы не будут загружены. Аналогичным образом я могу обновить статические файлы, коллекционную статистику или изменить базовые модели и увидеть изменения в реальном времени. Точно так же я могу использовать закомментированный код для получения информации о том, в каком режиме демона работает swerver. Проблему вызывают только шаблоны. Файл настроек, wsgi.py, статические и python-скрипты отвечают, как и ожидалось.
У кого-нибудь есть идеи, как это отладить?
virtualenv python3.8.12 apache2.4 mod_wsgi скомпилирован для python3.8.12
wsgi.py
import os
import sys
from django.core.wsgi import get_wsgi_application
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../app/")))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mb.settings')
application = get_wsgi_application()
#def application(environ, start_response):
# status = '200 OK'
# if not environ['mod_wsgi.process_group']:
# output = u'EMBEDDED MODE'
# else:
# output = u'DAEMON MODE'
# response_headers = [('Content-Type', 'text/plain'),
# ('Content-Length', str(len(output)))]
# start_response(status, response_headers)
# return [output.encode('UTF-8')]
apache2 site config
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName app
ServerAdmin webmaster@localhost
ServerName ------removed for posting-----
ServerAlias -----removed for posting------
DocumentRoot /var/www/vhosts/mb
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
<Directory /var/www/vhosts/mb>
Order allow,deny
Allow from all
Require all granted
</Directory>
Alias /static /var/www/vhosts/mb/static
<Directory /var/www/vhosts/mb/static>
Require all granted
</Directory>
<Directory /var/www/vhosts/mb/mb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess mb python-path=/var/www/vhosts/mb python-home=/var/www/vhosts/mb/pyenv
WSGIProcessGroup mb
WSGIScriptAlias / /var/www/vhosts/mb/mb/wsgi.py
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
По какой-то причине я сделал scp-копирование в каталог с новым html, а не git push. Результат? Я использовал рекурсивное копирование на scp с флагом -r. Это автоматически создало подкаталог. Это сбило с толку демон. Удаление этого подкаталога решило проблему, и touch заработал нормально.