Web開發學習筆記(一)

WSGI:全稱是Web Server Gateway Interface,WSGI不是服務器,python模塊,框架,API或者任何軟件,只是一種規範,描述web server如何與web application通訊的規範。server和application的規範在PEP 3333中有具體描述。要實現WSGI協議,必須同時實現web server和web application,當前運行在WSGI協議之上的web框架有Torando,Flask,Django前端

WSGI協議主要包括server和application兩部分:python

WSGI server負責從客戶端接收請求,將request轉發給application,將application返回的response返回給客戶端;
WSGI application接收由server轉發的request,處理請求,並將處理結果返回給server。application中能夠包括多個棧式的中間件(middlewares),這些中間件須要同時實現server與application,所以能夠在WSGI服務器與WSGI應用之間起調節做用:對服務器來講,中間件扮演應用程序,對應用程序來講,中間件扮演服務器。web


WSGI協議實際上是定義了一種server與application解耦的規範,便可以有多個實現WSGI server的服務器,也能夠有多個實現WSGI application的框架,那麼就能夠選擇任意的server和application組合實現本身的web應用。例如uWSGI和Gunicorn都是實現了WSGI server協議的服務器,Django,Flask是實現了WSGI application協議的web框架,能夠根據項目實際狀況搭配使用。數據庫


3 實際環境使用的wsgi服務器
由於每一個web框架都不是專一於實現服務器方面的,所以,在生產環境部署的時候使用的服務器也不會簡單的使用web框架自帶的服務器,這裏,咱們來討論一下用於生產環境的服務器有哪些?
1.gunicorn
Gunicorn(從Ruby下面的Unicorn獲得的啓發)應運而生:依賴Nginx的代理行爲,同Nginx進行功能上的分離。因爲不須要直接處理用戶來的請求(都被Nginx先處理),Gunicorn不須要完成相關的功能,其內部邏輯很是簡單:接受從Nginx來的動態請求,處理完以後返回給Nginx,由後者返回給用戶。
因爲功能定位很明確,Gunicorn得以用純Python開發:大大縮短了開發時間的同時,性能上也不會很掉鏈子。同時,它也能夠配合Nginx的代理以外的別的Proxy模塊工做,其配置也相應比較簡單。
配置上的簡單,大概是它流行的最大的緣由。
2.uwsgi
由於使用C語言開發,會和底層接觸的更好,配置也是比較方便,目前和gunicorn兩個算是部署時的惟二之選。
如下是一般的配置文件
[uwsgi]
http = $(HOSTNAME):9033
http-keepalive = 1
pythonpath = ../
module = service
master = 1
processes = 8
daemonize = logs/uwsgi.log
disable-logging = 1
buffer-size = 16384
harakiri = 5
pidfile = uwsgi.pid
stats = $(HOSTNAME):1733

運行:uwsgi --ini conf.ini前端框架


Werkzeug 是一個WSGI工具包,也能夠做爲一個Web框架的底層庫。
Werkzeug服務器

werkzeug 提供了 python web WSGI 開發相關的功能:
路由處理:如何根據請求 URL 找到對應的視圖函數
request 和 response 封裝: 提供更好的方式處理request和生成response對象
自帶的 WSGI server: 測試環境運行WSGI應用app

Werkzeug是一個WSGI工具包,他能夠做爲一個Web框架的底層庫。這裏稍微說一下, werkzeug 不是一個web服務器,也不是一個web框架,而是一個工具包,官方的介紹說是一個 WSGI 工具包,它能夠做爲一個 Web 框架的底層庫,由於它封裝好了不少 Web 框架的東西,例如 Request,Response 等等。框架

 

Flask框架的誕生:
Flask誕生於2010年,是Armin ronacher(人名)用Python語言基於Werkzeug工具箱編寫的輕量級Web開發框架。
Flask自己至關於一個內核,其餘幾乎全部的功能都要用到擴展(郵件擴展Flask-Mail,用戶認證Flask-Login),都須要用第三方的擴展來實現。好比能夠用Flask-extension加入ORM、窗體驗證工具,文件上傳、身份驗證等。Flask沒有默認使用的數據庫,你能夠選擇MySQL,也能夠用NoSQL。
其 WSGI 工具箱採用 Werkzeug(路由模塊),模板引擎則使用 Jinja2。這兩個也是Flask框架的核心。函數

Flask經常使用擴展包:
Flask-SQLalchemy:操做數據庫;
Flask-migrate:管理遷移數據庫;
Flask-Mail:郵件;
Flask-WTF:表單;
Flask-Bable:提供國際化和本地化支持,翻譯;
Flask-script:插入腳本;
Flask-Login:認證用戶狀態;
Flask-OpenID:認證;
Flask-RESTful:開發REST API的工具;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和時間;
Flask-Admin:簡單而可擴展的管理接口的框架工具


Bootstrap
Bootstrap 來自 Twitter, 是一個用於快速開發 Web 應用程序和網站的前端框架,是目前最受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發更加快捷。

Bootstrap 包的內容基本結構:Bootstrap 提供了一個帶有網格系統、連接樣式、背景的基本結構。這將在 Bootstrap 基本結構 部分詳細講解。CSS:Bootstrap 自帶如下特性:全局的 CSS 設置、定義基本的 HTML 元素樣式、可擴展的 class,以及一個先進的網格系統。這將在 Bootstrap CSS 部分詳細講解。組件:Bootstrap 包含了十幾個可重用的組件,用於建立圖像、下拉菜單、導航、警告框、彈出框等等。這將在 佈局組件 部分詳細講解。JavaScript 插件:Bootstrap 包含了十幾個自定義的 jQuery 插件。您能夠直接包含全部的插件,也能夠逐個包含這些插件。這將在 Bootstrap 插件 部分詳細講解。定製:您能夠定製 Bootstrap 的組件、LESS 變量和 jQuery 插件來獲得您本身的版本。

相關文章
相關標籤/搜索