Windows+Python+Apache+wsgi

來源:互聯網
上載者:User

剛用Python作為後台語言做了一個網站,測試伺服器是Windows的,把網站發布到這台伺服器上,可花了我好些時間。把遇到的問題在這裡作個記錄。

第一步、下載安裝Apache2.2

第二步、下載安裝Python2.7

第三步、為Apache配置wsgi模組

1、下載:http://www.lfd.uci.edu/~gohlke/pythonlibs/    搜尋wsgi,對應好python版本

2、解壓,將mod_wsgi.so放到apache的modules目錄下

3、配置,開啟Apache目錄下的conf\httpd.conf,搜尋LoadModule位置,在後面加上

       LoadModule wsgi_module modules/mod_wsgi.so

第四步、把項目拷貝到伺服器的任意目錄下,如C:\www-data\projectname ,並在conf\httpd.conf檔案中搜尋DocumentRoot位置,後面加上:

WSGIScriptAlias / "C:/www-data/projectname/application.py"

# 此處application.py要改成自己項目啟動的py檔案名稱

<Directory "C:/www-data/projectname">

Order deny,allow

Allow from all

</Directory>

這時,我到Windows的服務裡試圖啟動Apache,結果報錯說:

Windows不能從本機電腦啟動服務,請聯絡廠商什麼什麼的。。搞得我一頭霧水,後來看了一下Apache目錄下的logs,

發現報錯資訊:

can not load mod_wsgi.so

還有:ImportError: No module named site

到網上搜了一下,可能是因為Python的環境沒有配好,於是添加環境變數 PYTHONPATH,值為Python的安裝路徑,如C:\Python27

再啟動,報錯:

can not import web,因為我用到的webpy,mysqldb等外掛程式還沒有下載安裝呢。

我下載了mysqldb 的 tar格式檔案,回來解壓,想通過python setup.py install 的方式安裝,但是安裝報錯:

cannot open include file:'config-win.h': No such file or directory

怎麼辦呢?看網上的解決方案五花八門,好像都不簡單。後來,我重新下載了exe格式的mysqldb,直接運行安裝,嘿!就可以了!

我再啟動,開始報程式裡面的錯誤了,No module named url。

url 是我自己寫的Module,但明明在那個位置,它就是找不到,於是在啟動程式的application.py 頂部加上兩句:

import sys, os 

sys.path.append(os.path.dirname(__file__))

再啟動,報錯說TemplateNotFound

我用的jinja2作為模板工具,八成又是路徑的問題,它找不到我的模板。於是修改代碼

render_jinja(‘/templates', encoding='utf-8')為

render_jinja(os.path.normpath(os.path.dirname(__file__) + '../templates'), encoding='utf-8')

再啟動,終於看到不報錯的頁面了。但是它直接顯示的Html代碼,而不是頁面!!

看一下回應標頭資訊:context-type: text/plain, 怎麼Apache把頁面當成文本直接返回了??網上搜了一下,大概是Apache與wsgi之間的什麼問題。。沒時間看那麼多了,不如自己在代碼裡給設定一下回應標頭好了。於是加上一段預先處理的代碼(這是webpy相關的代碼):

webapp = web.application(urls, globals())

def my_loadhook():    

web.header('Content-type', "text/html; charset=utf-8")

webapp.add_processor(web.loadhook(my_loadhook))

再啟動,終於可以看到正常的頁面了,我淚流滿面啊!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.