最近项目需要大量使用python实现功能处理,所有选择了ubuntu系统17.10来进行搭建。
需求背景需要同步调用shell脚本来实现系统功能,java调用会出现无法获取异步处理结果的问题,所以采用python 做web服务器进行获取。
架构形式nginx +fastcgi + web.py ,部署起来也非常简单。
首先需要先实现web.py的安装,这里使用系统自带的python2.7版本。
为了安装python组件方便,我这里使用了pip工具来进行web.py安装
pip install web.py
就可以安装完成。
web.py框架使用也是很简单,比如下面:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import web
urls = ("/.*", "hello")
app = web.application(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
app.run()
文件命名为start.py
给start.py权限 chmod +x start.py
启动web服务器可以使用命令:python start.py 8081
这样服务就可以访问8081端口并使用urls路由
如果使用fastcgi服务进行nginx代理访问需要在main方法加上下面的写法:
if __name__ == "__main__":
web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
app.run()
这样程序就可以通过fastcgi进行访问
nginx安装可以参考 http://www.jianshu.com/p/7017c500e0f9 这篇文章,注意需要安装fastcgi模块
fastcgi服务可以通过下面的地址访问并下载相应版本安装:
http://redmine.lighttpd.net/projects/spawn-fcgi/news
注意这里还需要安装flup
可以通过Pip进行安装
fastcgi服务通过下面的命令进行启动:
spawn-fcgi -d /path/to/www -f /path/to/www/start.py -a 127.0.0.1 -p 9002
下面要想外网访问需要使用Ningx代理,下面配置Nginx的fastcgi模块配置:
简写
location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # [1]
fastcgi_param PATH_INFO $fastcgi_script_name; # [2]
fastcgi_pass 127.0.0.1:9002;
}
下面就很容易使用python做服务器了,是不是很简单。
python有更加复杂功能的web服务框架,web.py是非常简单的,看情况使用。
python 调用shell和shell内容不方便写见谅。
网友评论