Come creare un server web con python in poche righe di codice.
Una delle cose che fa perdere più tempo quando si lavora per fare un test o un piccolo prototipo è la creazione e configurazione degli ambienti; ad esempio se si lavora su software che richiede di avere a disposizione un web server per fare dei test a volte si è costretti a scaricare un ambiente completo ed installare ad esempio apache o nginx e spendere anche del tempo per configurare opportunamente le cose, quando magari per le esigenze di test servirebbe solamente un server web veramente basico e soprattuto da non configurare, in tal caso una via semplicissima è quella di usare python lanciando da shell nella directory che volete far diventare la vostra DocumentRoot il seguente comando
python3 -m http.server
questa semplice operazione istanzierà un web server sulla porta di default 8000. Qualora fosse già occupata potrete usare la seguente sintassi:
python3 -m http.server <portNumber>
Ma cosa succede se per i vostri test dovesse servirvi un server https? con altrettante poche righe di codice potreste usare ancora python.
Di seguito vi lascio lo script che uso per semplici test in cui viene richiesta la connessione https ad esempio nel caso di alcune librerie (vedi ad esempi getUserMedia per WebRTC) il browser supporta solo https. A questo link potete trovare il codice funzionate ed anche il certificato di test.
from http.server import HTTPServer, BaseHTTPRequestHandler import ssl pathFileKeyPem = './test-keys/key.pem' pathFileCertPem = './test-keys/cert.pem' class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.end_headers() try: file = open("./" + str(self.path), 'rb') self.wfile.write(file.read()) except: print("An exception occurred loading" + str(self.path)) httpd = HTTPServer(('0.0.0.0', 4443), SimpleHTTPRequestHandler) httpd.socket = ssl.wrap_socket (httpd.socket, keyfile=pathFileKeyPem, certfile=pathFileCertPem, server_side=True) httpd.serve_forever()
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments