2014-02-19 33 views
0

TLDR: 「真正的服務器」(Apache?Flask?Django?)能夠將各種服務統一到可讀的子目錄(abc.work.com/svn,abc.work.com/hg)中,而不是使用端口號(abc.work.com:8000,abs.work.com:8001)?如何在單臺機器上管理/合併多臺服務器?

長版本: 在去年,我學會了如何使用Mongoose提供文件,運行最小的python web服務器,使用Subversion和Mercurial運行主機版本控制存儲庫,以及託管Trac問題跟蹤器/項目管理框架。

在每一種情況下,我一直在使用每個工具提供的簡單的內置網絡服務器來從我的Windows 7筆記本電腦在工作中託管它(我是一名編碼工程師,實際上並沒有付錢成爲一名「軟件人」 「)。爲了避免衝突,我在每個服務器上使用8000範圍內的不同端口號進行偵聽,併發送我的同事鏈接(如http://machinename.domain.com:8042)以訪問我創建的這些神奇事物。

第一個明顯的問題是,我在命令提示符下運行了很多這些東西,只是讓它在我的桌面上打開。我也知道如何從VBScript中調用cmd.exe來隱藏命令提示符,如果這就是我想要的。許多內置的web服務器甚至可以選擇作爲服務來運行,這可能會帶來許可,但更接近「正確」的方式來託管任何類型的服務器。

更大的問題是,我發送人鏈接到我的機器與不同的端口號。我很滿意他們必須使用我的機器名稱 - 我假設我需要網絡管理員人員添加DNS條目來稱爲TeamAwesome.company.com而不是machinename.company.com:8000?

更大的問題是,如果我做了像Apache,Django或Flask網絡服務器這樣的特殊功能,我可以將其設置爲像machinename.company.com/trac這樣的trac服務器和machinename.company.com/hg/項目1的HG倉庫project1?我正在研究Apache,Django和Flask,因爲我已經潛入Python 2年了,而且這些看起來是最適合我的需求的。

我明白,理想情況下,這些東西應該託管在單獨的linux-y服務器機器上,但是我需要證明在我向老闆請求服務器資源之前,我正在開發的工具的用處(誰僱用了我做工程而不是編程,或者網頁開發,或者系統管理等)。

我看到this看起來有關。是否需要查看http代理,虛擬主機,nginx和WebSockets?

看着Apache VirtualHost examples看起來很有希望,儘管我不能解釋這些例子中的其中一個實際上是在做我正在談論的內容。感謝您提供任何建議,因爲我會繼續深入這個兔子洞!

回答

0

Apache虛擬主機只能通過偵聽ip和/或端口號來區分。 的mod_proxy模塊可以做你想做的,如果你想/有那些服務分開,以及運行:然而

ProxyRequests Off 
<Proxy *> 
    Allow from all 
</Proxy> 

ProxyPass  /folder_a  http://backend_a:1234/ retry=5 
ProxyPass  /folder_b  http://backend_b:8888/ retry=5 
# etc 

,如果你只是想點不同的URL指向不相關的文件夾,您的服務器上,然後檢查LocationAlias指令

0

不需要代理設置。您可以使用單個虛擬服務器,但在特定子目錄下運行每個應用程序:例如,使用Django或其他wsgi應用程序,您只需將WSGIScriptAlias設置爲相關的目錄即可。

雖然有一個很大的說明:Django並不是一個服務器。事實上,您需要Apache或相當的服務才能正確使用Django。

+0

我想我明白你的意思,如果我的wsgi應用程序是一個python模塊,或者在查詢給定的子目錄時可以調用的東西,但是如果我的應用程序是在某個端口上運行的另一個服務器,該怎麼辦?所有服務器-y服務(如存儲庫,Web服務器等)是否都以wsgi應用程序的形式存在?即使我可以直接將一些服務綁定到Web服務器上,我仍然希望能夠提供文件夾式訪問,以便在本地端口上單獨提供服務,因爲這聽起來很有用。或者我錯過了這一點? – flutefreak7

相關問題