最近開始學著用Python+Tornado+MongoDB寫網站,興起寫了一個部落格,覺得很有意思所以想掛在伺服器上發布出去找大家一起玩。這個時候就遇到了問題。
伺服器是windows系統,安裝的是Apache,所以需要配置Apache,使Apache同時支援PHP和Python。
廢話少說,提供有效方案一個,照做即可:
1. 修改 httpd.conf 檔案
將下列幾個Module前的注釋符 # 去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2. 配置 httpd-vhosts.conf 檔案
<VirtualHost *:80>
ServerName http://b06.suosikeji.com #這是你要解析的網站地址
ServerAdmin me@chengkang.pw
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
proxypass / http://127.0.0.1:8002/ #這裡是你的python網站的地址
proxypassreverse / http://127.0.0.1:8002/ #同上
</VirtualHost>
3. 重啟 Apache
以上就是我的成功案例。
網上還查到一個方法是通過nginx配置反向 Proxy,我試了一個多小時然後放棄了。之前沒接觸過nginx,所以出了問題也不知道該怎麼解決。其中讓我氣得要吐血的一個問題是:
nginx檔案夾始終為“唯讀”,怎麼改也改不了……導致nginx.exe無法運行……
要是哪位朋友有解決方案,望不吝賜教。
關於反向 Proxy的初步認識:
以我的網站為例,部落格運行在伺服器本地8002連接埠,即 http://127.0.0.1:8002。我要解析的網域名稱為 http://b06.suosikeji.com。
由於伺服器環境為Apache,所以外面無法直接存取伺服器上未在Apache中配置的某個連接埠,所以需要進行反向 Proxy的配置。
配置好反向 Proxy之後,當使用者訪問 http://b06.suosikeji.com/add 頁面時,伺服器Apache收到請求,將其轉換為 http://127.0.0.1:8002/add 交給Python處理,並將Python處理出的結果返回,這樣使用者就看到了正確的頁面。
(今天下午亂查資料後的簡單理解,望對“反向 Proxy”有正確深入理解的朋友指教。)
自學最痛苦的是碰到困難查資料很難直接查到有用的資料,廢話看了一大堆卻沒有一個明確的解決方案。我個人確實屬於那種不認真學習的,喜歡拿過什麼來最好能直接就用。所以最近我在總結一些自學過程中的經驗,將以解決方案(+學習反思)的形式整理成文,慢慢分享出來。
希望我的總結能夠給其他自學者一些實際的協助。