Python kullanarak gerçekten simple web server yazabileceğimi öğrendim. Python tabanlı web sunucusunu bu makinede denemek istediğim bir Apache web sunucusuna sahibim. Ama korkarım ki, denemem gerekirse bir çeşit anlaşmazlık yaşayabilirim. İstemciden bir sunucuya kimin ihtiyaç duyduğunu iki web sunucusunun "karar vermesi" ne demek istedim?Aynı bilgisayarda iki web sunucusu çalıştırabilir miyim?
cevap
Farklı portları dinlemelerini sağlayın ve iyi olursunuz. Eğer noktası belirtmeden tarayıcıda bazı url açtığınızda
varsayılan web portu 80'dir, 80 varsayılan olarak kullanılır.
farklı bir bağlantı noktasına dinlemek için web sunucusu yapılandırabilirsiniz ama o zaman da url açıkça belirtmek gerekir: bu özel port numarası
http://localhost:8080
bir liman ödeme dikkati seçerek olmadığını henüz kutunuzda yüklü ve çalışan herhangi bir yazılım tarafından kullanılıyor. Aksi halde, doğru tahmin ettiğiniz gibi, bir çatışma olacak.
P.S. Sadece birkaç gün önce yeniden yükleme yapıyordum IIS'yi başaramadım (görünüşte sebepsiz). Skype'ın yeni sürümü bu varsayılan bağlantı noktasını kapatarak çıktı! "Bağlantı 80 ve 443'ü gelen bağlantılar için alternatif olarak kullan" ayarını kaldırmak zorunda kaldı. İki veya daha fazla web sunucuları yapmak isteyen varsa
Tamam. Web tarayıcıları tarafından kullanılan varsayılan bir bağlantı noktası var mı? Belirli bir web sunucusunda bir web sayfasını açmaya çalıştığımda bağlantı noktasını belirtebilir miyim? – Roman
Varsayılan HTTP bağlantı noktası 80'dir. URL'deki bağlantı noktalarını şu şekilde belirtebilirsiniz: 'http: // sunucunuz: portnumber'. –
HTTPS için HTTP 443 için varsayılan değer 80'dir. Farklı bir tane belirtebilirsiniz: – Ofir
Sen (80 varsayılan) aynı limanda iki web sunucuları açamıyor, farklı bağlantı noktalarını kullanmak zorunda.
Eğer bir DNS kullanıyorsanız, web sunucunuzu farklı web sitelerine farklı isteklerle yanıt verebilecek şekilde kolayca ayarlayabilir, böylece farklı alt siteler veya farklı alanlar için farklı web sitelerine sahip olmanız gerekebilir.
HTTP/1.1 –
kazanmak için HOST-HEADER! – Dal
Bir web sunucusu belirli bir bağlantı noktasına bağlıdır. Normalde, bu port 80'dir. Bağlantı noktası açıkça belirtilmemişse, bu bir tarayıcının vurmaya çalışacağı bağlantı noktasıdır.
işlemi, alternatif sunucu, farklı bir bağlantı noktasına (8080 veya 8081 web sunucuları için popüler eklenik tuzlar gibi görünüyor, ama seçim sizin) üzerinde çalışacak şekilde alabilirsiniz.
Bu, çakışmanın olmasını engeller. 80 numaralı bağlantı noktasına giden her şey eski sunucunuza ulaşır. 8080'e (veya sunucunuzu çalıştırmaya karar verdiğiniz bağlantı noktası) giden her şey basit python sunucunuza çarpacaktır.
web sunucularının bağlantı istek Hizmetleri kim hiç söz olurdu (bu görev işletim sistemi düzeyinde hala) -:
diğer sunucunuz vurmak için, gibi bir URL kullanın. Ayrıca, özel soket seçenekleri olmadan, soketin benzersiz bir arayüz, internet adresi ve port kombinasyonuna bağlı olması gerekir.Bir sunucuyu https (bağlantı noktası 443) isteklerine hizmet vermeye adamanızı öneririm. Ayrıca tarayıcılarında (keyfi bağlantı noktası numaraları) içine garip bir şey yazmak için kullanıcıların ihtiyaç duymaz
Bu yolla liman çatışma diğerleri de söylediğim önleyebilirsiniz. Hatta her sunucunun diğerine trafiği yeniden yönlendirmesini sağlayabilirsiniz (ör. Http sunucusu, https sunucu tanıtıcılarını bildiği bir ana bilgisayar adı için bir http isteği alır, böylece isteği aynı ana bilgisayar adı ile https'ye yönlendirebilir ve böylece isteği uygun sunucu).
Sunucu A:
http://localhost
Sunucu B:
https://localhost
, ama ...
Kulağa hoş geliyor (çünkü sen bir geliştiricisin, bir sysadmin değil mi?) gerçekten sadece aynı bilgisayarda Python ve PHP sitelerini çalıştırmak istiyor. Öyleyse, sorunuzu okuyorsam beni bağışla, ama bu kurulum aynı bilgisayardaki her iki siteyi aynı sunucuda (port 80) bir sunucuda, Apache'de çalıştırmamı sağlıyor. ve 127.0.0.1 na yönlendirmek:
G/hosts dosyası (\ Windows \ System32 \ drivers \ Windows üzerinde etc \ hosts veya C): Benim/etc yeni girişler yapmak Apache Sonra
127.0.0.1 localhost
# development projects
127.0.0.1 somephpsite.com.local
127.0.0.1 www.somephpsite.com.local
127.0.0.1 otherpythonsite.com.local
127.0.0.1 www.otherpythonsite.com.local
her site için VirtualHosts ekleyin: hep olduğu gibi
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
<Directory "/Users/Robert/Projects/SomeSite/somephpsite.com">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DocumentRoot "/Users/Robert/Projects/SomeSite/somephpsite.com"
ServerName somephpsite.com.local
ServerAlias www.somephpsite.com.local
ErrorLog "/Users/Robert/Projects/SomeSite/error.log"
CustomLog "/Users/Robert/Projects/SomeSite/access.log" common
</VirtualHost>
<VirtualHost *:80>
<Directory "/Users/Robert/Projects/OtherSite/otherpythonsite.com">
Order allow,deny
Allow from all
</Directory>
DocumentRoot "/Users/Robert/Projects/OtherSite/otherpythonsite.com/static"
Alias /(.*(\.css|\.gif|\.ico|\.jpg|\.js|\.pdf|\.txt)) /Users/Robert/Projects/OtherSite/otherpythonsite.com/static/$1
WSGIScriptAlias//Users/Robert/Projects/OtherSite/otherpythonsite.com/wsgi.py
ServerName otherpythonsite.com.local
ServerAlias www.otherpythonsite.com.local
ErrorLog "/Users/Robert/Projects/OtherSite/error.log"
CustomLog "/Users/Robert/Projects/OtherSite/access.log" common
</VirtualHost>
Yani, PHP siteleri DocumentRoot
çalışır. Ve Python siteleri WSGI'da çalışır. Ve ikisi de Apache'de çalışıyorlar. Sonra test etmek için, yerel kopyanımda çalışmakta olduğum her tarayıcıya ".local" ekledim.
+1, soruya cevap vermez ama yine de yararlı ve alakalıdır. – AlexMA
Sadece ihtiyacım olan şey! Neden bir kullanıcı bir bağlantı noktası numarasına sahip olmak ister? –
Sadece birinin iki farklı web sunucusuna ihtiyacı varsa. Örneğin, her ikisi de bir node.js uygulaması ve bir php uygulaması. Eğer bu ikisi aynı sunucudaysa, bunlardan biri farklı portu dinlemelidir. – Akis
- 1. Mobil bir platformda bir HTTP sunucusu çalıştırabilir miyim?
- 2. Windows'ta py2app'ı çalıştırabilir miyim?
- 3. Tomcat'ta .jar dosyasını çalıştırabilir miyim?
- 4. ipython komut dosyalarını çalıştırabilir miyim?
- 5. web sunucusu
- 6. Postgresql. Güncelleme sorgusunu paralellde çalıştırabilir miyim?
- 7. web sunucusu
- 8. Heroh hesabımda bash komut dosyalarını çalıştırabilir miyim?
- 9. F # ajanlarını birden fazla makinede çalıştırabilir miyim?
- 10. numpy.histogramı numpy.bincount gibi davranmaya çalıştırabilir miyim?
- 11. Kodakları --harmony etiketi olmadan çalıştırabilir miyim?
- 12. Kendi javascript'i (yüklü) bir sayfada çalıştırabilir miyim?
- 13. JavaScript'i Swift kodunun içinde çalıştırabilir miyim?
- 14. Web sunucusu, web konteyneri ve uygulama sunucusu arasındaki fark
- 15. Nodejs web sunucusu çağrı isteği Sayfa yüklendiğinde iki kezListener
- 16. yapılandırma Apache Web sunucusu,
- 17. .NET'te Yerleşik Web Sunucusu
- 18. Dwscript web sunucusu
- 19. node.js web sunucusu
- 20. Birden çok bilgisayarda aynı hata ayıklama anahtarını kullanma
- 21. Yükseklik performans web sunucusu özellikleri
- 22. Bir strip_tags() döngüsünden $ _POST dizisini çalıştırabilir miyim PHP
- 23. Aynı takma örneğe iki emac/ince bağ yapabilir miyim?
- 24. Aynı emaclardan iki farklı lisp + slime/swanks kullanabilir miyim?
- 25. Derlemeyi diske kaydetmeden C# ifadesini derleyebilir ve çalıştırabilir miyim?
- 26. Bir web sunucusu olmadan bir php'yi nasıl çalıştırabilirim?
- 27. İki yönlü istemci sunucusu ağ iletişimi
- 28. bootstrap navbar çöküş bilgisayarda çalışmıyor bilgisayarda çalışmıyor
- 29. Statik web sitemi S3 Bir Kova'dan çalıştırabilir ve şifre koruması ekleyebilir miyim?
- 30. iphone'da herhangi bir açık kaynak web sunucusu var mı?
FWIW, Python yerleşik bir web sunucusu modülüne (SimpleHTTPServer) sahiptir. Varsayılan bağlantı noktası 8000'dir. Komut satırında komut satırında çalıştırabilirsiniz: python -m SimpleHTTPServer – ianalis