15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати
01.11.2024
3 +1

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

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

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

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

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

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

SSH-доступ

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

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

Крок 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. Усунення неполадок поширених проблем

15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати