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后,暂且看不到任何辣眼睛的爆红提醒了。
flask+apache+mod-wsgi部署遇到的坑的更多相关文章
- django apache 通过wsgi部署
生产上部署django 1. 修改settings关闭debug DEBUG = False ALLOWED_HOSTS = ['*'] 2. 安装wsgi yum -y install mod_ws ...
- window10下部署flask系统(apache和wsgi)
公司有一个小系统,通过url和其他系统进行数据交互(有点土). 因此,利用flask写了一个小程序. 现在,考虑到并发问题(flask自身是不会并发的),准备部署在apache+wsgi环境. 网上百 ...
- windows下apache + mod_wsgi + python部署flask接口服务
windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...
- Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
前言 说是前言,纯粹就是吐槽. 假设你赶时间.全然能够跳过这部分,我保证不会在这里隐藏不论什么实用的内容. 人上年纪后.可能冲劲不足,我花了大概两周的时间才成功的将flask部署到windows上.还 ...
- Flask学习-Flask基础之WSGI
一.WSGI为什么会出现? 在学习一个东西之前,我们肯定想知道:它为什么会出现?那么,WSGI为什么会出现呢? 我们知道,部署一个web应用,经常需要使用nginx.apache或者IIS等web服务 ...
- [Django笔记] Apache + mod-wsgi 环境部署所遇到的各种问题总结
在一台CentOS7机器上配置Django+apache运行环境 Django安装 python2 or python3 ? 一般情况下Linux系统都有自带python2,本机CentOS7上的是p ...
- CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程
Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...
- Ubuntu16.04 apache2 wsgi 部署django
在Ubuntu16.04上部署django其实还算简单直观,最重要的问题就是路径设置正确,并且保证版本统一,这个测试是在 Apache/2.4.18 (Ubuntu) apt-get install ...
- Apache Mod/Filter Development
catalog . 引言 . windows下开发apache模块 . mod进阶: 接收客户端数据的 echo 模块 . mod进阶: 可配置的 echo 模块 . mod进阶: 过滤器 0. 引言 ...
- 基于flask+gunicorn+nginx来部署web App
基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...
随机推荐
- adb shell命令后出现error: device not found错误提示
在cmd中输入adb shell进入linux shell环境前,需要把android模拟器打开(本文都是针对模拟器而言,并非真机).如果启动好了模拟器,且输入adb shell命令后出现error: ...
- 《剑指offer》第五十七题(为s的连续正数序列)
// 面试题57(二):为s的连续正数序列 // 题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数). // 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结 ...
- 《剑指offer》第四十五题(把数组排成最小的数)
// 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3 ...
- 关于TeeChart使用我会持续更新
关于TeeChart使用我会持续更新 这篇文章中我是在Winform窗体使用TeeChart2011控件,通过定时器实现了实时绘制曲线图(三个序列). 先上一下效果图: 1.TeeChart2011. ...
- 看到篇博文,用python pandas改写了下
看到篇博文,https://blog.csdn.net/young2415/article/details/82795688 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
- linux权限管理之基本权限
基本权限 UGO ======================================================== 文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件 ...
- POJ-3107 Godfather 求每个节点连接的联通块数量
dp[n][2],维护儿子的联通块数量和父亲的联通块数量. 第一遍dfs求儿子,第二遍dfs求爸爸. #include<iostream> #include<cstring> ...
- Spring Batch 批量处理策略
为了帮助设计和实现批量处理系统,基本的批量应用是通过块和模式来构建的,同时也应该能够为程序开发人员和设计人员提供结构的样例和基础的批量处理程序. 当你开始设计一个批量作业任务的时候,商业逻辑应该被拆分 ...
- 跨域和jsonp的原理
什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制. 所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子: h ...
- 一‘php文件系统
一.获取文件信息 ——FILE——,获取当前文件的绝对路径,包含文件名, __DIR__等价于dirname(__FILE__),不包含文件名的路径,