Як встановити 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 python33. Оновлення вашого сервера
Перед встановленням будь-яких пакетів, найкраще оновити список пакетів вашої системи та оновити існуючі пакети до їхніх найновіших версій:
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_flaskapp8. Налаштування 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.comCertbot автоматично змінить вашу конфігурацію Nginx для увімкнення HTTPS та налаштування автоматичного поновлення сертифіката.
Перевірте, що автоматичне поновлення налаштовано:
sudo certbot renew --dry-run10. Налаштування брандмауера
Переконайтеся, що брандмауер вашого сервера дозволяє трафік на необхідних портах:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw statusNginx Full відкриває як порт 80 (HTTP), так і порт 443 (HTTPS).
