為做網(wǎng)站而準(zhǔn)備

2018-02-24 15:48 更新

作為一個(gè)程序猿一定要會做網(wǎng)站。這也不一定吧,貌似是,但是,如果被人問及此事,如果說自己不會,的確羞愧難當(dāng)呀。所以,本教程要講一講如何做網(wǎng)站。

推薦閱讀:History of the World Wide Web

首先,為自己準(zhǔn)備一個(gè)服務(wù)器。這個(gè)要求似乎有點(diǎn)過分,作為一個(gè)普通的窮苦聊到的程序員,哪里有銅鈿來購買服務(wù)器呢?沒關(guān)系,不夠買服務(wù)器也能做網(wǎng)站,可以購買云服務(wù)空間或者虛擬空間,這個(gè)在網(wǎng)上搜搜,很多。如果購買這個(gè)的銅鈿也沒有,還可以利用自己的電腦(這總該有了)作為服務(wù)服務(wù)器。我就是利用一臺裝有ubuntu操作系統(tǒng)的個(gè)人電腦作為本教程的案例演示服務(wù)器。

然后,要在這個(gè)服務(wù)器上做一些程序配置。一些必備的網(wǎng)絡(luò)配置這里就不說了,比如我用的ubuntu系統(tǒng),默認(rèn)情況都有了。如果讀者遇到一些問題,可以搜一下,網(wǎng)上資料多多。另外的配置就是python開發(fā)環(huán)境,這個(gè)應(yīng)該也有了,前面已經(jīng)在用了。

接下來,要安裝一個(gè)框架。本教程中制作網(wǎng)站的案例采用tornado框架。

在安裝這個(gè)框架之前,先了解一些相關(guān)知識。

開發(fā)框架

對框架的認(rèn)識,由于工作習(xí)慣和工作內(nèi)容的不同,有很大差異,這里姑且截取維基百科中的一種定義,之所以要給出一個(gè)定義,無非是讓看官有所了解,但是是否知道這個(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)用無關(guān),但是提供并實(shí)現(xiàn)最為基礎(chǔ)的軟件架構(gòu)和體系。軟件開發(fā)者通常依據(jù)特定的框架實(shí)現(xiàn)更為復(fù)雜的商業(yè)運(yùn)用和業(yè)務(wù)邏輯。這樣的軟件應(yīng)用可以在支持同一種框架的軟件系統(tǒng)中運(yùn)行。

簡而言之,框架就是制定一套規(guī)范或者規(guī)則(思想),大家(程序員)在該規(guī)范或者規(guī)則(思想)下工作。或者說就是使用別人搭好的舞臺,你來做表演。

我比較喜歡最后一句的解釋,別人搭好舞臺,我來表演。這也就是說,如果在做軟件開發(fā)的時(shí)候,能夠減少工作量。就做網(wǎng)站來講,其實(shí)需要做的事情很多,但是如果有了開發(fā)框架,很多底層的事情就不需要做了(都有哪些底層的事情呢?讀者能否回答?)。

有高手工程師鄙視框架,認(rèn)為自己編寫的才是王道。這方面不爭論,框架是開發(fā)中很流行的東西,我還是固執(zhí)地認(rèn)為用框架來開發(fā),更劃算。

python框架

有人說php(什么是php,嚴(yán)肅的說法,這是另外一種語言,更高雅的說法,是某個(gè)活動(dòng)的漢語拼音簡稱)框架多,我不否認(rèn),php的開發(fā)框架的確很多很多。不過,python的web開發(fā)框架,也足夠使用了,列舉幾種常見的web框架:

  • Django:這是一個(gè)被廣泛應(yīng)用的框架。在網(wǎng)上搜索,會發(fā)現(xiàn)很多公司在招聘的時(shí)候就說要會這個(gè)。框架只是輔助,真正的程序員,用什么框架,都應(yīng)該是根據(jù)需要而來。當(dāng)然不同框架有不同的特點(diǎn),需要學(xué)習(xí)一段時(shí)間。
  • Flask:一個(gè)用Python編寫的輕量級Web應(yīng)用框架。基于Werkzeug WSGI工具箱和Jinja2模板引擎。
  • Web2py:是一個(gè)為Python語言提供的全功能Web應(yīng)用框架,旨在敏捷快速的開發(fā)Web應(yīng)用,具有快速、安全以及可移植的數(shù)據(jù)庫驅(qū)動(dòng)的應(yīng)用,兼容Google App Engine。
  • Bottle: 微型Python Web框架,遵循WSGI,說微型,是因?yàn)樗挥幸粋€(gè)文件,除Python標(biāo)準(zhǔn)庫外,它不依賴于任何第三方模塊。
  • Tornado:全稱是Tornado Web Server,從名字上看就可知道它可以用作Web服務(wù)器,但同時(shí)它也是一個(gè)Python Web的開發(fā)框架。最初是在FriendFeed公司的網(wǎng)站上使用,F(xiàn)aceBook收購了之后便開源了出來。
  • webpy: 輕量級的Python Web框架。webpy的設(shè)計(jì)理念力求精簡(Keep it simple and powerful),源碼很簡短,只提供一個(gè)框架所必須的東西,不依賴大量的第三方模塊,它沒有URL路由、沒有模板也沒有數(shù)據(jù)庫的訪問。

說明:以上信息選自:http://blog.jobbole.com/72306/?,這篇文章中還有別的框架,由于不是web框架,我沒有選摘,有興趣的去閱讀。

Tornado

本教程中將選擇使用Tornado框架。此前有朋友建議我用Django,首先它是一個(gè)好東西。但是,我更愿意用Tornado,為什么呢?因?yàn)?.....,看下邊或許是理由,或許不是。

Tornado全稱Tornado Web Server,是一個(gè)用Python語言寫成的Web服務(wù)器兼Web應(yīng)用框架,由FriendFeed公司在自己的網(wǎng)站FriendFeed中使用,被Facebook收購以后框架以開源軟件形式開放給大眾??磥鞹ornado的出身高貴呀,對了,某國可能風(fēng)聞?dòng)蠪acebook,但是要一睹其芳容,還要努力。

用哪個(gè)框架,一般是要結(jié)合項(xiàng)目而定。我之選用Tornado的原因,就是看中了它在性能方面的優(yōu)異表現(xiàn)。

Tornado的性能是相當(dāng)優(yōu)異的,因?yàn)樗噲D解決一個(gè)被稱之為“C10k”問題,就是處理大于或等于一萬的并發(fā)。一萬呀,這可是不小的量。(關(guān)于C10K問題,看官可以瀏覽:C10k problem)

下表是和一些其他Web框架與服務(wù)器的對比,供看官參考(數(shù)據(jù)來源:?https://developers.facebook.com/blog/post/301?)

條件:處理器為 AMD Opteron, 主頻2.4GHz, 4核

服務(wù) 部署 請求/每秒
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è)對比表格,還有什么理由不選擇Tornado呢?

就是它了——Tornado

安裝Tornado

Tornado的官方網(wǎng)站:http://www.tornadoweb.org

我在自己電腦中(是我目前使用的服務(wù)器),用下面方法安裝,只需要一句話即可:

pip install tornado

這是因?yàn)門ornado已經(jīng)列入PyPI,因此可以通過 pip 或者 easy_install 來安裝。

如果不用這種方式安裝,下面的頁面中有可以供看官下載的最新源碼版本和安裝方式:https://pypi.python.org/pypi/tornado/

此外,在github上也有托管,看官可以通過上述頁面進(jìn)入到github看源碼。

我沒有在windows操作系統(tǒng)上安裝過這個(gè)東西,不過,在官方網(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比較好,你懂得(嗎?)。

技術(shù)準(zhǔn)備

除了做好上述準(zhǔn)備之外,還要有點(diǎn)技術(shù)準(zhǔn)備:

  • HTML
  • CSS
  • JavaScript

我們在后面實(shí)例中,不會搞太復(fù)雜的界面和JavaScript(JS)操作,所以,只需要基本知識即可。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號