Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Адміністрація Віртуальні сервери

Як встановити Flask на хостинг: повний покроковий посібник

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

1. Передумови

Перед тим, як розпочати процес встановлення, переконайтеся, що у вас є наступне:

Хостинг-середовище, яке підтримує Python

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

SSH доступ

Вам потрібен SSH доступ для підключення до вашого віддаленого сервера та виконання команд. Більшість Linux-базованих VPS та середовищ виділених серверів підтримують це з коробки.

Встановлений 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 у виробничому середовищі з Gunicorn

Для виробничих розгортань 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 і дозволяє ефективно обслуговувати статичні файли.

Крок 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 має доступ до директорії додатка
Flask додаток не знайденоНеправильна робоча директорія у файлі службиЩе раз перевірте шлях WorkingDirectory у конфігурації systemd
Порт 5000 недоступнийБрандмауер блокує портВідкрийте порт за допомогою sudo ufw allow 5000 (тільки для розробки)
ModuleNotFoundErrorВіртуальне середовище не активованоПереконайтеся, що ExecStart вказує на бінарний файл Python/Gunicorn venv

12. Резюме та наступні кроки

Розгортання Flask-додатку на хостинг-сервері включає кілька взаємопов’язаних кроків: налаштування чистого серверного середовища, встановлення Python та Flask у віртуальному середовищі, налаштування Gunicorn як виробничого WSGI-сервера та розміщення Nginx спереду як зворотного проксі. Додавання SSL-шифрування завершує безпечне, готове до виробництва розгортання.

Ось короткий огляд повного стека розгортання:

  • Flask — Python веб-фреймворк
  • Gunicorn — виробничий WSGI-сервер
  • Nginx — зворотний проксі та сервер статичних файлів
  • SSL/TLS — HTTPS-шифрування
  • Systemd — управління процесами та автоматичний перезапуск

Для найкращого досвіду хостингу Flask вам потрібне серверне середовище, яке надає повний root-доступ та надійну продуктивність. VPS Hosting AlexHost — відмінний вибір, що пропонує SSD-сховище, виділені ресурси та повний SSH-доступ. Якщо вам потрібна ще більша потужність для додатків з високим трафіком, дослідіть наші Dedicated Servers для максимальної продуктивності та ізоляції.

Якщо ви керуєте кількома веб-проектами та віддаєте перевагу інтерфейсу панелі керування, розгляньте нашу опцію VPS з cPanel, яка спрощує управління сервером, але все ще дає вам гнучкість для запуску Python-додатків.

Дотримуючись цього посібника, ваш Flask-додаток тепер правильно налаштований, захищений і готовий обслуговувати реальних користувачів у виробничому середовищі. Регулярно оновлюйте свої залежності, моніторте журнали додатків та впроваджуйте належні стратегії резервного копіювання, щоб підтримувати здорове, довгострокове розгортання.