Чтобы запустить приложение Flask на Apache, у вас есть несколько вариантов. Ниже я объясню три распространенных метода вместе с примерами кода. Обратите внимание: в этих инструкциях предполагается, что на вашем сервере установлены Apache и Flask.
Метод 1: использование mod_wsgi
-
Установить модуль mod_wsgi для Apache:
sudo apt-get install libapache2-mod-wsgi-py3 -
Создайте файл WSGI для приложения Flask. Предположим, ваш файл приложения Flask называется
app.py. Создайте новый файл с именемmyapp.wsgiи добавьте следующий код:import sys sys.path.insert(0, '/path/to/your/flask/application') from app import app as application -
Настройте Apache для использования файла WSGI. Откройте файл конфигурации Apache (обычно он находится по адресу
/etc/apache2/sites-available/000-default.conf) и добавьте следующий код в раздел:WSGIScriptAlias / /path/to/your/wsgi/file/myapp.wsgi <Directory /path/to/your/flask/application> Require all granted </Directory> -
Перезапустите Apache:
sudo service apache2 restart
Метод 2: использование mod_proxy
-
Включите необходимые модули Apache:
sudo a2enmod proxy sudo a2enmod proxy_http -
Настройте Apache для прокси-запросов к вашему приложению Flask. Откройте файл конфигурации Apache (обычно он находится по адресу
/etc/apache2/sites-available/000-default.conf) и добавьте следующий код в раздел:ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ -
Перезапустите Apache:
sudo service apache2 restart
Метод 3: использование uWSGI
-
Установить uWSGI:
pip install uwsgi -
Создайте файл конфигурации uWSGI. Предположим, ваш файл приложения Flask называется
app.py. Создайте новый файл с именемmyapp.iniи добавьте следующий код:[uwsgi] module = app callable = app master = true processes = 5 socket = /path/to/your/socket/file.sock chmod-socket = 660 vacuum = true die-on-term = true -
Запустите uWSGI, используя файл конфигурации:
uwsgi --ini /path/to/your/uwsgi/config/file/myapp.ini -
Настройте Apache для пересылки запросов в uWSGI. Откройте файл конфигурации Apache (обычно он находится по адресу
/etc/apache2/sites-available/000-default.conf) и добавьте следующий код в раздел:ProxyPass / unix:/path/to/your/socket/file.sock|uwsgi://localhost/ -
Перезапустите Apache:
sudo service apache2 restart