因为要运行b4i的buildserver,所以新配的电脑不能切到linux下工作。直接在macosx下部署python-bottle应用。其实可以用一些虚拟技术,但我还没学过。
我选择了轻量级的lighttpd,使用fastcgi来使用python+bottle的组合。
具体方法如下:
1、安装并配置lighttpd
$ brew install lighttpd
启动lighttpd:$ brew services start lighttpd
打开配置文件/usr/local/etc/lighttpd.conf
,添加以下内容
fastcgi.server = ( "/app.py" =>(( "socket" =>"/tmp/fastcgi.socket",
"bin-path" =>"/usr/local/bin/python3 /usr/local/var/www/app/app.py",
"max-procs" =>1,
"check-local" =>"disable"
))
)
url.rewrite-once = (
"^/favicon.ico$" =>"/favicon.ico",
"^/(.*)$" =>"/app.py/$1",
)
这里我是参考了廖雪峰的python教程:Linux配置Lighttpd+Python+web.py应用
其它的还要修改module.conf,照着廖雪峰教程里的。我自己把include “conf.d/fastcgi.conf”前的#去掉了。
2、安装配置Python
在/usr/local/var/www/app下建立app.py,内容如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import bottle
import os
from bottle import route, run, view
import home
@route('/')
def index():
return 'Hello World'
APP_ROOT = os.path.abspath(os.path.dirname(__file__))
bottle.TEMPLATE_PATH.append(os.path.join(APP_ROOT, 'templates'))
app = bottle.default_app()
if __name__ == '__main__':
from flup.server.fcgi import WSGIServer
WSGIServer(app).run()
这里参考自:bottle + lighttpd + fastcgi。
因为我实际测试时发现mac自带的python2会提示import _dummy_thread的错误,发现dummy_thread是python3专用的,因为flup1.03只支持python3,所以又用brew安装了python3。应用默认使用python3。
如果要用python2的话就不要用flup,把
from flup.server.fcgi import WSGIServer
WSGIServer(app).run()
换成
run(host='localhost', port=8080, debug=True)
安装所需模块(使用python3用的easy_install):
sudo easy_install-3.5 flup
sudo easy_install-3.5 bottle
3、重启lighttpd进行测试
$ brew services restart lighttpd