win10下 轻松搭建python web 开发环境(nginx + tornado + flask)

elvain

本文参考了

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.1http://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.1http://localhost后,会显示Welcome to flask world!字样。


至此配置基本完成!
考虑到每次启动服务器,都要手动输入两次命令,可考虑将nginx及tornado注册为windows服务,详见后续文章。

阅读 661
1 声望
0 粉丝
0 条评论
你知道吗?

1 声望
0 粉丝
宣传栏