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
j0shfan
V2EX  ›  Python

Apache2.4 + mod_wsgi + Flask 的问题

  •  
  •   j0shfan · 2020-06-11 11:32:39 +08:00 · 2083 次点击
    这是一个创建于 1625 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位大佬,不知道有无以上三件套的经验。
    我这两天搞这个快疯了,
    先上下各版本:
    win10
    python 3.7.7 64bit v1900
    Flask 1.1.1
    mod_wsgi 4.5.24 ap24vc14
    Apache2.4.43 Ire 312 x64 vc14
    版本应该没问题吧
    说说我的步骤
    1)python virtual env 搭建完成
    2)flask 应用非生产环境测试完成
    3)venv 安装了 mod_wsgi,编写 wsgi 文件
    4)使用 mod_wsgi 命令 mod_wsgi-express module-config
    这里出了个问题,就是在虚拟环境中只能显示 LoadModule 和 WSGIPythonHome, 没有 LoadFile 也就是 python.dll 文件
    于是我把 LoadModule 和 WSGIPython 改成 python 主目录和 dll 文件
    5)继续修改 httpd.conf
    主要有监听端口,还有一个 httpd-vhost.conf 加载
    6)修改 httpd-vhost.conf
    增加了 virualhost *:5000 的配置,其中 WSGIScriptAlias 指向.wsgi 文件


    然后运行,然后碰到问题是说,无法加载 Flask 模块,也就是虚拟环境下的包的问题
    我尝试
    1 )在 httpd-vhost 下的 5000 配置中增加 WSGIDaemonProcess python-path,因为是 windows,这个 WSGIDaemonProcess 没用
    2 )根据 flask 文档中对虚拟环境中使用 mod_wsgi 的说明,在.wsgi 文件中增加 activate_this.py , 尝试 python 内激活虚拟环境,结果一直报错(这个 activate_this.py 是从 virtualenv 包里安装后指定的),这里面可能有 Bug
    3) 尝试在.wsgi 文件中添加 sys.path.insert venv/Lib/site-package path
    结果:apache 2.4 能运行,但是任何请求都没有反馈,access 和 error log 没有新记录

    接着我也尝试了直接在系统中安装 python 包,搭建 python 环境,修改了 httpd.conf 之后,apache2.4 和上面一样,没有回复,access 和 error log 没有新记录

    因为 flask 应用已经全完成了,如果按照网上的 python 版本,python 包的版本也要改变,因此没法走这个回头路。

    求教各位大佬!
    10 条回复    2020-06-11 18:59:28 +08:00
    Latin
        1
    Latin  
       2020-06-11 11:36:20 +08:00
    为啥要部署在 win 上?
    j0shfan
        2
    j0shfan  
    OP
       2020-06-11 11:46:45 +08:00
    @Latin 部门的小应用,然后直接拿一台工作站当服务器。已经在考虑要不要使用 docker 了,但是公司这个服务器没法连外网,就是这样调试放不方便?也是醉了
    xulolololololo
        3
    xulolololololo  
       2020-06-11 12:15:02 +08:00 via Android
    建议:工作站装成 linux 系统,或者 windows 跑 docker,windows 下的奇怪问题多得你怀疑人生,windows 不适合服务器开发,这点是确定的。如果工作站不能换系统,直接装个虚拟机,虚拟一台 linux 系统出来,这不香吗。这可以节省一堆时间去摸鱼。
    j0shfan
        4
    j0shfan  
    OP
       2020-06-11 13:17:33 +08:00
    @xulolololololo 可以,这次是真的跪了,应该用 Linux 的
    tomczhen
        5
    tomczhen  
       2020-06-11 13:33:16 +08:00 via Android
    IIS➕wfastcgi
    wuwukai007
        6
    wuwukai007  
       2020-06-11 14:37:00 +08:00
    waitress 用这个
    qile1
        7
    qile1  
       2020-06-11 15:30:11 +08:00 via Android
    nginx 代理比较简单,静态文件分开处理,我是把 flask 前面套了个 wsgi 的 Tornado,这样比较简单
    nginx 下载解压修改下代理端口,直接运行就可以,起 tornado 后就可以啦

    Windows 部署你有没有发现 flask 有卡死情况?
    ytymf
        8
    ytymf  
       2020-06-11 16:52:05 +08:00
    win 就直接 IIS 加 wfastcgi 就好了啊,微软官方出品
    j0shfan
        9
    j0shfan  
    OP
       2020-06-11 18:51:58 +08:00
    @tomczhen
    @ytymf
    感谢建议!我就需要这样的方案建议!!周末试试!
    j0shfan
        10
    j0shfan  
    OP
       2020-06-11 18:59:28 +08:00
    @qile1
    感谢建议!
    没有吧,没碰到过。开多线程如何?我瞎蒙的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:33 · PVG 02:33 · LAX 10:33 · JFK 13:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.