用web.py框架写的程序
一、Nginx (做代理)+Gunicorn(后端服务器)
因为gunicorn是开启多个worker进程,如果程序有一个全局的对象,需要实时更新访问共享,各个进程之间是不能共享的,可以视情况只开一个worker
二、Nginx(FastCGI)+Spawn-fcgi +flup
nginx配置
启动文件:
或者
启动命令
参数 n 显示程序打印信息
web.py的session 在这种部署方式有问题,每次请求session会失效
三、Apache2 (apr,apr-util)+ mod_wsgi
apr-1.5.2.tar.gz
apr-util-1.5.4
httpd-2.4.23
mod_wsgi-4.3.0
centos编译安装mod_wsgi的问题
安装mod_wsgi到apache
mod_wsgi-4.3.0
编译时 如果报错:
已经安装的libpython2.7.so.1.0有问题(改版本可能是被编译成了32位),需要重新编译安装python
1.注释掉 python源码下setup.py下的两行代码
|
|
后会在/usr/local/python2.7/lib目录下重新生成 libpython2.7.so.1.0,
将其拷贝到/usr/local/lib
重新编译 mod_wsgi
最后输出
证明成功
==============
httpd.conf的配置(Apache版本Apache/2.4.23)
报错找不到模块
main.py中加入
如果程序 有用路径,最好都用绝对路径。
因为http也是启动了多个进程来处理请求,所以全局的对象也不能共享,
不会预加载处理 ,并不会随服务器启动而执行
=====================
对于需要全局共享的简单数据类型,可以用外部存储 比如 memecached缓存,redis,文件。
但是类实例的复杂对象,要么开一个进程处理,要么 改程序 换种方法实现。
四、uwsgi
没实践过
好像 该服务器 ,有文件更新,会自动重启