2015-01-10 45 views
3

我有一個Tornado網絡聊天,由於各種原因(如身份驗證等)必須絕對運行在默認端口80上。然而,Tornado Web服務器在端口8800上運行的原因很明顯(如果它可以在我的網站的同一端口託管Tornado,我願意嘗試),所以我試圖完成的是通過我的控制檯運行Tornado Web服務器,同時在我的網站的默認端口上託管Tornado網絡聊天。在不同端口上運行龍捲風和託管應用程序

我搬到了網絡聊天的index.html的到我的網站的默認文件夾,以便它像www.example.com/webchat.html而不是www.example.com:8800/webchat。然後我用命令

python webchat.py 

運行龍捲風但是當我訪問webchat.html聊天未運行,因爲它會如果它是在端口8800,因爲 頁面未呈現,蟒蛇。

網上聊天HTML

<div class="container" style="width: auto; height: 100%;"> 

     <span>{% raw content %}</span> <!-- The span is not rendered on page --> 



</div><!-- /.container --> 

<!-- Bootstrap core JavaScript 
================================================== --> 
<!-- Placed at the end of the document so the pages load faster --> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="http://getbootstrap.com/dist/js/bootstrap.min.js"></script> 

{% if 'chat' in globals() and chat %} 
    <!-- Application script --> 
    <script src="{{ static_url('stuff.js') }}" type="text/javascript"></script> 
     {% end %} 
+0

「但是,Tornado web服務器運行在8800端口,原因很明顯」 - 這些原因是什麼?這對我來說並不明顯。 – icedtrees

+0

原因是Tornado是一個Web服務器,您不能在同一個端口地址上運行兩個Web服務器(其他是Apache)...... – KingAlfredChameleon

+0

這很有道理。不是每個人都在端口80上運行服務器,所以有時候明確提到它是有用的。 – icedtrees

回答

1

我可以建議兩個選項:

  1. 如果您的網站是靜態的,你可以溝的Apache服務器,將您的網站,龍捲風,並獲得龍捲風爲您的網站提供/路徑。然後在端口80上運行龍捲風。這可能是最簡單的。添加以下內容作爲最後的龍捲風處理程序:

    (r'/(.*)', tornado.web.StaticFileHandler, {'path': static_path}),

    static_path路徑應該到Apache-服務網站根目錄。

  2. 如果您需要apache服務器,那麼您可以將apache配置爲您的龍捲風服務器的反向代理。從Need help setting up: Apache Reverse Proxy,它看起來像你需要添加到您的apache.conf

    ProxyPass /webchat http://localhost:8800/webchat ProxyPassReverse /webchat http://localhost:8800/webchat

    您需要加載指定的Apache模塊以及。

您也可以嘗試使用Tornado的WSGI功能,然後使用mod_wsgi配置Apache。

+0

好的,謝謝,我會更熱衷於嘗試選項2,因爲龍捲風不會與PHP一起使用,除非您使用JavaScript加載php。我會更新你並接受答案,如果它有效 – KingAlfredChameleon