在 OpenWrt 系统中使用 Bottle Python 框架搭建 Web 应用

在 OpenWrt 系统中自带了 nodejs 和 python 两个脚本语言,这里选择使用 python 的 bottle 来搭建 web 应用,在 OpenWrt 中, python 都是阉割版的, 而 bottle 整个框架很小,而且采用的都是标准库里面的函数,兼容性比较小,而且模板路由,该有的都有。那为什么不采用 nodejs,nodejs 不是性能更好?主要是 nodejs 更新太快,我用的 Linkit Smart 7688 Duo 自带 nodejs 版本是 0.12,基本已经不支持了,而且考虑到 npm 依赖的问题, 128M的内部存储,去掉系统运行,还剩下 70M,想想运行 npm install,呵呵呵。

首先安装 Bottle, 通过 pip 安装即可: pip install bottle,新建一个目录,暂且用命名为 web,创建文件 webapp.py:

from bottle import route, run
from bottle import template, view

@route('/')
@view('index')
def index():
  return dict()

run(host='0.0.0.0', port=8080, debug=True)

这里用到了模板引擎,默认会在 views 文件夹里面查找,所以新建文件夹 views,新建 index.tpl 模板文件:

<!doctype html>
<html>
<head>
    <title>Bottle Web Framework</title>
</head>
<body>
    <p >
        Hello bottle micro framework!
    </p>

<body>
</html>

最后执行: python webapp.py,如果看到如下输出就表示已经运行起来了:

Bottle v0.12.17 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:8080/
Hit Ctrl-C to quit.

打开浏览器,访问 OpenWrt 所在 IP 地址,我的是:192.168.1.126:8080,就能访问页面了。