404 при попытке развернуть приложение Flask в Apache - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь развернуть приложение Flask на моем сервере на базе Linux, но безуспешно. Я уже просмотрел различные подходы и записи на stackoverflow, но, похоже, ничего не работает. Чтобы проверить это немного чище, я создал простое тестовое приложение, которое я пытаюсь запустить локально:

In /var/www/test:

test.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index ():
        return "Hello World!"

if __name__ == '__main__':
        app.run()

test.wsgi

from test import app as application

и пустой файл __init__.py.

В /etc/apache2/sites-available:

test.conf

<VirtualHost *>
    ServerName *Local IP address*

    WSGIDaemonProcess test user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/www/test/test.wsgi

    <Directory /var/www/test>
        WSGIProcessGroup test
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

Файл test.conf был зарегистрирован через a2ensite test.conf, а libapache2-mod-wsgi был установлен через apt в моем локальном дистрибутиве Debian Buster, на котором я тестирую (localhost). Python2 и 3 устанавливаются вместе с Flask для каждого из них. Каждый файл и папка test принадлежат www-data с группой www-data. И, конечно, я перезапускаю приложение после каждого изменения с помощью service apache2 restart.

. Я могу успешно запустить приложение с python test.py на локальном хосте: 5000, напечатав «Hello World!».

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

[Sun Oct 27 22:16:55.923721 2019] [mpm_event:notice] [pid 26336:tid 140548964586624] AH00489: Apache/2.4.38 (Debian) mod_wsgi/4.6.5 Python/2.7 configured -- resuming normal operations
[Sun Oct 27 22:16:55.923771 2019] [core:notice] [pid 26336:tid 140548964586624] AH00094: Command line: '/usr/sbin/apache2'

Чего мне не хватает? Почему я получаю 404? Есть ли способ узнать, запущено ли приложение или просто пытается его запустить?

1 Ответ

0 голосов
/ 28 октября 2019

ServerName *Local IP address* <- это. Вы не можете использовать IP-адрес там, это должно быть имя хоста (которое совпадает с тем, которое вы используете в URL-адресе, к которому вы обращаетесь). Если вы используете IP для доступа к вашему серверу, по умолчанию будет использоваться первый определенный vhost, поскольку он не будет совпадать ни с одним из Servernames, который, вероятно, не тот, который вы только что определили. </p>

Так что либо поставьтетам укажите имя хоста и определите его в файле hosts, если это имя не разрешается, или отредактируйте vhost по умолчанию (vhosts загружаются в алфавитно-цифровом порядке, что означает, что если test.conf не является первой записью при перечислении sites-available,он не первый и не будет использоваться при доступе к серверу с IP).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...