W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
作為一個(gè)程序猿一定要會(huì)做網(wǎng)站。這也不一定吧,貌似是,但是,如果被人問(wèn)及此事,如果說(shuō)自己不會(huì),的確羞愧難當(dāng)呀。所以,本教程要講一講如何做網(wǎng)站。
首先,為自己準(zhǔn)備一個(gè)服務(wù)器。這個(gè)要求似乎有點(diǎn)過(guò)分,作為一個(gè)普通的窮苦聊到的程序員,哪里有銅鈿來(lái)購(gòu)買(mǎi)服務(wù)器呢?沒(méi)關(guān)系,不夠買(mǎi)服務(wù)器也能做網(wǎng)站,可以購(gòu)買(mǎi)云服務(wù)空間或者虛擬空間,這個(gè)在網(wǎng)上搜搜,很多。如果購(gòu)買(mǎi)這個(gè)的銅鈿也沒(méi)有,還可以利用自己的電腦(這總該有了)作為服務(wù)服務(wù)器。我就是利用一臺(tái)裝有ubuntu操作系統(tǒng)的個(gè)人電腦作為本教程的案例演示服務(wù)器。
然后,要在這個(gè)服務(wù)器上做一些程序配置。一些必備的網(wǎng)絡(luò)配置這里就不說(shuō)了,比如我用的ubuntu系統(tǒng),默認(rèn)情況都有了。如果讀者遇到一些問(wèn)題,可以搜一下,網(wǎng)上資料多多。另外的配置就是python開(kāi)發(fā)環(huán)境,這個(gè)應(yīng)該也有了,前面已經(jīng)在用了。
接下來(lái),要安裝一個(gè)框架。本教程中制作網(wǎng)站的案例采用tornado框架。
在安裝這個(gè)框架之前,先了解一些相關(guān)知識(shí)。
對(duì)框架的認(rèn)識(shí),由于工作習(xí)慣和工作內(nèi)容的不同,有很大差異,這里姑且截取維基百科中的一種定義,之所以要給出一個(gè)定義,無(wú)非是讓看官有所了解,但是是否知道這個(gè)定義,絲毫不影響后面的工作。
軟件框架(Software framework),通常指的是為了實(shí)現(xiàn)某個(gè)業(yè)界標(biāo)準(zhǔn)或完成特定基本任務(wù)的軟件組件規(guī)范,也指為了實(shí)現(xiàn)某個(gè)軟件組件規(guī)范時(shí),提供規(guī)范所要求之基礎(chǔ)功能的軟件產(chǎn)品。
框架的功能類似于基礎(chǔ)設(shè)施,與具體的軟件應(yīng)用無(wú)關(guān),但是提供并實(shí)現(xiàn)最為基礎(chǔ)的軟件架構(gòu)和體系。軟件開(kāi)發(fā)者通常依據(jù)特定的框架實(shí)現(xiàn)更為復(fù)雜的商業(yè)運(yùn)用和業(yè)務(wù)邏輯。這樣的軟件應(yīng)用可以在支持同一種框架的軟件系統(tǒng)中運(yùn)行。
簡(jiǎn)而言之,框架就是制定一套規(guī)范或者規(guī)則(思想),大家(程序員)在該規(guī)范或者規(guī)則(思想)下工作?;蛘哒f(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。
我比較喜歡最后一句的解釋,別人搭好舞臺(tái),我來(lái)表演。這也就是說(shuō),如果在做軟件開(kāi)發(fā)的時(shí)候,能夠減少工作量。就做網(wǎng)站來(lái)講,其實(shí)需要做的事情很多,但是如果有了開(kāi)發(fā)框架,很多底層的事情就不需要做了(都有哪些底層的事情呢?讀者能否回答?)。
有高手工程師鄙視框架,認(rèn)為自己編寫(xiě)的才是王道。這方面不爭(zhēng)論,框架是開(kāi)發(fā)中很流行的東西,我還是固執(zhí)地認(rèn)為用框架來(lái)開(kāi)發(fā),更劃算。
有人說(shuō)php(什么是php,嚴(yán)肅的說(shuō)法,這是另外一種語(yǔ)言,更高雅的說(shuō)法,是某個(gè)活動(dòng)的漢語(yǔ)拼音簡(jiǎn)稱)框架多,我不否認(rèn),php的開(kāi)發(fā)框架的確很多很多。不過(guò),python的web開(kāi)發(fā)框架,也足夠使用了,列舉幾種常見(jiàn)的web框架:
說(shuō)明:以上信息選自:http://blog.jobbole.com/72306/?,這篇文章中還有別的框架,由于不是web框架,我沒(méi)有選摘,有興趣的去閱讀。
本教程中將選擇使用Tornado框架。此前有朋友建議我用Django,首先它是一個(gè)好東西。但是,我更愿意用Tornado,為什么呢?因?yàn)?.....,看下邊或許是理由,或許不是。
Tornado全稱Tornado Web Server,是一個(gè)用Python語(yǔ)言寫(xiě)成的Web服務(wù)器兼Web應(yīng)用框架,由FriendFeed公司在自己的網(wǎng)站FriendFeed中使用,被Facebook收購(gòu)以后框架以開(kāi)源軟件形式開(kāi)放給大眾。看來(lái)Tornado的出身高貴呀,對(duì)了,某國(guó)可能風(fēng)聞?dòng)蠪acebook,但是要一睹其芳容,還要努力。
用哪個(gè)框架,一般是要結(jié)合項(xiàng)目而定。我之選用Tornado的原因,就是看中了它在性能方面的優(yōu)異表現(xiàn)。
Tornado的性能是相當(dāng)優(yōu)異的,因?yàn)樗噲D解決一個(gè)被稱之為“C10k”問(wèn)題,就是處理大于或等于一萬(wàn)的并發(fā)。一萬(wàn)呀,這可是不小的量。(關(guān)于C10K問(wèn)題,看官可以瀏覽:C10k problem)
下表是和一些其他Web框架與服務(wù)器的對(duì)比,供看官參考(數(shù)據(jù)來(lái)源:?https://developers.facebook.com/blog/post/301?)
條件:處理器為 AMD Opteron, 主頻2.4GHz, 4核
服務(wù) | 部署 | 請(qǐng)求/每秒 |
---|---|---|
Tornado | nginx, 4進(jìn)程 | 8213 |
Tornado | 1個(gè)單線程進(jìn)程 | 3353 |
Django | Apache/mod_wsgi | 2223 |
web.py | Apache/mod_wsgi | 2066 |
CherryPy | 獨(dú)立 | 785 |
看了這個(gè)對(duì)比表格,還有什么理由不選擇Tornado呢?
就是它了——Tornado
Tornado的官方網(wǎng)站:http://www.tornadoweb.org
我在自己電腦中(是我目前使用的服務(wù)器),用下面方法安裝,只需要一句話即可:
pip install tornado
這是因?yàn)門(mén)ornado已經(jīng)列入PyPI,因此可以通過(guò) pip 或者 easy_install 來(lái)安裝。
如果不用這種方式安裝,下面的頁(yè)面中有可以供看官下載的最新源碼版本和安裝方式:https://pypi.python.org/pypi/tornado/
此外,在github上也有托管,看官可以通過(guò)上述頁(yè)面進(jìn)入到github看源碼。
我沒(méi)有在windows操作系統(tǒng)上安裝過(guò)這個(gè)東西,不過(guò),在官方網(wǎng)站上有一句話,可能在告訴讀者一些信息:
Tornado will also run on Windows, although this configuration is not officially supported and is recommended only for development use.
特別建議,在真正的工程中,網(wǎng)站的服務(wù)器還是用Linux比較好,你懂得(嗎?)。
除了做好上述準(zhǔn)備之外,還要有點(diǎn)技術(shù)準(zhǔn)備:
我們?cè)诤竺鎸?shí)例中,不會(huì)搞太復(fù)雜的界面和JavaScript(JS)操作,所以,只需要基本知識(shí)即可。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: