动态

详情 返回 返回

win10下 輕鬆搭建python web 開發環境(nginx + tornado + flask) - 动态 详情

本文參考了

  • piglite的大作windows下使用配置nginx + tornado + flask
  • GodLordGee的大作Windows 下Flask Nginx Tornado 協同工作的簡單例子

0 前言

  • linux下python web開發,已有較為成熟的方案,nginx + gunicorn|uwsgi + flask。
  • windows下python web開發,不建議使用apache或iis作為服務器,配置複雜度高,且經常會出現我等小白不能解決的問題。(.oo.)高手莫笑!
  • windows下建議採用nginx + tornado + flask方案。
    使用nginx web服務器,tornado充當wsgi,tornado負責監聽5000端口,轉發flask應用。

1. nginx安裝與配置

1.1 安裝nginx

訪問nginx官網,下載win版nginx,目前只有32位版。
nginx為免安裝程序,解壓後直接運行即可。本文假設將nginx程序解壓至c:\nginx文件夾中。

1.2 測試nginx能否運行

win+R快捷鍵,輸入cmd,進入命令行程序界面。

cd ..
cd ..
cd nginx
start nginx

即可啓動nginx服務器。啓動後在瀏覽器中輸入http://127.0.0.1或http://localhost後,即顯示nginx歡迎畫面。

如果未顯示,説明80端口被其它應用佔用了。
nginx其他常用命令有

nginx.exe -s quit       #停止服務
nginx.exe -s stop       #停止服務
nginx.exe -s reload     #重啓服務

1.3 配置nginx

修改nginx配置文件nginx.conf(在解壓目錄下的conf子文件夾下):
nginx默認配置為:

#gzip  on;
server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    ...
    ...
}


將其中部分配置行修改為

 server {
    listen       80;
    server_name  localhost; 
    #charset koi8-r; 
    #access_log  logs/host.access.log  main; 
    location / {
        root d:/myflask/src;
        #index  index.html index.htm;
        proxy_pass http://localhost:5000; 
    }
    ......
}


説明:

  • root d:/myflask/src,作用是將root根目錄設置為你flask源文件所在的目錄,服務器將在該文件夾中請求文件,俺的是d:/myflask/src
  • 註釋掉index行,因為後期所有html頁面將由flask模板文件負責生成。
  • 添加proxy_pass行,其用途為將localhost:80請求全部轉發到localhost:5000,也就是tornado監聽的端口。

1.4 重啓nginx服務器

若此時啓動nginx服務器,並在瀏覽器中輸入http://127.0.0.1,將會顯示如下出錯頁面。

給位看官莫慌,這是由於你的python服務器尚未啓動導致的,後期啓動tornado服務器後,瀏覽器就會顯示正常頁面。

2. 安裝python應用環境

win+R快捷鍵,輸入cmd,進入命令行程序界面。

pip install tornado
pip install flask

説明:如果flask安裝不成功,可升級pip。其命令為python -m pip install -U pip

3. 構建項目myflask

3.1 myflask結構

該目錄結構在pycharm中創建,項目結構如下:

graph TD
    A(myflask)--> B(venv) & C[server.py] & D{src}
    D-->E[app.py]
    D-->F[other.py]
    D-->G(templates)
    D-->H(static)
    G-->I[index.html]

3.2 server.py

server.py為使用tornado搭建的“容器”,其源碼:

# coding=utf-8
from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from src.app import app
from tornado.ioloop import IOLoop

s = HTTPServer(WSGIContainer(app))
s.listen(5000)  # 監聽5000 端口
IOLoop.current().start()

説明:若server.py與app.py在同一目錄下,則將app引入行修改為from app import app。

3.3 app.py

app.py為使用flask寫的應用,其源碼:

# coding=utf-8
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
    return 'Welcome to flask world!'

3.4 啓動tornado服務器

win+R快捷鍵,輸入cmd,進入命令行程序界面。

python d:/myflask/src/server.py

在瀏覽器中輸入http://127.0.0.1:5000後,會顯示Welcome to flask world!字樣。

3.5 重啓nginx服務器

win+R快捷鍵,輸入cmd,進入命令行程序界面。

start c:/nginx/nginx.exe

在瀏覽器中輸入http://127.0.0.1或http://localhost後,會顯示Welcome to flask world!字樣。


至此配置基本完成!
考慮到每次啓動服務器,都要手動輸入兩次命令,可考慮將nginx及tornado註冊為windows服務,詳見後續文章。

Add a new 评论

Some HTML is okay.