PS:本系列內容進度節奏會放的很慢,每次知識點都儘量少一點,這樣大家接觸的知識點少了,會更容易理解,因為少即是多。另外,對於後面代碼部分,雖然儘量不用那些複雜的封裝和類,但它並不表示看了就能全部記住,並懂得每個函數的用法,在什麼時候去調用,清楚它輸入的參數類型、能處理的參數類型和輸出的結果是什麼。它 ...
PS:本系列內容進度節奏會放的很慢,每次知識點都儘量少一點,這樣大家接觸的知識點少了,會更容易理解,因為少即是多。另外,對於後面代碼部分,雖然儘量不用那些複雜的封裝和類,但它並不表示看了就能全部記住,並懂得每個函數的用法,在什麼時候去調用,清楚它輸入的參數類型、能處理的參數類型和輸出的結果是什麼。它需要動手去調用,去大量的測試,這樣才能真正掌握。對於初學者,最好將這些函數和測試用例全都照著錄入一次,你會有不一樣的體會,我自己去學習一個新框架時,都會儘量將底層的代碼親手錄入一次,而不是用複製粘貼。
由於要實現前後端完全分離,所以需要在本地環境部署一個nginx伺服器,配置後前後端訪問時就不會出現跨域的問題。當然也可以將前端文件放到python項目中,然後使用路由的方式訪問,但這樣訪問時一般都會多出一層目錄出來,對於追求完美有強迫症的人來說還是很彆扭的,所以還是學多一樣技能,話說要配置這個服務還是挺簡單的。
1.安裝nginx服務
首先下載nginx的windows運行版和Windows Service Wrapper(將nginx安裝到系統服務的程式, 這樣就不用每次都要手動運行了)
解壓後有兩個文件
將nginx-1.11.5解壓到 E:\Service 目錄下
解壓Windows Service Wrapper,將裡面的winsw-1.9-bin.exe複製到 E:\Service\nginx-1.11.5 下,並改名為nginx-service.exe
然後在 E:\Service\nginx-1.11.5 目錄下創建一個xml文件,命名為nginx-service.xml,並粘貼下麵內容(如果你的路徑不是在E:\Service下,要註意修改配置文件中的路徑)
<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>Nginx Service</name> <description>High Performance Nginx Service</description> <executable>E:\Service\nginx-1.11.5\nginx.exe</executable> <logpath>E:\Service\nginx-1.11.5\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p E:\Service\nginx-1.11.5</startargument> <stopargument>-p E:\Service\nginx-1.11.5\nginx.exe -s stop</stopargument> </service>
運行cmd,輸入命令:E:\Service\nginx-1.11.5\nginx-service.exe install ,將nginx安裝成Windows服務
點擊我的電腦 右鍵 -> 管理 -> 服務 -> 看看是否有 Nginx Service 這個服務,有的話就表示安裝成功了
如果路徑寫錯了,也可以在停止服務後,輸入 E:\Service\nginx-1.11.5\nginx-service.exe uninstall 進行卸載
如果想停止服務,直接點停止好像停不了,可以打開Windows任務管理器,找到nginx-service.exe點右鍵,在彈出的菜單中點擊結束進程樹就可以了
2.修改nginx.conf配置信息
在 E:\Service\nginx-1.11.5\conf 文件夾找到nginx.conf文件,可以用Uedit或Notepad打開進行編輯,不要用系統自帶的記事本,用記事本編輯後可能因為編碼問題,nginx服務會啟動不了
將nginx.conf修改為下麵內容
worker_processes 1; #工作進程的個數,建議設置為等於CPU總核心數 events { worker_connections 1024; #單個進程最大連接數(最大連接數=單個連接數*進程數) } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 30; #gzip on; #伺服器的集群配置 upstream myweb { #fair; ip_hash; # 設置後端介面伺服器地址 server 127.0.0.1:9090 weight=1 max_fails=5 fail_timeout=5s; } server { listen 81; # 監聽80埠,如果被占用了,可以改成其他埠 charset utf-8; root E:\\Python\\simple\\html; # 前端html路徑,這裡可以修改為你放置前端html的路徑 server_name 127.0.0.1; # 當前服務的功能變數名稱,可以有多個,用空格隔開 location / { index Index.html index.html; } # 設置後端介面跳轉地址,訪問括弧中的地址時會自動跳轉到後端介面服務上 location ~* ^/(index|api)/ { # 這裡設置 #請求轉向自定義的的負載均衡伺服器列表 proxy_pass http://myweb; proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #後端的Web伺服器可以通過X-Forwarded-For獲取用戶真實IP proxy_connect_timeout 3; #nginx跟後端伺服器連接超時時間(代理連接超時) proxy_send_timeout 5; #後端伺服器數據回傳時間(代理髮送超時) proxy_read_timeout 5; #連接成功後,後端伺服器響應時間(代理接收超時) } } }
然後到系統服務中,啟動 Nginx Service 這個服務就可以了
打開瀏覽器輸入:http://127.0.0.1:81/ 就可以看到前端頁面了(由於前端比較菜,所以直接用H-ui前端自帶的圖片,沒有專門處理)
打開瀏覽器輸入:http://127.0.0.1:81/login.html就可以看到後端登錄頁面了
打開瀏覽器輸入:http://127.0.0.1:81/index/ 就可以看到上一篇中訪問 http://127.0.0.1:9090/index/ 的Hello World了(PS:要記得運行PyCharm,打開上一章的main.py文件,然後運行Debug,不然會無法訪問)
如果 Nginx Service 啟動不了,可以查看nginx的logs文件夾里的error.log日誌,看看提示什麼出錯了,對應進行修改,很多時候啟動不了,都是conf\nginx.conf配置文件沒有設置好,比如說80埠被占用了,需要修改埠等;或者裡面的路徑設置錯了,windows下的路徑都必須是E:\\xxx\\xxx 這種方式,用linux的路徑或少了\都會出錯,其他出錯的話可以查看error.log日誌後,將錯誤複製到百度進行找看解決方案
作者:AllEmpty
出處:http://www.cnblogs.com/EmptyFS/
有興趣的朋友可以加加python開發QQ群:669058475,大家一起探討。大家有問題的話可以在群里發問,當然我平時工作也非常繁忙不一定會及時回覆。
本文為AllEmpty原創,歡迎轉載,但未經同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。