我剛剛發現我可以用Python編寫一個真正的simple web server。我已經有了一個Apache Web服務器,我想在這臺機器上嘗試基於Python的Web服務器。但是如果我嘗試一下,我恐怕會遇到某種衝突。我的意思是兩個Web服務器如何「決定」誰需要從客戶端請求服務器?我可以在同一臺計算機上運行兩臺Web服務器嗎?
回答
讓他們聽聽不同的端口,你會沒事的。
默認的Web端口爲80.當您在瀏覽器中打開某個URL而未指定端口時,默認情況下使用80。
你可以配置你的Web服務器監聽到一個不同的端口,但那麼你也將需要在URL中明確指定:
http://localhost:8080
當選擇一個端口注意,這個特殊的端口號是不是尚未被您安裝並運行在您的盒子上的任何軟件使用。否則,正如你猜對的那樣,會有衝突。
P.S.就在前幾天做重新安裝我得到IIS無法啓動(似乎沒有理由)。原來Skype的新版本佔用了這個默認端口!必須刪除其設置「使用端口80和443作爲傳入連接的替代品」。
如果您希望製作兩個或更多Web服務器,則無法在同一端口中打開兩個Web服務器(默認值爲80),您必須使用不同的端口。
如果您使用的是DNS,您可以輕鬆設置您的網絡服務器,以針對不同的請求響應不同的網站,如果您需要針對子域或不同的域使用不同的網站,這可能會非常有用。
HTTP/1.1爲贏得 – 2010-02-23 16:18:01
確實,冰雹主機頭! – Dal 2010-02-23 16:47:33
Web服務器綁定到特定端口。通常情況下,這是端口80.如果沒有明確指定端口,則這是瀏覽器嘗試點擊的端口。
你可以讓你的備用服務器在不同的端口上運行(8080或8081似乎是Web服務器的流行選擇,但選擇是你的)。
這將停止發生衝突。所有到端口80的東西都會擊中你的舊服務器。一切到8080(或任何您決定運行您的服務器的端口)將打擊您的簡單的Python服務器。
打你的其他服務器,使用URL,如: -
的Web服務器會在誰服務的連接請求沒有發言權(這個任務仍然是在操作系統級別)。此外,沒有特殊的套接字選項,套接字必須綁定到接口,互聯網地址和端口的唯一組合。
我建議你專用一臺服務器來提供https(端口443)請求。
這樣你就可以避免別人提到的端口衝突,同時也不要求用戶在瀏覽器中輸入任何奇怪的東西(任意端口號)。甚至可以讓每個服務器將流量重定向到另一個服務器(例如,http服務器接收到一個它知道https服務器處理的主機名的http請求,以便它可以使用相同的主機名將請求重定向到https,從而將請求傳輸到適當的服務器)。
服務器A:
http://localhost
服務器B:
https://localhost
如果你真的想運行單獨的服務器來測試服務器軟件看到其他的答案,但...
這聽起來像(因爲你是一個開發人員,而不是一個系統管理員吧?)你真的只是想在同一臺計算機上運行Python和PHP網站。所以,如果我正在閱讀你的問題,請原諒我,但這種設置允許我在同一臺計算機上使用同一端口(端口80)在一臺服務器上運行兩種站點,即Apache。
我使我的/ etc新條目/ hosts文件(或C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ Windows上等\主機),並將其指向127.0.0.1:在Apache中
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
然後我想補充VirtualHosts爲每個站點:
<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>
因此,PHP站點運行在DocumentRoot
就像他們總是這樣。 Python站點運行在WSGI中。他們都在Apache運行。然後進行測試,我只需在我用於處理本地副本的任何瀏覽器中添加「.local」。
- 1. 在兩臺計算機上運行Web服務和客戶端
- 2. 我可以在一臺服務器上運行apache和glassfish嗎?
- 3. 我可以在同一臺計算機上運行VS 2008和VS 2010嗎?
- 4. 在同一臺機器上運行兩個Jetty服務器
- 5. 我可以在同一臺服務器上運行mod_dav_svn和svnserve
- 6. 無法在一臺計算機上運行jar,但可以在另一臺計算機上運行
- 7. 我可以在同一臺服務器上運行Xampp和tomcat並行嗎
- 8. Java查找兩臺服務器是否在同一臺機器上運行
- 9. 我可以在移動平臺上運行HTTP服務器嗎?
- 10. 我們可以在同一臺機器上運行兩個不同執行器的gitlab運行器嗎?
- 11. 我可以在同一臺服務器上運行多個logstash實例嗎?
- 12. 在同一臺計算機上運行Apache2服務器和XAMPP(Ubuntu)
- 13. PHP和node.js可以在同一臺服務器上運行
- 14. 設計:網站在同一臺機器上調用web服務
- 15. zend服務器和xampp在同一臺計算機上
- 16. 在Windows Server 2003上運行的Windows服務無法在同一臺計算機上調用xml Web服務
- 17. PHP腳本可以在一臺服務器上運行,但不能在另一臺服務器上運行
- 18. phpBB3 mod可以在一臺服務器上運行,但不會在另一臺服務器上運行
- 19. 無法在兩臺以上的計算機上運行OpenMPI
- 20. 如何在同一臺機器上運行兩種不同平臺的Web服務?
- 21. 你可以在一個cpu核心上運行兩臺服務器嗎?
- 22. 我可以對同一臺服務器執行CURL請求嗎?
- 23. 可以在同一臺服務器和網站上運行Coldfusion&PHP嗎?
- 24. 我可以在同一臺機器上運行Postgres 8.4和Postgres 9嗎?
- 25. 我可以在同一臺機器上運行visual studio 2005和visual c#2008嗎?
- 26. 我可以在多臺機器上運行F#代理嗎?
- 27. 在一臺計算機上的.NET Web服務集羣
- 28. 兩臺機器在本地運行的Web服務
- 29. 在同一臺服務器上運行兩個PHP版本
- 30. 多臺celerycam在同一臺服務器上運行
FWIW,Python有一個內置的web服務器模塊(SimpleHTTPServer)。它的默認端口是8000.您可以使用以下命令在命令行中運行它:python -m SimpleHTTPServer – ianalis 2010-02-23 17:00:53