Maison > Article > développement back-end > Comment transformer votre appareil en un simple serveur à l'aide de Python.
Auteur : Trix Cyrus
Créons un serveur Python hébergé à partir de votre appareil.
Démarrage..
créer un répertoire nommé serveur
mkdir server
créez un fichier nommé server.py
nano server.py
collez le code ci-dessous.
import http.server import socketserver import logging import os import threading from urllib.parse import urlparse, parse_qs PORT = 8080 DIRECTORY = "www" logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') class MyHandler(http.server.SimpleHTTPRequestHandler): def __init__(self, *args, **kwargs): super().__init__(*args, directory=DIRECTORY, **kwargs) def log_message(self, format, *args): logging.info("%s - %s" % (self.client_address[0], format % args)) def do_GET(self): parsed_path = urlparse(self.path) query = parse_qs(parsed_path.query) # Custom logic for different routes if parsed_path.path == '/': self.serve_file("index.html") elif parsed_path.path == '/about': self.respond_with_text("<h1>About Us</h1><p>This is a custom Python server.</p>") elif parsed_path.path == '/greet': name = query.get('name', ['stranger'])[0] self.respond_with_text(f"<h1>Hello, {name}!</h1>") else: self.send_error(404, "File Not Found") def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) logging.info("Received POST data: %s", post_data.decode('utf-8')) self.respond_with_text("<h1>POST request received</h1>") def serve_file(self, filename): if os.path.exists(os.path.join(DIRECTORY, filename)): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() with open(os.path.join(DIRECTORY, filename), 'rb') as file: self.wfile.write(file.read()) else: self.send_error(404, "File Not Found") def respond_with_text(self, content): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(content.encode('utf-8')) class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer): daemon_threads = True # Handle requests in separate threads def run_server(): try: with ThreadedHTTPServer(("", PORT), MyHandler) as httpd: logging.info(f"Serving HTTP on port {PORT}") logging.info(f"Serving files from directory: {DIRECTORY}") httpd.serve_forever() except Exception as e: logging.error(f"Error starting server: {e}") except KeyboardInterrupt: logging.info("Server stopped by user") if __name__ == "__main__": server_thread = threading.Thread(target=run_server) server_thread.start() server_thread.join()
créer un répertoire nommé www
mkdir www
naviguez maintenant vers le répertoire www
cd www
créez un fichier nommé index.html
nano index.html
collez-y le code ci-dessous
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Python Simple Server</title> </head> <body> <h1>Welcome to My Python Server!</h1> <p>This is a simple web server running on your local device.</p> </body> </html>
Étape 2 : tester les itinéraires
Après avoir exécuté le script modifié, accédez à :
http://localhost:8080/ pour voir la page d'accueil.
http://localhost:8080/about pour voir la page à propos.
http://localhost:8080/greet?name=Trix
Pour tout autre chemin, le serveur renverra une erreur 404.
vous trouverez ci-dessous la structure des répertoires
server/ ├── server.py └── www/ └── index.html
Exécuter le serveur sur un appareil distant
Et si vous souhaitez accéder à votre serveur Python depuis un autre appareil sur le même réseau ? Vous pouvez facilement le faire en recherchant l'adresse IP locale de la machine exécutant le serveur et en l'utilisant à la place de localhost.
Étape 1 : Trouvez votre adresse IP
utilisez des commandes comme
ipconfig
ifconfig
Recherchez votre adresse IPv4 (quelque chose comme 192.168.x.x).
Étape 2. Modifiez votre script de serveur
Dans votre script serveur, remplacez la ligne où le serveur est démarré :
with ThreadedHTTPServer(("", PORT), MyHandler) as httpd:
Changez-le par :
with ThreadedHTTPServer(("0.0.0.0", PORT), MyHandler) as httpd:
Étape 3 : accéder au serveur depuis un autre appareil
Maintenant, en utilisant l'adresse IP que vous avez trouvée précédemment, vous pouvez accéder au serveur depuis n'importe quel appareil sur le même réseau en accédant à http://:8080 dans un navigateur.
Et tout est prêt
~TrixSec
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!