15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
01.11.2024
4 +2

Как установить Flask на хостинг: полное пошаговое руководство

Flask — это легкий и гибкий веб-фреймворк для Python, который позволяет разработчикам быстро и эффективно создавать и развертывать веб-приложения. Независимо от того, запускаете ли вы личный проект, REST API или полнофункциональный веб-сервис, знание того, как правильно установить и настроить Flask в среде хостинга, является важным навыком. Это подробное руководство проведет вас через каждый этап — от настройки сервера до развертывания в production с Gunicorn и Nginx.

1. Предварительные требования

Перед началом процесса установки убедитесь, что у вас есть следующее:

Среда хостинга, поддерживающая Python

Вам нужна услуга хостинга, которая дает вам полный контроль над средой вашего сервера. Планы общего хостинга часто ограничивают выполнение Python, поэтому для развертывания Flask рекомендуется план VPS Hosting или Dedicated Server. Эти варианты дают вам root-доступ, полные возможности управления пакетами и гибкость для настройки вашего стека именно так, как вам нужно.

SSH доступ

Вам потребуется SSH доступ для подключения к удаленному серверу и выполнения команд. Большинство сред Linux-based VPS и dedicated server поддерживают это из коробки.

Установленный Python

Рекомендуется Python 3.8 или выше. Большинство современных сред хостинга поставляются с предустановленным Python, но мы проверим это во время настройки.

Опционально: доменное имя

Если вы планируете сделать ваше Flask приложение общедоступным через доменное имя вместо сырого IP-адреса, рассмотрите регистрацию одного через Domain Registration перед началом.

2. Подключение к серверу через SSH

Откройте ваш терминал (Linux/macOS) или SSH-клиент, такой как PuTTY (Windows), и подключитесь к вашему серверу:

ssh username@your_server_ip

Замените username на ваше фактическое имя пользователя сервера и your_server_ip на общедоступный IP-адрес вашего сервера.

После подключения проверьте, доступен ли Python 3:

python3 --version

Вы должны увидеть вывод, похожий на Python 3.10.x. Если Python не установлен, переходите к его установке:

sudo apt install python3

3. Обновление вашего сервера

Перед установкой каких-либо пакетов рекомендуется обновить список пакетов вашей системы и обновить существующие пакеты до их последних версий:

sudo apt update
sudo apt upgrade -y

Это гарантирует, что вы работаете с наиболее стабильными и безопасными версиями всех зависимостей.

4. Установка Flask

Шаг 1: Установка pip

pip — это менеджер пакетов Python и требуется для установки Flask и других библиотек Python. Установите его, если он еще не присутствует:

sudo apt install python3-pip -y

Проверьте установку:

pip3 --version

Шаг 2: Создание каталога проекта

Организуйте ваше приложение, создав выделенный каталог:

mkdir my_flaskapp
cd my_flaskapp

Шаг 3: Настройка виртуального окружения

Использование виртуального окружения изолирует зависимости вашего проекта от глобальной установки Python, предотвращая конфликты версий и сохраняя ваш сервер чистым:

sudo apt install python3-venv -y
python3 -m venv venv

Активируйте виртуальное окружение:

source venv/bin/activate

Приглашение вашего терминала изменится, чтобы указать, что виртуальное окружение активно, обычно показывая (venv) в начале строки.

Шаг 4: Установка Flask

С активированным виртуальным окружением установите Flask с помощью pip:

pip install Flask

Подтвердите установку:

flask --version

Вы должны увидеть версию Flask вместе с версиями Python и Werkzeug.

5. Создание простого Flask приложения

Шаг 1: Создание файла приложения

Создайте новый файл под названием app.py внутри каталога вашего проекта:

nano app.py

Шаг 2: Написание вашего Flask приложения

Добавьте следующий минимальный код Flask приложения:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, World! Flask is running successfully."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Разбор кода:

  • Flask(__name__) — создает новый экземпляр приложения Flask.
  • @app.route('/') — определяет маршрут URL для главной страницы.
  • app.run(host='0.0.0.0', port=5000) — запускает сервер разработки, делая его доступным на всех сетевых интерфейсах на порту 5000.

Шаг 3: Сохранение и выход

Нажмите CTRL + X, затем Y и нажмите Enter для сохранения файла и выхода из редактора nano.

6. Запуск вашего Flask приложения в режиме разработки

Запустите сервер разработки Flask для тестирования вашего приложения:

python app.py

Ваше приложение теперь будет доступно в веб-браузере по адресу:

http://your_server_ip:5000

> Важно: встроенный сервер разработки Flask не подходит для использования в production. Он однопоточный, не оптимизирован для производительности и не имеет критических функций безопасности. Всегда используйте production-grade WSGI сервер для живых развертываний.

7. Развертывание Flask в production среде с Gunicorn

Для production развертываний Gunicorn (Green Unicorn) — это наиболее широко используемый Python WSGI HTTP сервер. Он эффективно обрабатывает несколько одновременных запросов и легко интегрируется с Nginx.

Шаг 1: Установка Gunicorn

С активированным виртуальным окружением установите Gunicorn:

pip install gunicorn

Шаг 2: Запуск вашего приложения с Gunicorn

Запустите ваше Flask приложение с помощью Gunicorn, привязав его к localhost на порту 8000:

gunicorn app:app -b 127.0.0.1:8000 --workers 3

Объяснение параметров:

  • app:app — относится к объекту app внутри файла app.py.
  • -b 127.0.0.1:8000 — привязывает Gunicorn к localhost на порту 8000 (Nginx будет обрабатывать внешний трафик).
  • --workers 3 — порождает 3 рабочих процесса для обработки одновременных запросов. Обычная формула — (2 × CPU cores) + 1.

Шаг 3: Запуск Gunicorn как systemd сервиса (рекомендуется)

Чтобы гарантировать, что Gunicorn запускается автоматически при перезагрузке сервера, создайте файл systemd сервиса:

sudo nano /etc/systemd/system/my_flaskapp.service

Добавьте следующую конфигурацию:

[Unit]
Description=Gunicorn instance to serve my_flaskapp
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/my_flaskapp
Environment="PATH=/home/your_username/my_flaskapp/venv/bin"
ExecStart=/home/your_username/my_flaskapp/venv/bin/gunicorn app:app -b 127.0.0.1:8000 --workers 3

[Install]
WantedBy=multi-user.target

Замените your_username на ваше фактическое имя пользователя сервера. Затем включите и запустите сервис:

sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskapp

Проверьте статус сервиса:

sudo systemctl status my_flaskapp

8. Настройка Nginx как обратного прокси

Nginx действует как обратный прокси, находясь перед Gunicorn и обрабатывая весь входящий HTTP/HTTPS трафик. Эта настройка улучшает производительность, включает SSL termination и позволяет вам эффективно обслуживать статические файлы.

Шаг 1: Установка Nginx

sudo apt install nginx -y

Шаг 2: Создание файла конфигурации Nginx

Создайте новую конфигурацию блока сервера для вашего Flask приложения:

sudo nano /etc/nginx/sites-available/my_flaskapp

Добавьте следующую конфигурацию:

server {
    listen 80;
    server_name your_domain_or_ip;  # Replace with your domain or server IP

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static {
        alias /home/your_username/my_flaskapp/static;
        expires 30d;
    }
}

Шаг 3: Включение конфигурации

Создайте символическую ссылку для включения сайта и проверьте конфигурацию Nginx:

sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -t

Если тест возвращает syntax is ok и test is successful, перезагрузите Nginx:

sudo systemctl restart nginx

Ваше Flask приложение теперь доступно по адресу http://your_domain_or_ip на порту 80.

9. Защита вашего Flask приложения с SSL/HTTPS

Запуск вашего приложения через HTTPS больше не является опциональным — это фундаментальное требование для безопасности, доверия пользователей и рейтинга SEO. Вы можете получить и установить бесплатный SSL сертификат, используя Certbot с Let’s Encrypt, или приобрести премиум сертификат через SSL Certificates для улучшенной валидации и покрытия гарантией.

Установка Certbot и получение бесплатного SSL сертификата

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot автоматически изменит вашу конфигурацию Nginx для включения HTTPS и настройки автоматического обновления сертификата.

Проверьте, что автоматическое обновление настроено:

sudo certbot renew --dry-run

10. Конфигурация брандмауэра

Убедитесь, что брандмауэр вашего сервера разрешает трафик на необходимые порты:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Nginx Full открывает оба порта 80 (HTTP) и 443 (HTTPS).

11. Устранение неполадок

ПроблемаВероятная причинаРешение
502 Bad GatewayGunicorn не запущенПроверьте sudo systemctl status my_flaskapp
Permission denied на сокетеНеправильные разрешения файловУбедитесь, что пользователь Nginx име
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать