Nginx

Hoe Nginx te gebruiken met Flask.

Hoe Nginx te gebruiken met Flask.
Python is een geweldige, gemakkelijk te leren en almachtige programmeertaal, en met frameworks zoals Django en Flask kunnen we het gebruiken om volwaardige webapplicaties te maken. Zodra we een webtoepassing hebben gemaakt met bibliotheken en frameworks zoals Flask, moeten we deze op een server hosten en openbaar maken. In deze zelfstudie wordt besproken hoe u uw webtoepassing kunt hosten op een server waarop Nginx draait met Gunicorn. Voordat we aan de slag gaan met Flask en Gunicorn, moet je ervoor zorgen dat je aan de volgende vereisten voldoet:

De server instellen

Laten we nu beginnen met het instellen van de serveromgeving die we zullen gebruiken om onze server te hosten. Deze tutorial gebruikt de Ubuntu-server. Begin met het bijwerken van de repositories en het installeren van Python3 en Pip.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install python3 python3-pip -y

Vervolgens moeten we een map maken om het project op te slaan.

sudo mkdir /var/www/application
cd /var/www/toepassing

Directory-eigendom en machtigingen wijzigen:

sudo chown -R www-data:www-data /var/www/application/

Installeer vervolgens de pakketten met apt (flask en Gunicorn)

sudo apt-get install python3-flask python3-gunicorn

Laten we nu verder gaan met het initialiseren van een kolftoepassing. Begin met het maken van de hoofd.py-houdt de applicatie-en wsgi.py, waarmee de toepassing wordt uitgevoerd.

sudo touch hoofd.py wsgi.py

Bewerk de belangrijkste.py-bestand en stel uw Flask-toepassing en alle routes in. Aangezien deze tutorial geen Flask-gids is, zullen we een basisroute en een hallo wereldbericht opzetten.

uit kolf import Flask
app = Kolf(__naam__)
@app.route("/")
zeker thuis():
terugkeren "

Nginx & Gunicorn

"

Bewerk de wsgi.py-bestand en voeg de code toe om de app te importeren en voer het uit als:

van de hoofdimport-app
if __name__ == "__main__":
app.uitvoeren (debug = True)

Test ten slotte of het actief is door flask aan te roepen als:

$ kolf run
* Omgeving: productie
WAARSCHUWING: dit is een ontwikkelingsserver. Gebruik het niet in een productie-implementatie.
Gebruik in plaats daarvan een productie-WSGI-server.
* Debug-modus: uit
* Draait op http://127.0.0.1:5000/ (Druk op CTRL+C om te stoppen)

Probeer de applicatie te openen op http://localhost:5000.

Gunicorn instellen

Zodra onze applicatie succesvol draait, kunnen we Gunicorn gebruiken om de applicatie te testen met behulp van de opdrachten:

$ sudo gunicorn --workers 5 wsgi:app
[2021-03-19 09:19:34 +0000] [14047] [INFO] Gunicorn starten 20.0.4
[2021-03-19 09:19:34 +0000] [14047] [INFO] Luisteren op: http://127.0.0.1:8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [INFO] Gebruiker: sync
[2021-03-19 09:19:34 +0000] [14049] [INFO] Opstartwerker met pid: 14049
[2021-03-19 09:19:34 +0000] [14050] [INFO] Opstartwerker met pid: 14050
[2021-03-19 09:19:34 +0000] [14051] [INFO] Opstartwerker met pid: 14051
[2021-03-19 09:19:34 +0000] [14052] [INFO] Opstartwerker met pid: 14052
[2021-03-19 09:19:35 +0000] [14053] [INFO] Opstartwerker met pid: 14053

De bovenstaande opdrachten voeren de kolftoepassing uit met Gunicorn met het opgegeven aantal werkers. We noemen dan het bestand wsgi:app, wat het bestand en de instantie is van de toepassing die moet worden uitgevoerd.

Zodra je de applicatie draait met Gunicorn, druk je op CTRL + C om de server te stoppen en Nginx in te stellen.

Gebruik de onderstaande opdrachten om Nginx te installeren en uit te voeren.

sudo apt-get install nginx -y
sudo systemctl start nginx
sudo systemctl nginx inschakelen

De volgende stap is om de Nginx-configuratie in de sites-enabled directory te bewerken en het serverblok toe te voegen. Overweeg de volgende configuratie:. Wijzig de applicatie in de naam van uw project.

sudo nano /etc/nginx/sites-available/application.conf
server
luister 80;
servernaam applicatie;
access_log /var/log/nginx/application.toegang.logboek;
error_log /var/log/nginx/appliation.fout.logboek;
plaats /
inclusief proxy_params;
proxy_pass http://unix:/var/www/application/application.sok;

Ga verder met het maken van een link naar de site-enabled directory om de website in te schakelen.

sudo ln -s /etc/nginx/sites-available/application.conf /etc/nginx/sites-enabled/

Start nu de Nginx-service opnieuw als:

sudo systemctl herstart nginx

Vervolgens moeten we een systemd-eenheidsbestand maken om de applicatie te bedienen.

sudo nano /etc/systemd/system/application.onderhoud
[Eenheid]
Beschrijving=toepassing.service - Een Flask-toepassing die wordt uitgevoerd met Gunicorn.
Na=netwerk.doelwit
[Onderhoud]
Gebruiker=www-gegevens
Groep=www-gegevens
WorkingDirectory=/var/www/applicatie/
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:/var/www/application.sok wsgi:app
[Installeren]
WantedBy=meerdere gebruikers.doelwit

Sla ten slotte het eenheidsbestand op, schakel vervolgens de daemon in en laad deze opnieuw.

sudo systemctl herstart applicatie.onderhoud
sudo systemctl daemon-reload

Nu hebt u toegang tot de applicatie met behulp van het IP-adres of het adres dat is opgegeven in het nginx-configuratiebestand. Mogelijk moet u het toevoegen aan het bestand van de host.

curl http://applicatie
HTTP/1.1 200 OK
Server: Werkzeug/0.16.1 Python/3.8.5)
Datum: vr 19 mrt 2021 10:00:39 GMT
Inhoudstype: tekst/html
Inhoud-Lengte: 25
Laatst gewijzigd: vr 19 mrt 2021 09:22:47 GMT

Conclusie

Deze tutorial ging over het opzetten van een Python Flask-applicatie en het serveren via Nginx met Gunicorn. Bekijk de afzonderlijke documentatie voor meer informatie over de services die in deze zelfstudie worden besproken.

OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...
OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creƫren. U begint e...
SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...