Hovedoppgaven til webserveren er å håndtere HTTP -forespørslene fra klienten. Den venter på at HTTP -forespørslene kommer fra den bestemte IP -adressen og portnummeret, håndterer forespørselen og sender klientens svar tilbake. Python bruker SimpleHTTPServer modul for å lage en webserver umiddelbart og enkelt servere innholdet i filen fra serveren. Den kan også brukes til fildeling. For dette må du aktivere denne modulen med plasseringen av filene som kan deles. Denne modulen kommer med Python -tolken. Du trenger ikke å installere det. Siden denne modulen er slått sammen med http.server modul i python3, så du må kjøre http.server å kjøre webserveren i python3. Hvordan webserver kan brukes til å håndtere HTTP -forespørsel og dele filer, har blitt vist i denne opplæringen.
Kjør webserveren fra terminalen
Kjør følgende kommando for å kjøre webserveren fra terminalen. Hvis det ikke er definert noe portnummer i kommandoen, starter webserveren som standard på 8000 port.
$ python3 -m http.server
Følgende utdata vises hvis webserveren startes riktig. CTRL+C trykkes for å stoppe serveren.
Kjør følgende kommando for å starte webserveren på 8080 port.
$ python3 -m http.server 8080
Følgende utdata vises hvis webserveren startes på 8080 -porten.
Kjør webserveren ved hjelp av Python -skript
Kjør følgende kommandoer for å lage en mappe som heter Internett og gå til mappen. Alle skriptfilene og HTML -filene i denne opplæringen blir opprettet i denne mappen.
$ mkdir web$CDInternett
Lag en HTML -fil med navnet testHTML.html inne i Internett mappe med følgende skript. Denne filen vil bli servert fra webserveren senere.
testHTML.html
< html >< hode >
< tittel >
Test Python Web Server
</ tittel >
</ hode >
< kropp >
< senter >
< img src='logo.jpeg' alt='Bilde ikke funnet'/>
< h2 stil='farge: grønn'>Gratulerer! Nettserveren din kjører.</ h2 >
< s >Besøk< til href='www.linuxhint.com'>LinuxHint.com</ til >for flere opplæringsprogrammer om Python</ s >
</ senter >
</ kropp >
</ html >
Eksempel-1: Kjør webserveren i det spesifikke portnummeret
Opprett en python -fil med følgende skript for å kjøre webserveren på 8008 -port. http.server modulen er importert for å kjøre webserveren, og SocketServer modulen er importert for å håndtere HTTP -forespørselen som kommer fra 8080 -porten. Et objekt som heter Handler er opprettet for å håndtere HTTP -forespørslene. for alltid() funksjon kalles for å kjøre webserveren. Ingen avslutningsbetingelse er lagt til i skriptet. Så, skriptet vil generere en feil når brukeren prøver å stoppe serveren.
# Importer servermodulimporthttp.server
# Importer SocketServer -modul
importstikkontakt
# Angi portnummeret
havn= 8080
# Lag objekt for håndtering av HTTP -forespørsler
Handler=http.server.SimpleHTTPRequestHandler
# Kjør serveren for alltid for å håndtere HTTP -forespørslene
medstikkontakt.TCPServer(('',havn),Handler) somhttpd:
skrive ut('Web Server kjører på http: // localhost:%s'%havn)
httpd.serve_forever()
Produksjon
Følgende utdata vises etter at skriptet ovenfor er utført.
Listen over filene og mappen til skriptplasseringen vil bli vist hvis følgende URL er utført fra nettleseren.
Hvis brukeren trykker CTRL+C fra terminalen eller trykker på stoppknappen fra PyCharm -editoren, vises følgende feilmelding. Dette problemet er løst i neste eksempel på denne opplæringen.
Eksempel 2: Kjør webserveren med portnummeret definert av kommandolinjen
Opprett en python-fil med følgende skript for å kjøre en webserver på den bestemte porten hvis kommandolinjeargumentet gir portnummeret; ellers vil 5000 bli brukt som standardport. sys modul har blitt importert i skriptet for å lese kommandolinjens argumentverdier. prøve-unntatt blokk er lagt til i skriptet for å håndtere feilen når brukeren prøver å stoppe serveren. Hvis KeyboardInterrupt -unntaket vises etter at serveren er kjørt, vil Lukk() funksjonen vil bli kalt for å stoppe webserveren.
# Importer servermodulimporthttp.server
# Importer SocketServer -modul
importstikkontakt
# Importer sys -modul
import sys
prøve:
# Angi portnummeret
hvis sys.argv[1:]:
havn= int(sys.argv[1])
ellers:
havn= 5000
# Angi IP -adressen
server adresse= ('127.0.0.1',havn)
# Lag objekt for håndtering av HTTP -forespørsler
Handler=http.server.SimpleHTTPRequestHandler
# Kjør webserveren for alltid for å håndtere HTTP -forespørslene
medstikkontakt.TCPServer(('',havn),Handler) somhttpd:
skrive ut('Web Server kjører på http: // localhost:%s'%havn)
httpd.serve_forever()
# Stoppet serveren
unntatt Tastaturavbrudd:
httpd.server_close()
skrive ut('Serveren er stoppet.')
Produksjon
Følgende utdata vises etter at skriptet ovenfor er utført uten kommandolinjens argumentverdi.
Følgende utdata vises hvis kjør HTML -filen som ble opprettet i forrige trinn fra webserveren.
Åpne konfigurasjonsdialogboksen fra Kjør-menyen i PyCharm-editoren for å angi kommandolinjens argumentverdi. Parameterfelt brukes til å angi kommandolinjeargumentet, og 3000 angis her som argumentverdi.
Følgende utdata vises hvis du kjører skriptet igjen etter at du har angitt argumentverdien.
Eksempel 3: Kjør webserveren med HTML-filen
Opprett en python -fil med følgende skript for å kjøre webserveren ved å definere HTML -filen for basisadressen. Vertsnavnet og portnummeret er definert i begynnelsen av skriptet. PythonServer class har definert i skriptet for å vise HTML -filen i nettleseren når webserveren begynner å kjøre.
# Importer servermodulenimporthttp.server
# Angi vertsnavnet
VERT= 'lokal vert'
# Angi portnummeret
HAVN= 4000
# Definer klassen for å vise indekssiden til webserveren
klassePythonServer(http.server.SimpleHTTPRequestHandler):
defdo_GET(selv-):
hvis selv-.sti == '/':
selv-.sti = 'testHTML.html'
komme tilbakehttp.server.SimpleHTTPRequestHandler.do_GET(selv-)
# Erklær objektet for klassen
Internett server=http.server.HTTPS -server((VERT,HAVN),PythonServer)
# Skriv ut nettadressen til webserveren
skrive ut('Server startet http: //%s:%s'%(VERT,HAVN))
prøve:
# Kjør webserveren
Internett server.serve_forever()
unntatt Tastaturavbrudd:
# Stopp webserveren
Internett server.server_close()
skrive ut('Serveren er stoppet.')
Produksjon
Følgende utdata vises med utførelsen av skriptet ovenfor.
Den følgende siden vil vises i nettleseren hvis nettleserens grunnleggende URL for webserveren kjøres.
Konklusjon
De forskjellige måtene å implementere webservere ved å bruke http. server modulen har vist i denne opplæringen for å hjelpe python -brukere med å lage en enkel webserver i Python.