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

来源:http://www.cnblogs.com/EmptyFS/archive/2017/10/17/7494816.html
-Advertisement-
Play Games

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原創,歡迎轉載,但未經同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、for迴圈套for迴圈,外面for每執行一次,裡面for執行10次,直到外面for執行完10次為止 運行結果: 2、外面1-for執行10次(0~9),2-for大於5退出迴圈 ...
  • 設置調整mq_queue的size*num如果大於預設(POSIX message queues),則需要調整系統限制和用戶限制,不然在mq_open是會報"Too many open files"的錯誤 1. man mq_overview命令可以瞭解到mq可以設置msg_max和msgsize_ ...
  • 1.在PHP開發種在很多的地方要涉及到數據類型的轉換,尤其是涉及到金額的數據類型,一定要轉換成float類型,否則在入庫的時候可能會因為數據類型的不同覆蓋掉之前的金額。(字元串和float類型相加) 2.數據類型的強制轉換:強制轉換成float類型。 ...
  • maven repository :maven的依賴查詢Alt+回車 導入包,自動修正Ctrl+N 查找類Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代碼Ctrl+Alt+O 優化導入的類和包Alt+Insert 生成代碼(如get,set方法,構造函數等)Ctrl+E或者Alt+ ...
  • 昨天發佈了 Hibernate 學習筆記第一篇後,今天第二篇來襲~ 此篇筆記是 Hibernate 學習的重點和難點,包括 Hibernate 中的映射關聯關係、Hibernate 的檢索策略與檢索方式(HQL、QBC)、Hibernate 的二級緩存,還包括管理 Session ,如何使 Sess... ...
  • 分類 功能點 Eclipse快捷鍵 IDEA快捷鍵 搜索 搜索文本 Ctrl + F Ctrl + F Ctrl + R 查找替換 Alt + P/A 逐個/全部替換 Alt + F3 查找當前選中詞 繼續搜索 Ctrl + K 向前 Ctrl + Shift + K 向後 F3 Shift + F ...
  • 參考鏈接:http://www.python(tab).com/html/2017/pythonhexinbiancheng_0904/1170.html(去除括弧) http://blog.csdn.net/eastmount/article/details/51082253 首先本文參考了上述兩 ...
  • Lambda表達式(匿名函數)實現了一次執行且無污染的函數定義,是拋棄型函數並且不維護任何類型的狀態。閉包在匿名函數的基礎上增加了與外部環境的變數交互,通過 use 子句中指定要導入的外部環境變數。C字元串以空字元('\0')為結束標誌,這使得C字元串不能保存像圖片、音頻、視頻、壓縮文件這樣的二進位... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...