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服务 ...
随机推荐
- jq ‘’操作‘’伪元素
1. 伪元素非 dom 元素,jq无法操作,但可以间接影响. 2. 操作方式 2.1 修改类 <!DOCTYPE html> <html lang="en"> ...
- Cordova+Vue快速搭建Hybrid App
前言 最近项目迭代需要开发一个app,由于项目组其他系统前端技术栈都是Vue,所以自己在需求评估的时候就初步敲定了Cordova+Vue的前端架构,后来查阅了不少资料,也掉了不少坑,这里总结一下,也算 ...
- VUE项目实现页面跳转
打开一个VUE项目,目录结构是这样的: 如现在有两个页面aaa和HelloWorld,路由配置在index.js中: import Vue from 'vue' import Router from ...
- linux c/c++ 获取文件大小
linux c/c++ 获取文件大小 #include <sys/stat.h> int FileSize(const char* fname) { struct stat statbuf ...
- Golang socket
1.本例子实现了一个简单的TCP echo.客户端发送Hello,服务端回应World. 参考:<Socket编程> 2.服务端代码 package main import ( " ...
- Android SDK无法更新的解决方法
一.说明: Android 更新sdk时访问google很慢,有时连接不上,可利用国内的某些镜像网站实现Android SDK在线更新. 二.解决方法: 在SDK Manager -> tool ...
- 雷林鹏分享:查看 XML 文件
查看 XML 文件 在所有主流的浏览器中,均能够查看原始的 XML 文件. 不要指望 XML 文件会直接显示为 HTML 页面. 查看 XML 文件 - Tove Jani Reminder Don' ...
- GRCh38基因组和注释文件探究
ensembl/release91: cat Homo_sapiens.GRCh38.91.gtf | grep -v "#" | cut -f9 | cut -f1,3,6,8 ...
- android-------Android Studio使用MAT分析工具遇到的错误
今天主要介绍一下我使用MAT工具分析文件时遇到的一个错误 Error opening heap dump 'a.hprof'. Check the error log for further deta ...
- CPU型号各个字母的含义
CPU 型号的含义 首先介绍 4 个数字的含义(以 i7-3540M) 第一位 3540M 中的 "3"代表:代, 3 表示第三代 第二位 3540M 中的 "5&quo ...