V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sunhk25
V2EX  ›  Python

Windows IIS 服务器下配置 Flask WSGI 环境

  •  
  •   sunhk25 · 2019-02-28 17:28:47 +08:00 · 3258 次点击
    这是一个创建于 2120 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 现在的旧 Web 系统是在WindowsIIS服务器下运行。
    • 系统和语言老旧翻新想上Python3.6 + Flask +MongDB,现在所有客户的服务器也是 Windows 下跑的。所以也想在WindowsIIS上搭建FLask环境,但是 WSGI 好像对 IIS 不太友好。什么fastCGIUWSGI之类的。
    • 有没有哪位同学在 IIS 下搭建过Flask,WSGI环境,来给点建议,谢谢
    17 条回复    2019-03-04 10:39:44 +08:00
    uqf0663
        1
    uqf0663  
       2019-02-28 17:33:25 +08:00   ❤️ 1
    难道不是应该 IIS 直接反代 Python 自己的 http 服务吗?
    Patrick95
        2
    Patrick95  
       2019-02-28 17:33:58 +08:00   ❤️ 1
    没在 IIS 试过。
    以前用 Apache + mod_wsgi 搭过。
    sunhk25
        3
    sunhk25  
    OP
       2019-02-28 18:30:37 +08:00 via Android
    @uqf0663 服务器配置接触少,直接反代不太理解,就是说配置起来可行,不太难吗
    sunhk25
        4
    sunhk25  
    OP
       2019-02-28 18:32:12 +08:00 via Android
    @sunhk25 Apache 下的 mod cgi 配置好像挺流行的
    tomczhen
        5
    tomczhen  
       2019-02-28 18:48:32 +08:00 via Android
    给公司做小项目时部署过,用 wfastcgi,微软出品。
    tomczhen
        6
    tomczhen  
       2019-02-28 18:57:59 +08:00 via Android   ❤️ 1
    另外说一下,flask 自带的 Web server 别用在生产环节,直接反代虽然可行但不可取。
    sunhk25
        7
    sunhk25  
    OP
       2019-02-28 19:08:47 +08:00 via Android
    @tomczhen 原来还有 wfastcgi。

    下面这个博客看起来不错可以参考。
    使用 wfastcgi 在 IIS 上部署 Python Flask 应用
    https://liulixiang1988.github.io/shi-yong-wfastcgizai-iisshang-bu-shu-python-flaskying-yong.html
    dongxiaozhuo
        8
    dongxiaozhuo  
       2019-03-01 10:21:16 +08:00 via iPhone
    先想想为什么要用 WSGI 或者其他 CGI。如果没有那么的必要,可以用 gevent 或者 gunicorn 直接启动为 HTTP 服务。在此之前是不是有必要用 IIS,看你自己的产品或者程序的运行情况。比如 IIS 还要处理前端。
    xpresslink
        9
    xpresslink  
       2019-03-01 11:09:45 +08:00
    @dongxiaozhuo 请教一下,不用 WSGI 用什么? gunicorn 和 gevent 怎么在 windows 下跑?
    sunhk25
        10
    sunhk25  
    OP
       2019-03-01 11:32:21 +08:00 via Android
    @dongxiaozhuo 我的情况是前提下必须是 Windows,然后最理想的是继续用 IIS 服务器
    dongxiaozhuo
        11
    dongxiaozhuo  
       2019-03-01 11:51:49 +08:00 via iPhone   ❤️ 1
    @sunhk25 是我手残,Windows 下不能 gunicorn,gevent 也不那么好用,更不要提 uwsgi 了。或许你可以参考一下 stack overflow 上老哥们的意见,https://stackoverflow.com/questions/6823316/python-on-iis-how

    大概越过 IIS 直接用 Python 做 HTTP 服务更好一些。
    dongxiaozhuo
        12
    dongxiaozhuo  
       2019-03-01 11:52:41 +08:00 via iPhone
    @xpresslink 我手残了,Windows 下别用这些依赖来搞了,直接 Python 启 HTTP 服务更好。
    dongxiaozhuo
        13
    dongxiaozhuo  
       2019-03-01 11:55:29 +08:00
    或者 Windows Server 上启动一个 Linux 虚拟机来运行 Flask 应用。(如果 Windows Server 已经是虚拟机,不能嵌套虚拟化,还是算了。
    xpresslink
        14
    xpresslink  
       2019-03-01 14:24:44 +08:00   ❤️ 1
    哥给你说一下吧,当年也被这事儿折腾的够呛。

    如果不太要求性能,最省事的方案就是把 IIS 停了服务,

    直接安装一个绿色 Apache 然后用 Mod_WSGI 这个网上可以找到编译好的插件直接放 apache 目录里面, 设置一下 load module 就可以用了。这方案比较老旧,性能低,但是配置非常省事,全是绿色的。
    百度 Windows+Apache+mod_wsgi+Flask

    和这个类似的也有用 nginx FastCGI 的方案,因为 windows 没有 epoll 只能用 select,所以 nginx 的 windows 版也是打个酱油而已。
    百度 Windows 下 nginx+django+flup 搭建与配置

    还有一个方案是用 IIS,wFastCGI
    官方
    https://docs.microsoft.com/en-us/iis/configuration/system.webServer/fastCgi/application/
    https://www.cnblogs.com/xiaolecn/p/5111076.html

    其实历史上还有个很 B 的东西叫 HiconZoo
    http://www.helicontech.com/articles/running-django-on-windows-with-performance-tests/
    但是这折腾起来有点小复杂,建议不要弄了。
    chengxiao
        15
    chengxiao  
       2019-03-01 21:30:23 +08:00
    这个用 docker 来跑不是更好么?
    sunhk25
        16
    sunhk25  
    OP
       2019-03-04 10:24:08 +08:00
    @chengxiao
    在生产环境用 docker 好吗,性能不会有影响吗
    chengxiao
        17
    chengxiao  
       2019-03-04 10:39:44 +08:00   ❤️ 1
    @sunhk25 .....docker 不就是为生产环境而生的么....要是不能用在生产环境为什么还这么多人这么多公司用呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4361 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.