個人第一個python web開發框架(7)——本地部署前端訪問服務器

  PS:本系列內容進度節奏會放的很慢,每次知識點都儘可能少一點,這樣你們接觸的知識點少了,會更容易理解,由於少便是多。另外,對於後面代碼部分,雖然儘可能不用那些複雜的封裝和類,但它並不表示看了就能所有記住,並懂得每一個函數的用法,在何時去調用,清楚它輸入的參數類型、能處理的參數類型和輸出的結果是什麼。它須要動手去調用,去大量的測試,這樣才能真正掌握。對於初學者,最好將這些函數和測試用例全都照着錄入一次,你會有不同的體會,我本身去學習一個新框架時,都會盡可能將底層的代碼親手錄入一次,而不是用複製粘貼。html

  因爲要實現先後端徹底分離,因此須要在本地環境部署一個nginx服務器,配置後先後端訪問時就不會出現跨域的問題。固然也能夠將前端文件放到python項目中,而後使用路由的方式訪問,但這樣訪問時通常都會多出一層目錄出來,對於追求完美有強迫症的人來講仍是很彆扭的,因此仍是學多同樣技能,話說要配置這個服務仍是挺簡單的。前端

 

  1.安裝nginx服務python

  首先下載nginx的windows運行版和Windows Service Wrapper(將nginx安裝到系統服務的程序, 這樣就不用每次都要手動運行了)linux

  點擊下載nginx

  解壓後有兩個文件web

  

  將nginx-1.11.5解壓到 E:\Service 目錄下windows

  

  解壓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下,要注意修改配置文件中的路徑api

<?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|user|upload)/ { # 這裏設置
            #請求轉向自定義的的負載均衡服務器列表
            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 本文歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然視爲侵權。

python開發QQ羣:669058475(本羣已滿)、733466321(能夠加2羣)    做者博客:http://www.cnblogs.com/EmptyFS/

相關文章
相關標籤/搜索