Как заставить apache отправлять запросы подпапок в приложение Flask вместо указанной подпапки? - PullRequest
0 голосов
/ 02 мая 2019

Вопрос прост. Как заставить примеры на этой странице работать, когда приложение развернуто на сервере Apache, если вы не запускаете из корневого каталога? Я в основном хочу, чтобы apache перенаправлял каждый запрос в файл .wsgi в корневой папке.

Вот более подробное описание того, чего я пытаюсь достичь.

У меня есть приложение Flask (на самом деле Dash plotly), которое корректно работает в режиме разработки, то есть когда я запускаю run.py напрямую. То, что он делает, это действует как браузер данных. Вы можете просматривать множество подпапок в интерфейсе и просматривать некоторые данные. Как это настроить, когда я нажимаю на одну из подпапок, URL-адрес изменяется, например, с www.server.com/ на www.server.com/folder1/subfolder2. Обратите внимание, что эта структура папок не существует в каталоге приложения. Он существует на удаленном компьютере.

В режиме разработчика, несмотря на то, что URL-адрес изменяется на что-то с некоторыми папками в нем, основная функция python по-прежнему обрабатывает запрос и внутренне знает, как найти подпапку. Когда я развернул это на apache, apache ищет папку 1 / subfolder2 в корневом каталоге каталога приложения и, конечно, не находит ее.

Если я запускаю приложение, я могу просматривать папки, потому что веб-страница не обновляется. Но если я скопирую URL-адрес, который указывает на определенный набор данных, и вставлю его в браузер, apache обработает этот URL-адрес и захочет найти указанные подпапки, но не сможет его найти. Я вижу сообщение "Not Found. Запрошенный URL / folder1 / subfolder2 не найден на этом сервере".

Есть ли способ, чтобы файл .wsgi или файл run.py обрабатывал все запросы, направленные на виртуальный хост, на котором запущено мое приложение.

В настоящее время мой apache настроен для этого виртуального хоста следующим образом:

        <VirtualHost *:8082>
                DocumentRoot "/srv/dataview"
                ServerName machinename.domainname.com
                SSLEngine on
                SSLCertificateFile      /etc/ssl/certs/mycert.crt
                SSLCertificateKeyFile /etc/ssl/private/mykey.key
                WSGIScriptAlias / /srv/dataview/dataview.wsgi
                <Directory />
                        Order allow,deny
                        Allow from all
                        Require all granted
                        # WSGIProcessGroup dataview
                        WSGIApplicationGroup %{GLOBAL}
                        WSGIScriptReloading On
                        FallbackResource dataview.wsgi
                        DirectoryIndex dataview.wsgi
                </Directory>
                ErrorLog /srv/dataview/logs/error.log
                Alias /* /
        </VirtualHost>

Две строки, начинающиеся с FallbackResource и DirectoryIndex, предназначены для решения этой проблемы, но они этого не сделали.

Любая помощь приветствуется.

...