15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
01.11.2024
4 +2

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_ip

Zastą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 --version

Powinieneś zobaczyć dane wyjściowe podobne do Python 3.10.x. Jeśli Python nie jest zainstalowany, przystąp do jego instalacji:

sudo apt install python3

3. 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 -y

Gwarantuje 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 -y

Zweryfikuj instalację:

pip3 --version

Krok 2: Utwórz katalog projektu

Zorganizuj swoją aplikację, tworząc dedykowany katalog:

mkdir my_flaskapp
cd my_flaskapp

Krok 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 venv

Aktywuj wirtualne środowisko:

source venv/bin/activate

Twó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 Flask

Potwierdź instalację:

flask --version

Powinieneś 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.py

Krok 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.py

Twoja 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 gunicorn

Krok 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 3

Wyjaśnienie parametrów:

  • app:app — Odnosi się do obiektu app wewnątrz pliku app.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.service

Dodaj 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.target

Zastą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_flaskapp

Sprawdź status usługi:

sudo systemctl status my_flaskapp

8. 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 -y

Krok 2: Utwórz plik konfiguracji Nginx

Utwórz nową konfigurację bloku serwera dla swojej aplikacji Flask:

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

Dodaj 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 -t

Jeśli test zwraca syntax is ok i test is successful, uruchom ponownie Nginx:

sudo systemctl restart nginx

Twoja 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.com

Certbot automatycznie zmodyfikuje konfigurację Nginx, aby włączyć HTTPS i skonfigurować automatyczne odnawianie certyfikatu.

Zweryfikuj, że auto-odnowienie jest skonfigurowane:

sudo certbot renew --dry-run

10. 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 status

Nginx Full otwiera zarówno port 80 (HTTP) jak i port 443 (HTTPS).

11. Rozwiązywanie typowych problemów

ProblemPrawdopodobna przyczynaRozwiązanie
502 Bad GatewayGunicorn nie jest uruchomionySprawdź sudo systemctl status my_flaskapp
Permission denied na gnieździeNieprawidłowe uprawnienia do plikuUpewnij się, że użytkownik Nginx ma dostęp do katalogu aplikacji
Aplikacja Flask nie znalezionaZły katalog roboczy w pliku usługi
15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij