15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
01.11.2024
3 +1

Cum să instalezi Flask pe Hosting: Un Ghid Complet Pas cu Pas

Flask este un framework web ușor și flexibil pentru Python care permite dezvoltatorilor să construiască și să implementeze aplicații web rapid și eficient. Indiferent dacă lansezi un proiect personal, un REST API sau un serviciu web la scară largă, știind cum să instalezi și să configurezi corect Flask într-un mediu de hosting este o abilitate esențială. Acest ghid cuprinzător te ghidează prin fiecare pas — de la configurarea serverului la implementarea în producție cu Gunicorn și Nginx.

1. Cerințe preliminare

Înainte de a te aprofunda în procesul de instalare, asigură-te că ai următoarele:

Mediu de hosting care suportă Python

Ai nevoie de un serviciu de hosting care îți oferă control complet asupra mediului serverului. Planurile de hosting partajat restricționează adesea execuția Python, deci pentru implementări Flask, un plan VPS Hosting sau un Server Dedicat este puternic recomandat. Aceste opțiuni îți oferă acces root, capacități complete de gestionare a pachetelor și flexibilitatea de a configura stiva exact după cum ai nevoie.

Acces SSH

Vei avea nevoie de acces SSH pentru a te conecta la serverul tău la distanță și pentru a executa comenzi. Majoritatea mediilor VPS și server dedicat bazate pe Linux suportă acest lucru din start.

Python instalat

Python 3.8 sau superior este recomandat. Majoritatea mediilor de hosting moderne vin cu Python pre-instalat, dar vom verifica acest lucru în timpul configurării.

Opțional: Un nume de domeniu

Dacă plănuiești să faci aplicația Flask accesibilă publicului printr-un domeniu în loc de o adresă IP brută, ia în considerare înregistrarea unuia prin Înregistrare Domenii înainte de a începe.

2. Conectarea la serverul tău prin SSH

Deschide terminalul (Linux/macOS) sau un client SSH cum ar fi PuTTY (Windows) și conectează-te la serverul tău:

ssh username@your_server_ip

Înlocuiește username cu numele de utilizator actual al serverului tău și your_server_ip cu adresa IP publică a serverului tău.

După conectare, verifică că Python 3 este disponibil:

python3 --version

Ar trebui să vezi o ieșire similară cu Python 3.10.x. Dacă Python nu este instalat, procedează la instalarea lui:

sudo apt install python3

3. Actualizarea serverului tău

Înainte de a instala orice pachete, este o bună practică să actualizezi lista de pachete a sistemului și să upgrazi pachetele existente la versiunile lor cele mai recente:

sudo apt update
sudo apt upgrade -y

Aceasta asigură că lucrezi cu versiunile cele mai stabile și sigure ale tuturor dependențelor.

4. Instalarea Flask

Pasul 1: Instalează pip

pip este managerul de pachete al Python și este necesar pentru a instala Flask și alte biblioteci Python. Instalează-l dacă nu este deja prezent:

sudo apt install python3-pip -y

Verifică instalarea:

pip3 --version

Pasul 2: Creează un director de proiect

Organizează aplicația creând un director dedicat:

mkdir my_flaskapp
cd my_flaskapp

Pasul 3: Configurează un mediu virtual

Folosind un mediu virtual izolezi dependențele proiectului tău de instalarea globală a Python, prevenind conflictele de versiuni și păstrând serverul curat:

sudo apt install python3-venv -y
python3 -m venv venv

Activează mediul virtual:

source venv/bin/activate

Promptul terminalului tău se va schimba pentru a indica că mediul virtual este activ, de obicei arătând (venv) la începutul liniei.

Pasul 4: Instalează Flask

Cu mediul virtual activat, instalează Flask folosind pip:

pip install Flask

Confirmă instalarea:

flask --version

Ar trebui să vezi versiunea Flask împreună cu versiunile Python și Werkzeug.

5. Crearea unei aplicații Flask simple

Pasul 1: Creează fișierul aplicației

Creează un nou fișier numit app.py în interiorul directorului tău de proiect:

nano app.py

Pasul 2: Scrie aplicația Flask

Adaugă următorul cod minimal al aplicației 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)

Descompunerea codului:

  • Flask(__name__) — Creează o nouă instanță a aplicației Flask.
  • @app.route('/') — Definește o rută URL pentru pagina de start.
  • app.run(host='0.0.0.0', port=5000) — Pornește serverul de dezvoltare, făcând-o accesibilă pe toate interfețele de rețea pe portul 5000.

Pasul 3: Salvează și ieși

Apasă CTRL + X, apoi Y și apasă Enter pentru a salva fișierul și a ieși din editorul nano.

6. Rularea aplicației Flask în modul de dezvoltare

Pornește serverul de dezvoltare Flask pentru a testa aplicația:

python app.py

Aplicația ta va fi acum accesibilă într-un browser web la:

http://your_server_ip:5000

> Important: Serverul de dezvoltare Flask încorporat nu este potrivit pentru utilizarea în producție. Este single-threaded, nu este optimizat pentru performanță și îi lipsesc caracteristici de securitate critice. Folosește întotdeauna un server WSGI de grad de producție pentru implementări live.

7. Implementarea Flask într-un mediu de producție cu Gunicorn

Pentru implementări în producție, Gunicorn (Green Unicorn) este serverul HTTP WSGI Python cel mai utilizat. Gestionează eficient cererile concurente multiple și se integrează perfect cu Nginx.

Pasul 1: Instalează Gunicorn

Cu mediul virtual încă activ, instalează Gunicorn:

pip install gunicorn

Pasul 2: Rulează aplicația cu Gunicorn

Lansează aplicația Flask folosind Gunicorn, legând-o la localhost pe portul 8000:

gunicorn app:app -b 127.0.0.1:8000 --workers 3

Explicația parametrilor:

  • app:app — Se referă la obiectul app din interiorul fișierului app.py.
  • -b 127.0.0.1:8000 — Leagă Gunicorn la localhost pe portul 8000 (Nginx va gestiona traficul extern).
  • --workers 3 — Generează 3 procese worker pentru a gestiona cererile concurente. O formulă comună este (2 × CPU cores) + 1.

Pasul 3: Rulează Gunicorn ca serviciu Systemd (recomandat)

Pentru a asigura că Gunicorn se pornește automat la repornirea serverului, creează un fișier de serviciu systemd:

sudo nano /etc/systemd/system/my_flaskapp.service

Adaugă următoarea configurație:

[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

Înlocuiește your_username cu numele de utilizator actual al serverului tău. Apoi activează și pornește serviciul:

sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskapp

Verifică starea serviciului:

sudo systemctl status my_flaskapp

8. Configurarea Nginx ca proxy invers

Nginx acționează ca proxy invers, stând în fața Gunicorn și gestionând tot traficul HTTP/HTTPS de intrare. Această configurație îmbunătățește performanța, permite terminarea SSL și îți permite să servești fișiere statice eficient.

Pasul 1: Instalează Nginx

sudo apt install nginx -y

Pasul 2: Creează un fișier de configurare Nginx

Creează o nouă configurație de bloc server pentru aplicația Flask:

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

Adaugă următoarea configurație:

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;
    }
}

Pasul 3: Activează configurația

Creează o legătură simbolică pentru a activa site-ul și testează configurația Nginx:

sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -t

Dacă testul returnează syntax is ok și test is successful, repornește Nginx:

sudo systemctl restart nginx

Aplicația Flask este acum accesibilă la http://your_domain_or_ip pe portul 80.

9. Securizarea aplicației Flask cu SSL/HTTPS

Rularea aplicației tale peste HTTPS nu mai este opțională — este o cerință fundamentală pentru securitate, încrederea utilizatorilor și clasamentele SEO. Poți obține și instala un certificat SSL gratuit folosind Certbot cu Let’s Encrypt, sau poți cumpăra un certificat premium prin Certificate SSL pentru validare îmbunătățită și acoperire de garanție.

Instalează Certbot și obține un certificat SSL gratuit

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot va modifica automat configurația Nginx pentru a activa HTTPS și va configura reînnoirea automată a certificatului.

Verifică că reînnoirea automată este configurată:

sudo certbot renew --dry-run

10. Configurarea Firewall-ului

Asigură-te că firewall-ul serverului tău permite traficul pe porturile necesare:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Nginx Full deschide atât portul 80 (HTTP) cât și portul 443 (HTTPS).

11. Depanarea problemelor comune

ProblemăCauza probabilăSoluție
502 Bad GatewayGunicorn nu ruleazăVerifică sudo systemctl status my_flaskapp
Permission denied pe socketPermisiuni de fișier incorecteAsigură-te că utilizatorul Nginx are acces la directorul aplicației
Aplicația Flask nu a fost găsităDirector de lucru greșit în fișierul de serviciuVerifică din nou calea WorkingDirectory în configurația systemd
Portul 5000 nu este accesibilFirewall-ul blochează portulDeschide portul cu sudo ufw allow 5000 (doar pentru dev)
ModuleNotFoundErrorMediul virtual nu este activatAsigură-te că ExecStart indică binarul Python/Gunicorn al venv

12. Rezumat și pași următori

Implementarea unei aplicații Flask pe un server de hosting implică mai mulți pași interconectați: configurarea unui mediu server curat, instalarea Python și Flask într-un mediu virtual, configurarea Gunicorn ca server WSGI de producție și plasarea Nginx în fața ca proxy invers. Adăugarea criptării SSL finalizează o implementare sigură și gata pentru producție.

Iată o recapitulare rapidă a stivei complete de implementare:

  • Flask
15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți