Nginx

Hvordan bruke Nginx med Flask.

Hvordan bruke Nginx med Flask.
Python er et flott, lettlært og allmektig programmeringsspråk, og med rammer som Django og Flask kan vi bruke det til å lage fullverdige webapplikasjoner. Når vi har opprettet en webapplikasjon ved hjelp av biblioteker og rammer som Flask, må vi være vert for den på en server og eksponere den for publikum. Denne opplæringen diskuterer hvordan du er vert for webapplikasjonen din på en server som kjører Nginx ved hjelp av Gunicorn. Før vi begynner med Flask and Gunicorn, må du sørge for at du oppfyller følgende krav:

Sette opp serveren

La oss nå begynne å sette servermiljøet som vi skal bruke til å være vert for serveren vår. Denne opplæringen bruker Ubuntu Server. Start med å oppdatere lagringsplassene og installere Python3 og Pip.

sudo apt-get oppdatering
sudo apt-få oppgradering -y
sudo apt-get install python3 python3-pip -y

Deretter må vi lage en katalog for å lagre prosjektet.

sudo mkdir / var / www / applikasjon
cd / var / www / applikasjon

Endre katalogeierskap og tillatelser:

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

Deretter installerer du pakkene ved hjelp av apt (flask og Gunicorn)

sudo apt-get install python3-kolbe python3-gunicorn

La oss nå fortsette med å initialisere en kolbeapplikasjon. Start med å lage hoved.py-holder applikasjonen og wsgi.py, som vil få applikasjonen til å kjøre.

sudo touch main.py wsgi.py

Rediger hovedmenyen.py-fil og sett opp Flask-applikasjonen og alle rutene. Siden denne opplæringen ikke er en Flask guide, vil vi sette opp en grunnleggende rute og en hei verdensmelding.

fra kolbeimport Kolbe
app = kolbe (__ navn__)
@app.rute("/")
def hjem ():
komme tilbake "

Nginx & Gunicorn

"

Rediger wsgi.py-fil og legg til koden for å importere appen, og kjør som:

fra hovedimportappen
hvis __name__ == "__main__":
app.kjør (feilsøk = sann)

Til slutt, test om den er i gang ved å ringe kolben som:

$ kolbe kjøre
* Miljø: produksjon
ADVARSEL: Dette er en utviklingsserver. Ikke bruk den i en produksjonsutrulling.
Bruk en produksjons WSGI-server i stedet.
* Feilsøkingsmodus: av
* Kjører på http: // 127.0.0.1: 5000 / (Trykk CTRL + C for å avslutte)

Prøv å få tilgang til applikasjonen på http: // localhost: 5000.

Sette opp gunicorn

Når applikasjonen vår har kjørt, kan vi bruke Gunicorn til å teste applikasjonen ved hjelp av kommandoene:

$ sudo gunicorn - arbeidere 5 wsgi: app
[2021-03-19 09:19:34 +0000] [14047] [INFO] Start gunicorn 20.0.4
[2021-03-19 09:19:34 +0000] [14047] [INFO] Lytter på: http: // 127.0.0.1: 8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [INFO] Bruker arbeider: synk
[2021-03-19 09:19:34 +0000] [14049] [INFO] Oppstartsarbeider med pid: 14049
[2021-03-19 09:19:34 +0000] [14050] [INFO] Oppstartsarbeider med pid: 14050
[2021-03-19 09:19:34 +0000] [14051] [INFO] Oppstartsarbeider med pid: 14051
[2021-03-19 09:19:34 +0000] [14052] [INFO] Oppstartsarbeider med pid: 14052
[2021-03-19 09:19:35 +0000] [14053] [INFO] Oppstartsarbeider med pid: 14053

Ovennevnte kommandoer kjører kolbeapplikasjonen ved hjelp av Gunicorn ved hjelp av det angitte antall arbeidere. Vi kaller deretter filen wsgi: app, som er filen og forekomsten av applikasjonen som skal kjøres.

Når du har applikasjonen kjørt med Gunicorn, trykker du CTRL + C for å stoppe serveren og sette opp Nginx.

Bruk kommandoene nedenfor for å installere og kjøre Nginx.

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

Neste trinn er å redigere Nginx-konfigurasjonen i den nettstedsaktiverte katalogen og legge til serverblokken. Vurder følgende konfigurasjon. Endre applikasjonen til navnet på prosjektet.

sudo nano / etc / nginx / nettsteder-tilgjengelig / applikasjon.konf
server
hør 80;
server_name applikasjon;
access_log / var / log / nginx / applikasjon.adgang.Logg;
error_log / var / log / nginx / appliation.feil.Logg;
plassering /
inkluderer proxy_params;
proxy_pass http: // unix: / var / www / application / application.sokk;

Fortsett med å opprette en lenke til den nettstedsaktiverte katalogen for å aktivere nettstedet.

sudo ln -s / etc / nginx / nettsteder-tilgjengelig / applikasjon.conf / etc / nginx / nettsteder-aktivert /

Start Nginx-tjenesten på nytt som:

sudo systemctl start nginx på nytt

Deretter må vi lage en systemd enhetsfil for å betjene applikasjonen.

sudo nano / etc / systemd / system / applikasjon.service
[Enhet]
Beskrivelse = applikasjon.service - Et Flask-program som kjøres med Gunicorn.
Etter = nettverk.mål
[Service]
Bruker = www-data
Gruppe = www-data
WorkingDirectory = / var / www / applikasjon /
ExecStart = / usr / bin / gunicorn --workers 3 - bind unix: / var / www / application.sokk wsgi: app
[Installere]
WantedBy = flerbruker.mål

Til slutt lagrer du enhetsfilen, aktiverer og laster daemon på nytt.

sudo systemctl starte programmet på nytt.service
sudo systemctl daemon-reload

Nå kan du få tilgang til applikasjonen ved hjelp av IP-adressen eller adressen som er angitt i nginx-konfigurasjonsfilen. Du må kanskje legge den til vertsfilen.

krølle http: // applikasjon
HTTP / 1.1200 OK
Server: Werkzeug / 0.16.1 Python / 3.8.5)
Dato: Fre, 19. mars 2021 10:00:39 GMT
Innholdstype: tekst / html
Innholdslengde: 25
Sist endret: fre, 19. mars 2021 09:22:47 GMT

Konklusjon

Denne opplæringen gikk over hvordan du setter opp et Python Flask-program og serverer det over Nginx ved hjelp av Gunicorn. Vurder den individuelle dokumentasjonen for å lære mer om tjenestene som er diskutert i denne opplæringen.

Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...