zoukankan      html  css  js  c++  java
  • flask+apache+mod-wsgi部署遇到的坑

      首先,看到这种方式部署,我也有疑问,为什么不用nginx,gunicorn。接手的项目,就先按照前人思路run起来。

      线上使用ubuntu系统,apache2,而给我玩耍的测试机是centos6.5,就按照这个装了httpd和mod-wsig,都是python2环境。一路下来,遇到下面几个问题:

      一、403Forbidden

      网站上各路大神基本指明是目录权限问题,开始只给我的项目目录指定权限:chmod -R 777 /root/autobase_pj,无效。后改:chmod 755 /root,403消除了。

      二、500错误,ImportError: No module named ...

      tail -f /var/log/httpd/error_log  可以看到是没找到flask相关依赖,所以得进到虚拟环境,在项目根目录下的.wsgi中配置一下path:

    import sys
    import site
    sys.path.insert(0,"/root/autobase_pj");
    site.addsitedir("/root/autobase/lib/python2.7/site-packages");
    from manage import app as application
    activate_this = 'root/autobase/bin/activate_this.py'
    execfile(activate_this, dict(__file__=activate_this))

      

      三、还是500错误,... flask/helpers.py", line 628, in send_file ...,TypeError: make_conditional() got an unexpected keyword argument 'accept_ranges

      日志说明flask内部文件报错,查看日志开始apache启动的时候:[notice] Apache/2.2.15 (Unix) mod_wsgi/4.6.2 Python/2.6 DAV/2 configured -- resuming normal operations。可见python版本不对,mod-wsgi默认是使用python2.6,执行mod_wsgi-express module-config,得到:

    LoadModule wsgi_module "/usr/lib64/python2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so"
    WSGIPythonHome "/usr"

    将其复制粘贴到/etc/httpd/conf/httpd.conf 一堆LoadModule中,保存重启service httpd restart即可。自己的网页就可以打开了。

      四、部分image和js无法加载

      apache跟nginx差不多,应该需要指定下静态文件路径,在httpd.conf最下面VirtualHost中WSGIScriptAlias 指定wsgi文件下面加上Alias /static /root/autobase_pj/app/static,你的静态文件路径,重启apache,暂且正常了。

      五、web首页控制台报错,Cannot read property 'defaults' of undefined TypeError: Cannot read property 'defaults' of undefined

      百度一番,js加载顺序有问题,在页面中加载jquery下面加载jquery.dataTables.js,保存,重启apache后,暂且看不到任何辣眼睛的爆红提醒了。

    实践出真知~
  • 相关阅读:
    【视频+图文】带你快速掌握Java中含continue语句的双重for循环
    【小白视频学Java for循环】3分钟学会Java的for循环,让看懂for循环嵌套再不是难事
    【机器学习基础】交叉熵(cross entropy)损失函数是凸函数吗?
    【tf.keras】tensorflow datasets,tfds
    【python3基础】命令行参数及 argparse
    【机器学习实战】验证集效果比测试集好怎么办?
    [主动学习--查询策略] 01 Core-set
    Monte-Carlo Dropout,蒙特卡罗 dropout
    NumPy 会自动检测并利用 GPU 吗?
    Linux 和 Windows 查看 CUDA 和 cuDNN 版本
  • 原文地址:https://www.cnblogs.com/NolaLi/p/10021464.html
Copyright © 2011-2022 走看看