У меня проблема, и мне нужна помощь!У меня есть приложение Django, которое находится на сервере Apache.Он работал нормально, пока вы не обновились до django 2.0.5.
Приложение подано с cherrypy и apache.Где apache выполняет роль обратного прокси.Когда я набираю адрес, он удаляет таргетинг, созданный apache.Например: домен «www.example.com», а приложение находится по адресу «www.example.com/app».При вводе адреса приложения в браузере оно перенаправляет на страницу входа в систему, но удаляет «/ app /», делая таким образом «www.example.com/security/enter», когда это должно быть «www.example.com»./app/security/enter".
Если я вручную поставлю "/ app /", система работает нормально, сервер статических файлов и все остальное, но при запросе новой страницы всегда удаляет "/ app/ ", принудительно заставляя его работать вручную.
Ниже приведен шаблон, который я использовал для запуска и запуска приложения:
Файл app.conf в / etc / httpd /conf.d /:
<VirtualHost *:*>
ServerName example.com
ProxyPreserveHost On
ProxyPass /app/ http://example.com:8000/
ProxyPassReverse /app/ http://example.com:8000/
</VirtualHost>
Файл cps.py (скрипт cherrypy):
#!/opt/app/env/bin python
# -*- coding: utf-8 -*-
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "app.settings"
import cherrypy
import django
django.setup()
from django.conf import settings
from django.core.handlers.wsgi import WSGIHandler
class DjangoApplication(object):
HOST = "0.0.0.0"
PORT = 8000
def mount_static(self, url, root):
config = {
'tools.staticdir.on': True,
'tools.staticdir.dir': root,
'tools.expires.on': True,
'tools.expires.secs': 86400
}
cherrypy.tree.mount(None, url, {'/app/': config})
def run(self):
cherrypy.config.update({
'server.socket_host': self.HOST,
'server.socket_port': self.PORT,
'engine.autoreload_on': False,
'log.screen': True
})
self.mount_static(settings.STATIC_URL, settings.STATIC_ROOT)
cherrypy.log("Load application app")
cherrypy.tree.graft(WSGIHandler())
cherrypy.engine.start()
cherrypy.engine.block()
if __name__ == "__main__":
DjangoApplication().run()
Не думаю, что проблема связана собновление django в версии 1.11 до 2.0.5, потому что в среде разработки он работает нормально.Приложение работало в течение нескольких дней, но когда мне нужно обновить представление, я получил эту проблему.
Он работает в virtualenv с Python 3.6.Я много исследовал, но не могу найти то, что приводит меня к ошибке, поэтому я прибегаю к этой теме, потому что я всегда нахожу здесь много хорошего!Спасибо и извините за мой английский, это просто!