Jak zainstalować Flask na hostingu: Kompletny przewodnik krok po kroku
Flask to lekka i elastyczna platforma internetowa dla Pythona, która umożliwia deweloperom szybkie i efektywne tworzenie i wdrażanie aplikacji internetowych. Niezależnie od tego, czy uruchamiasz projekt osobisty, REST API czy pełnowymiarową usługę internetową, wiedza na temat prawidłowej instalacji i konfiguracji Flask w środowisku hostingowym jest umiejętnością niezbędną. Ten kompleksowy przewodnik przeprowadzi Cię przez każdy krok — od konfiguracji serwera po wdrożenie produkcyjne z Gunicorn i Nginx.
1. Wymagania wstępne
Przed przystąpieniem do procesu instalacji upewnij się, że masz na miejscu następujące elementy:
Środowisko hostingowe obsługujące Python
Potrzebujesz usługi hostingowej, która daje Ci pełną kontrolę nad środowiskiem serwera. Plany hostingu współdzielonego często ograniczają wykonywanie Pythona, dlatego w przypadku wdrożeń Flask zalecany jest plan VPS Hosting lub Dedicated Server. Te opcje dają Ci dostęp root, pełne możliwości zarządzania pakietami i elastyczność do konfiguracji stosu dokładnie tak, jak potrzebujesz.
Dostęp SSH
Będziesz potrzebować dostępu SSH do połączenia się ze zdalnym serwerem i wykonywania poleceń. Większość środowisk VPS i serwerów dedykowanych opartych na Linuksie obsługuje to od razu.
Zainstalowany Python
Zalecana jest wersja Python 3.8 lub wyższa. Większość nowoczesnych środowisk hostingowych ma Python preinstalowany, ale zweryfikujemy to podczas konfiguracji.
Opcjonalnie: nazwa domeny
Jeśli planujesz udostępnić swoją aplikację Flask publicznie za pośrednictwem domeny zamiast surowego adresu IP, rozważ zarejestrowanie jej za pośrednictwem Domain Registration przed rozpoczęciem.
2. Łączenie się z serwerem za pośrednictwem SSH
Otwórz terminal (Linux/macOS) lub klienta SSH, taki jak PuTTY (Windows), i połącz się z serwerem:
ssh username@your_server_ipZastąp username swoją rzeczywistą nazwą użytkownika serwera i your_server_ip publicznym adresem IP serwera.
Po połączeniu zweryfikuj, że Python 3 jest dostępny:
python3 --versionPowinieneś zobaczyć dane wyjściowe podobne do Python 3.10.x. Jeśli Python nie jest zainstalowany, przystąp do jego instalacji:
sudo apt install python33. Aktualizowanie serwera
Przed zainstalowaniem jakichkolwiek pakietów najlepszą praktyką jest zaktualizowanie listy pakietów systemu i uaktualnienie istniejących pakietów do ich najnowszych wersji:
sudo apt update
sudo apt upgrade -yGwarantuje to pracę z najbardziej stabilnymi i bezpiecznymi wersjami wszystkich zależności.
4. Instalacja Flask
Krok 1: Zainstaluj pip
pip to menedżer pakietów Pythona i jest wymagany do instalacji Flask i innych bibliotek Pythona. Zainstaluj go, jeśli nie jest jeszcze obecny:
sudo apt install python3-pip -yZweryfikuj instalację:
pip3 --versionKrok 2: Utwórz katalog projektu
Zorganizuj swoją aplikację, tworząc dedykowany katalog:
mkdir my_flaskapp
cd my_flaskappKrok 3: Skonfiguruj wirtualne środowisko
Korzystanie z wirtualnego środowiska izoluje zależności projektu od globalnej instalacji Pythona, zapobiegając konfliktom wersji i utrzymując serwer czystym:
sudo apt install python3-venv -y
python3 -m venv venvAktywuj wirtualne środowisko:
source venv/bin/activateTwój monit terminala zmieni się, aby wskazać, że wirtualne środowisko jest aktywne, zwykle pokazując (venv) na początku linii.
Krok 4: Zainstaluj Flask
Po aktywowaniu wirtualnego środowiska zainstaluj Flask za pomocą pip:
pip install FlaskPotwierdź instalację:
flask --versionPowinieneś zobaczyć wersję Flask wraz z wersjami Pythona i Werkzeug.
5. Tworzenie prostej aplikacji Flask
Krok 1: Utwórz plik aplikacji
Utwórz nowy plik o nazwie app.py wewnątrz katalogu projektu:
nano app.pyKrok 2: Napisz swoją aplikację Flask
Dodaj następujący minimalny kod aplikacji 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)Rozbicie kodu:
Flask(__name__)— Tworzy nową instancję aplikacji Flask.@app.route('/')— Definiuje trasę URL dla strony głównej.app.run(host='0.0.0.0', port=5000)— Uruchamia serwer deweloperski, udostępniając go na wszystkich interfejsach sieciowych na porcie 5000.
Krok 3: Zapisz i wyjdź
Naciśnij CTRL + X, następnie Y i naciśnij Enter, aby zapisać plik i wyjść z edytora nano.
6. Uruchamianie aplikacji Flask w trybie deweloperskim
Uruchom serwer deweloperski Flask, aby przetestować swoją aplikację:
python app.pyTwoja aplikacja będzie teraz dostępna w przeglądarce internetowej pod adresem:
http://your_server_ip:5000> Ważne: Wbudowany serwer deweloperski Flask nie jest odpowiedni do użytku produkcyjnego. Jest jednowątkowy, nie zoptymalizowany pod kątem wydajności i pozbawiony krytycznych funkcji bezpieczeństwa. Zawsze używaj produkcyjnego serwera WSGI do wdrożeń na żywo.
7. Wdrażanie Flask w środowisku produkcyjnym z Gunicorn
W przypadku wdrożeń produkcyjnych Gunicorn (Green Unicorn) jest najczęściej używanym serwerem Python WSGI HTTP. Efektywnie obsługuje wiele równoczesnych żądań i bezproblemowo integruje się z Nginx.
Krok 1: Zainstaluj Gunicorn
Po aktywowaniu wirtualnego środowiska zainstaluj Gunicorn:
pip install gunicornKrok 2: Uruchom swoją aplikację z Gunicorn
Uruchom swoją aplikację Flask za pomocą Gunicorn, wiążąc ją z localhost na porcie 8000:
gunicorn app:app -b 127.0.0.1:8000 --workers 3Wyjaśnienie parametrów:
app:app— Odnosi się do obiektuappwewnątrz plikuapp.py.-b 127.0.0.1:8000— Wiąże Gunicorn z localhost na porcie 8000 (Nginx będzie obsługiwać ruch zewnętrzny).--workers 3— Tworzy 3 procesy robocze do obsługi równoczesnych żądań. Powszechny wzór to(2 × CPU cores) + 1.
Krok 3: Uruchom Gunicorn jako usługę Systemd (zalecane)
Aby zapewnić automatyczne uruchomienie Gunicorn po ponownym uruchomieniu serwera, utwórz plik usługi systemd:
sudo nano /etc/systemd/system/my_flaskapp.serviceDodaj następującą konfigurację:
[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.targetZastąp your_username swoją rzeczywistą nazwą użytkownika serwera. Następnie włącz i uruchom usługę:
sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskappSprawdź status usługi:
sudo systemctl status my_flaskapp8. Konfigurowanie Nginx jako odwrotnego serwera proxy
Nginx działa jako odwrotny serwer proxy, stojąc przed Gunicorn i obsługując cały przychodzący ruch HTTP/HTTPS. Ta konfiguracja poprawia wydajność, umożliwia zakończenie SSL i pozwala na efektywne serwowanie plików statycznych.
Krok 1: Zainstaluj Nginx
sudo apt install nginx -yKrok 2: Utwórz plik konfiguracji Nginx
Utwórz nową konfigurację bloku serwera dla swojej aplikacji Flask:
sudo nano /etc/nginx/sites-available/my_flaskappDodaj następującą konfigurację:
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;
}
}Krok 3: Włącz konfigurację
Utwórz dowiązanie symboliczne, aby włączyć witrynę i przetestować konfigurację Nginx:
sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -tJeśli test zwraca syntax is ok i test is successful, uruchom ponownie Nginx:
sudo systemctl restart nginxTwoja aplikacja Flask jest teraz dostępna pod adresem http://your_domain_or_ip na porcie 80.
9. Zabezpieczanie aplikacji Flask za pomocą SSL/HTTPS
Uruchamianie aplikacji przez HTTPS nie jest już opcjonalne — jest to fundamentalny wymóg bezpieczeństwa, zaufania użytkowników i rankingów SEO. Możesz uzyskać i zainstalować bezpłatny certyfikat SSL za pomocą Certbot z Let’s Encrypt lub kupić certyfikat premium za pośrednictwem SSL Certificates w celu uzyskania ulepszonej weryfikacji i gwarancji.
Zainstaluj Certbot i uzyskaj bezpłatny certyfikat SSL
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot automatycznie zmodyfikuje konfigurację Nginx, aby włączyć HTTPS i skonfigurować automatyczne odnawianie certyfikatu.
Zweryfikuj, że auto-odnowienie jest skonfigurowane:
sudo certbot renew --dry-run10. Konfiguracja zapory sieciowej
Upewnij się, że zapora sieciowa serwera zezwala na ruch na niezbędnych portach:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw statusNginx Full otwiera zarówno port 80 (HTTP) jak i port 443 (HTTPS).
11. Rozwiązywanie typowych problemów
| Problem | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
502 Bad Gateway | Gunicorn nie jest uruchomiony | Sprawdź sudo systemctl status my_flaskapp |
Permission denied na gnieździe | Nieprawidłowe uprawnienia do pliku | Upewnij się, że użytkownik Nginx ma dostęp do katalogu aplikacji |
| Aplikacja Flask nie znaleziona | Zły katalog roboczy w pliku usługi |
