Web sunucusunun ana görevi, istemciden gelen HTTP isteklerini ele almaktır. Belirli IP adresinden ve port numarasından gelen HTTP isteklerini bekler, talebi işler ve müşterinin yanıtını geri gönderir. Python kullanır SimpleHTTPSunucusu sunucudan dosya içeriğini anında ve kolayca sunmak için bir web sunucusu oluşturmak için modül. Dosya paylaşımı için de kullanılabilir. Bunun için paylaşılabilir dosyaların konumu ile bu modülü etkinleştirmeniz gerekir. Bu modül Python yorumlayıcısıyla birlikte gelir. yüklemenize gerek yok. Bu modül ile birleştirildiğinden http.sunucu python3'teki modül, bu yüzden çalıştırmanız gerekiyor http.sunucu web sunucusunu python3'te çalıştırmak için. HTTP isteğini işlemek ve dosyaları paylaşmak için web sunucusunun nasıl kullanılabileceği bu eğitimde gösterilmiştir.
Web Sunucusunu terminalden çalıştırın
Web sunucusunu terminalden çalıştırmak için aşağıdaki komutu çalıştırın. Komutta hiçbir bağlantı noktası numarası tanımlanmamışsa, web sunucusu varsayılan olarak 8000 bağlantı noktasında başlayacaktır.
$ python3 -m http.sunucu
Web sunucusu düzgün bir şekilde başlatılırsa aşağıdaki çıktı görünecektir. Sunucuyu durdurmak için CTRL+C'ye basılır.
Web sunucusunu 8080 bağlantı noktasında başlatmak için aşağıdaki komutu çalıştırın.
Web sunucusu 8080 bağlantı noktasında başlatılırsa aşağıdaki çıktı görünecektir.
Python betiğini kullanarak Web Sunucusunu çalıştırın
adlı bir klasör oluşturmak için aşağıdaki komutları çalıştırın ağ ve klasöre git. Bu öğreticinin tüm komut dosyaları ve HTML dosyaları bu klasörün içinde oluşturulacaktır.
$ mkdir web$ cd ağı
adlı bir HTML dosyası oluşturun testHTML.html içinde ağ aşağıdaki komut dosyasına sahip klasör. Bu dosya daha sonra web sunucusundan sunulacak.
testHTML.html
Python Web Sunucusunu Test Edin
tebrikler! Web Sunucunuz Başarıyla Çalışıyor.
Ziyaret etmek Linuxİpucu.com Python hakkında daha fazla eğitim için
Örnek-1: Web sunucusunu belirli bağlantı noktası numarasında çalıştırın
Web sunucusunu 8008 bağlantı noktasında çalıştırmak için aşağıdaki komut dosyasıyla bir python dosyası oluşturun. http.sunucu modül, web sunucusunu çalıştırmak için içe aktarıldı ve SocketSunucu 8080 bağlantı noktasından gelen HTTP isteğini işlemek için modül içe aktarıldı. adlı bir nesne işleyici HTTP isteklerini işlemek için oluşturuldu. sonsuza dek() web sunucusunu çalıştırmak için işlev çağrılır. Komut dosyasına herhangi bir sonlandırma koşulu eklenmedi. Bu nedenle, kullanıcı sunucuyu durdurmaya çalıştığında komut dosyası bir hata üretecektir.
# Sunucu modülünü içe aktarhttp'yi içe aktar.sunucu
# SocketServer modülünü içe aktar
soket sunucusunu içe aktar
# Bağlantı noktası numarasını ayarlayın
bağlantı noktası = 8080
# HTTP isteklerini işlemek için nesne oluştur
İşleyici = http.sunucu.SimpleHTTPRequestHandler
# HTTP isteklerini işlemek için sunucuyu sonsuza kadar çalıştırın
soket sunucusu ile.httpd olarak TCPServer(("", port), Handler):
print("Web Sunucusu http://localhost:%s" %portta çalışıyor)
httpd.sonsuza kadar hizmet et()
Çıktı
Yukarıdaki betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
Aşağıdaki URL tarayıcıdan yürütülürse, komut dosyası konumunun dosya ve klasörlerinin listesi gösterilecektir.
Kullanıcı terminalden CTRL+C'ye basarsa veya PyCharm editöründen stop düğmesine basarsa, aşağıdaki hata mesajı görüntülenecektir. Bu sorun, bu öğreticinin sonraki örneğinde çözüldü.
Örnek-2: Web sunucusunu komut satırı tarafından tanımlanan bağlantı noktası numarasıyla çalıştırın
Komut satırı bağımsız değişkeni bağlantı noktası numarasını veriyorsa, belirli bağlantı noktasında bir web sunucusunu çalıştırmak için aşağıdaki komut dosyasıyla bir python dosyası oluşturun; aksi takdirde, varsayılan bağlantı noktası olarak 5000 kullanılacaktır. sistem modül, komut satırı bağımsız değişken değerlerini okumak için komut dosyasına aktarıldı. dene-hariç kullanıcı sunucuyu durdurmaya çalıştığında hatayı işlemek için komut dosyasına blok eklendi. Sunucuyu çalıştırdıktan sonra KeyboardInterrupt istisnası görünürse, o zaman kapat() web sunucusunu durdurmak için işlev çağrılacak.
# Sunucu modülünü içe aktarhttp'yi içe aktar.sunucu
# SocketServer modülünü içe aktar
soket sunucusunu içe aktar
# Sistem modülünü içe aktar
ithalat sistemi
Deneyin:
# Bağlantı noktası numarasını ayarlayın
eğer sistem.argv[1:]:
bağlantı noktası = int(sys.argv[1])
Başka:
bağlantı noktası = 5000
# IP adresini ayarlayın
server_address = ('127.0.0.1', bağlantı noktası)
# HTTP isteklerini işlemek için nesne oluştur
İşleyici = http.sunucu.SimpleHTTPRequestHandler
# HTTP isteklerini işlemek için web sunucusunu sonsuza kadar çalıştırın
soket sunucusu ile.httpd olarak TCPServer(("", port), Handler):
print("Web Sunucusu http://localhost:%s" %portta çalışıyor)
httpd.sonsuza kadar hizmet et()
# Sunucuyu durdurdu
KeyboardInterrupt hariç:
httpd.server_close()
print("Sunucu durduruldu.")
Çıktı
Yukarıdaki betiği komut satırı argüman değeri olmadan yürüttükten sonra aşağıdaki çıktı görünecektir.
Önceki adımda oluşturulan HTML dosyasını web sunucusundan çalıştırırsanız aşağıdaki çıktı görünecektir.
Komut satırı bağımsız değişken değerini ayarlamak için PyCharm düzenleyicisinin Çalıştır menüsünden yapılandırma iletişim kutusunu açın. Parametreler alanı komut satırı argümanını ayarlamak için kullanılır ve 3000 burada argüman değeri olarak ayarlanır.
Argüman değerini ayarladıktan sonra betiği tekrar çalıştırırsanız aşağıdaki çıktı görünecektir.
Örnek-3: Web sunucusunu HTML dosyasıyla çalıştırın
Temel URL için HTML dosyasını tanımlayarak web sunucusunu çalıştırmak için aşağıdaki komut dosyasıyla bir python dosyası oluşturun. Ana bilgisayar adı ve bağlantı noktası numarası, komut dosyasının başında tanımlanmıştır. PythonSunucusu sınıf, web sunucusu çalışmaya başladığında tarayıcıda HTML dosyasını görüntülemek için komut dosyasında tanımlamıştır.
# Sunucu modülünü içe aktarınhttp'yi içe aktar.sunucu
# Ana bilgisayar adını ayarlayın
HOST = "yerel ana bilgisayar"
# Bağlantı noktası numarasını ayarlayın
PORT = 4000
# Web sunucusunun dizin sayfasını görüntülemek için sınıfı tanımlayın
sınıf PythonSunucusu(http.sunucu.SimpleHTTPRequestHandler):
def do_GET(kendi kendine):
eğer kendini.yol == '/':
öz.yol = 'testHTML.html'
http'yi döndür.sunucu.SimpleHTTPRequestHandler.do_GET(kendi)
# Sınıfın nesnesini bildir
web sunucusu = http.sunucu.HTTPSunucusu((HOST, PORT), PythonSunucusu)
# Web sunucusunun URL'sini yazdırın
print("Sunucu http://%s:%s başlattı" % (HOST, PORT))
Deneyin:
# Web sunucusunu çalıştırın
Web sunucusu.sonsuza kadar hizmet et()
KeyboardInterrupt hariç:
# Web sunucusunu durdur
Web sunucusu.server_close()
print("Sunucu durduruldu.")
Çıktı
Yukarıdaki komut dosyasını yürütürken aşağıdaki çıktı görünecektir.
Tarayıcının web sunucusunun temel URL'si yürütülürse, aşağıdaki sayfa tarayıcıda görünecektir.
Sonuç
kullanarak web sunucularını uygulamanın farklı yolları http. sunucu modülü, python kullanıcılarının Python'da basit bir web sunucusu oluşturmasına yardımcı olmak için bu eğitimde gösterilmiştir.