<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 零基礎(chǔ)完成網(wǎng)站搭建~~

          共 4956字,需瀏覽 10分鐘

           ·

          2021-09-14 05:10

          ↑↑↑點擊上方藍字,回復資料,10個G的驚喜

          1、講解Python Web開發(fā),必定離不開HTTP。有多少人知道HTTP的工作流程呢?

          2、我們訪問網(wǎng)站,網(wǎng)站服務(wù)器把內(nèi)容反饋給我們。網(wǎng)站服務(wù)器是什么?

          3、都說HTTP網(wǎng)站不安全,要變成HTTPS的。如何建立HTTPS網(wǎng)站?

          本文就針對以上問題做簡單解答,更詳細的內(nèi)容請閱讀《Python高效開發(fā)實戰(zhàn)――Django、Tornado、Flask、Twisted(第3版)》一書。

          PART.
          01


          HTTP流程

          HTTP是Web瀏覽器與Web服務(wù)器之間通信的標準協(xié)議,是Internet上能夠可靠地交換文件的重要基礎(chǔ)。HTTP的基本交互流程如圖1所示。

          圖1 HTTP的基本交互流程

          每個HTTP站點都有一個服務(wù)器進程監(jiān)聽著TCP的HTTP端口,HTTP端口默認為80,也可由服務(wù)器進程設(shè)置為其他端口。

          當服務(wù)器發(fā)現(xiàn)有客戶端建立連接并提交了一個 HTTP 請求(Request)后,就根據(jù)請求的內(nèi)容執(zhí)行相應的操作,并將結(jié)果返回給客戶端(Response)。

          通常客戶在瀏覽器中發(fā)起一次網(wǎng)絡(luò)訪問的步驟如下。

          (1)輸入網(wǎng)址并按Enter鍵,比如訪問http://mysite:8080/app/index.html。

          (2)瀏覽器通過域名系統(tǒng)查詢mysite的真實IP,比如212.34.98.20。

          (3)向服務(wù)器212.34.98.20的8080端口發(fā)起TCP連接請求并建立連接。

          (4)發(fā)送HTTP請求的內(nèi)容,包括訪問的地址/app/index.html、訪問方式GET、瀏覽器本身的產(chǎn)品名等。

          (5)服務(wù)器返回/app/index.html中的數(shù)據(jù)作為Response發(fā)送給客戶端。如果請求的不是一個文件,則服務(wù)器需要執(zhí)行相應的代碼,動態(tài)生成且返回給客戶端。

          (6)瀏覽器接收到結(jié)果后關(guān)閉與服務(wù)器的TCP連接。

          (7)瀏覽器將接收到的結(jié)果呈現(xiàn)在顯示器上。

          注意:域名解析本身不是HTTP的一部分,客戶端應在向服務(wù)器建立TCP連接之前就通過DNS服務(wù)器完成域名解析工作。

          以上是最典型的HTTP流程,當今的HTTP版本還允許客戶端在一次HTTP請求完成后不關(guān)閉TCP連接,以便第2次發(fā)送HTTP請求時復用該連接,從而達到減少系統(tǒng)整體開銷的目的,此技術(shù)在HTTP中叫作keep-alive


          PART.
          02


          基于HTTP的網(wǎng)站開發(fā)

          經(jīng)過幾十年的發(fā)展,已經(jīng)出現(xiàn)幾個成熟的處理HTTP的知名Web服務(wù)器。

          這些Web服務(wù)器可以解析(handle)HTTP,當Web服務(wù)器接收到一個HTTP請求時,會根據(jù)配置的內(nèi)容返回一個靜態(tài)HTML頁面或者調(diào)用某些代碼動態(tài)生成返回結(jié)果。

          Web服務(wù)器把動態(tài)響應(dynamic response)產(chǎn)生的委托(delegate)給其他一些程序,例如Python代碼、JSP(JavaServer Pages)腳本、Servlets、ASP(Active Server Pages)腳本等。

          無論它們的目的如何,這些服務(wù)器端(server-side)的程序通常會產(chǎn)生一個HTTP響應讓瀏覽器瀏覽。

          由于目標操作系統(tǒng)、應用場景及商業(yè)目的的不同,當今主流的Web服務(wù)器各有特色,將它們的特性簡單地概括如下。

          • Apache:是世界上用得最多的Web服務(wù)器,市場占有率達60%左右。由于其卓越的性能,Tomcat或JBoss等很多其他Web服務(wù)器使用Apache為自己提供HTTP接口服務(wù)。

          • Nginx:是一款輕量級、高性能的HTTP和反向代理服務(wù)器。因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。

          • IIS:微軟的Web服務(wù)器產(chǎn)品。由于Windows的影響,IIS是目前最流行的Web服務(wù)器產(chǎn)品之一,它的最大優(yōu)勢當然是對微軟ASP.net及其周圍產(chǎn)品的支持。

          • Tomcat:是一個開源服務(wù)器,是Java Servlet 2.2和JavaServer Pages 1.1技術(shù)的標準實現(xiàn)。

          • JBoss:是一個管理EJB的容器和服務(wù)器,支持EJB 1.1、EJB 2.0和EJB 3的規(guī)范。但JBoss的核心服務(wù)不包括支持Servlet、JSP的Web容器,一般與Tomcat或Jetty綁定使用。

          當前的主流Web服務(wù)器都實現(xiàn)了主流語言的可調(diào)用接口標準,這些標準如下。

          • CGI:Common Gateway Interface,CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將Web的一組簡單的靜態(tài)超媒體文檔變成一個完整的新的交互式媒體。

          • ISAPI:Internet Server Application Program Interface,是微軟提供的一套面向Web服務(wù)的API接口,它能實現(xiàn)CGI提供的全部功能,并在此基礎(chǔ)上進行了擴展,例如提供了過濾器應用程序的接口。

          • WSGI:Web Server Gateway Interface,是一套專為Python語言制定的網(wǎng)絡(luò)服務(wù)器標準接口。本書將要學習的Python Web框架均以WSGI為基礎(chǔ)標準。

          從客戶端瀏覽器的角度來看,它的每次訪問是通過HTTP訪問Web服務(wù)器從而獲得某種服務(wù)(下載文件、查看頁面、訂購商品等)的,但實際上Web服務(wù)器僅起到橋梁的作用,即將瀏覽器的HTTP請求解碼,轉(zhuǎn)換成服務(wù)器端程序能夠識別的接口調(diào)用方式,然后將服務(wù)器端程序生成的返回封裝成HTTP Response,并返回給瀏覽器。

          服務(wù)器端程序、Web服務(wù)器、客戶端之間的關(guān)系如圖2所示。

           

          圖2  服務(wù)器端程序

          最簡單的服務(wù)器端程序可以是直接讀取某文件或返回固定的網(wǎng)頁內(nèi)容;稍復雜一些的服務(wù)器端程序需要處理客戶端通過HTTP、URL、HTML中傳入的參數(shù)、動態(tài)執(zhí)行邏輯代碼、在數(shù)據(jù)庫或緩存中讀寫數(shù)據(jù)等一系列操作,才能最終生成調(diào)用結(jié)果。


          PART.
          03


          實戰(zhàn)演練

          建立安全的HTTPS網(wǎng)站

          普通HTTP站點的協(xié)議與數(shù)據(jù)以明文方式在網(wǎng)絡(luò)上傳輸,而HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全為目標的HTTP通道,即在HTTP下加入SSL層,通過SSL達到數(shù)據(jù)加密及身份認證的功能。

          目前幾乎所有的銀行、證券、公共交通的網(wǎng)站均以HTTPS方式搭建。

          OpenSSL是一個強大的免費Socket層密碼庫,蘊含了主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協(xié)議。目前大多數(shù)網(wǎng)站通過OpenSSL工具包搭建HTTPS站點,其步驟如下。

          • 在服務(wù)器中安裝OpenSSL工具包。

          • 生成SSL密鑰和證書。

          • 將證書配置到Web服務(wù)器。

          • 在客戶端安裝CA證書。

          本節(jié)演示在Linux Ubuntu下OpenSSL的使用方法,以及Nginx在Linux下的證書配置方式。

          Windows中OpenSSL的使用方式與Linux中的完全一致,讀者可以自行嘗試。

          1.在服務(wù)器中安裝OpenSSL工具包

          通過如下兩條命令安裝OpenSSL:

          # sudo apt-get install openssl# sudo apt-get install libssl-dev

          命令運行成功后,OpenSSL命令和配置文件將被安裝到Linux系統(tǒng)目錄中。

          • OpenSSL命令:/usr/bin/openssl。

          • 配置文件:/usr/lib/ssl/*。

          2.生成SSL密鑰和證書

          通過如下步驟生成CA證書ca.crt、服務(wù)器密鑰文件server.key和服務(wù)器證書server.crt:

          // 生成CA 密鑰# openssl genrsa -out ca.key 2048
          // 生成CA證書,days參數(shù)以天為單位設(shè)置證書的有效期。在本過程中會要求輸入證書的所在地、公司名、站點名等# openssl req -x509 -new -nodes -key ca.key -days 365 -out ca.crt
          // 生成服務(wù)器證書RSA的密鑰對# openssl genrsa -out server.key 2048// 生成服務(wù)器端證書CSR,本過程中會要求輸入證書所在地、公司名、站點名等# openssl req -new -key server.key -out server.csr// 生成服務(wù)器端證書 ca.crt# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
          上述命令生成服務(wù)器端證書時,必須在Common Nanme(CN)字段中如實輸入站點的訪問地址。即如果站點通過www.mysite.com訪問,則必須定義CN=www.mysite.com;如果通過IP地址訪問,則需設(shè)置CN為具體的IP地址。

          3.配置Nginx HTTPS服務(wù)器

          在站點配置文件/etc/nginx/sites-enabled/default中添加如下server段,可以定義一個基于HTTPS的接口,該接口的服務(wù)器端程序仍舊為uWSGI接口127.0.0.1:3011。

          server {listen       443;       # HTTPS服務(wù)端口server_name 0.0.0.0;      # 本機上的所有IP地址ssl                  on;ssl_certificate  /etc/nginx/ssl/server.crt;ssl_certificate_key  /etc/nginx/ssl/server.key;

          location \ {uwsgi_pass http://127.0.0.1:3011;}}
          其中需要注意的是參數(shù)ssl_certificate和ssl_certificate_key需要分別指定生成的服務(wù)器證書和服務(wù)器密鑰的全路徑文件名。

          至此,我們已經(jīng)可以使用瀏覽器訪問服務(wù)器的443端口進行HTTPS加密通信了。

          再也不用為如何學習Python迷茫了,《Python高效開發(fā)實戰(zhàn)——Django、Tornado、Flask、Twisted(第3版)》一書本著“純碎干貨,實用至上”的原則,讓我們成為真正的全棧開發(fā)人才。

          ▊《Python高效開發(fā)實戰(zhàn)——Django、Tornado、Flask、Twisted(第3版)

          劉長龍 


          • 暢銷書Python Web編程集大成之作,全面升級

          • Python 3.8、Django 3、Tornado 6、Flask 1.1.2、Twisted 20

          • 作者多年P(guān)ython項目實踐經(jīng)驗及代碼編寫技巧分享

          • 助你零基礎(chǔ)完成網(wǎng)站搭建、數(shù)據(jù)庫設(shè)計、前后端開發(fā)


          本書分為3篇:上篇是Python基礎(chǔ),帶領(lǐng)初學者實踐Python開發(fā)環(huán)境,掌握基本語法,同時對網(wǎng)絡(luò)協(xié)議、Web客戶端技術(shù)、數(shù)據(jù)庫建模等網(wǎng)絡(luò)編程基礎(chǔ)進行深入淺出的學習;中篇是Python框架,學習當前***的Python Web框架,即Django、Tornado、Flask和Twisted,達到對各種Python網(wǎng)絡(luò)技術(shù)融會貫通的目的;下篇是Python框架實戰(zhàn),分別使用4種框架進行項目實踐,利用其各自的特點開發(fā)適用于不同場景的網(wǎng)絡(luò)程序。本書內(nèi)容精練、重點突出、實例豐富、講解通俗,是廣大網(wǎng)絡(luò)應用設(shè)計和開發(fā)人員不可多得的一本參考書。

          (京東滿100減50,快快搶購吧!)




          推薦閱讀

          (點擊標題可跳轉(zhuǎn)閱讀)

          23個優(yōu)秀的機器學習數(shù)據(jù)集

          6行代碼!用Python將PDF轉(zhuǎn)為word

          臺大美女教授陳缊儂:《應用深度學習》

          李宏毅《機器學習》視頻教程 PPT

          老鐵,三連支持一下,好嗎?↓↓↓

          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  豆花视频免费观看18 | 亚洲无码在线免费观看 | 国产精品 欧美精品 | 国产婷婷色 | 亚洲 欧美 乱伦 |