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后,暂且看不到任何辣眼睛的爆红提醒了。

    实践出真知~
  • 相关阅读:
    算法导论--平摊分析之聚集分析
    编译器开发系列--Ocelot语言3.类型名称的消解
    编译器开发系列--Ocelot语言2.变量引用的消解
    编译器开发系列--Ocelot语言1.抽象语法树
    算法导论--散列表的数学分析(精解)链表法
    Linux2.6内核协议栈系列--TCP协议2.接收
    日常‘说说’(回归 原森雨)
    那些玩枪战我特别想听到的声音!
    友链!
    晚安背后的秘密
  • 原文地址:https://www.cnblogs.com/NolaLi/p/10021464.html
Copyright © 2011-2022 走看看