@(标签) [平穷发挥我的想象] [Openwrt] [Markdown] [Linux]
闲来无事 折腾点事,自从腾讯云和阿里云取消了免费的大学生服务器套餐。 ╮(╯▽╰)╭活在梦里,我已经不是大学生了呢。阿里上一个月几十上百的服务器租费,看着能让我冒一阵鸡皮疙瘩。想来自己真心没有闲钱来租一个服务器玩。要是弄个老机器开着当服务器。耗电不说,整天嗡嗡嗡的脑袋疼。思来想去,唯一满足以下几点的能让我架设服务器的只有家里的路由器了。
全天工作 :家里的路由器全天工作,星期一二四六会有个重启,喘口气;
功耗低 :12w不到的功耗,用一小时也就0.012度电,整个路由器算上家里的宽带消耗也就5~6块钱不到;
噪音小 :路由器也没机箱风扇,噪声基本为0;
性能尚可:有1核580MHZ,128RAM,跑一组静态服务,一组动态服务足以;
硬件准备
- 吃灰的U盘 : 路由器的FLASH是在太小,仅仅12MB,一定是不够用的,所以需要在路由器上挂载一个U盘。
- 小米路由器MINI : 本主,MINI内核基于Openwrt,这能做的事情就太多了啊。
- 同局域网电脑 : 用于对MINI进行配置,启动关闭服务等。
刷开发版固件
软件准备
下载开发版的ROM : 雷猴王想的很周全,刷了开发版ROM,并开启SSH后,据说没有保修,观众请三思。
ROM下载地址为:MiWiFi 官网。由于我用的是MINI,于是就下载官网开发版ROM,操作流程如下:- 步骤(1)
- 步骤(2)
- 步骤(3)如果你是其他型号,自行查阅相关型号官方说明,路由器刷机步骤则参照截图中官方刷机教程。
下载小米路由SSH工具 :有了SSH工具,用PuTTY和WinScp就可以搞事情了。将下载好的SSH工具重命名为miwifi_ssh.bin,放置于之前刷机用的U盘根目录即可。下载位置如图所示:
组装轻量级WEB服务
使用PuTTY开始搭建
接下来使用之前提到的PuTTY,点击文章中的高亮部分,即可到官网下载。下载好后,双击运行,IP地址填路由器网关地址,默认为192.168.31.1 端口号为SSH默认端口 22。然后点击Open按钮。输入用户名为root,密码为下载SSH工具时显示给你的root密码。当看到大大的ARE YOU OK,说明已经进入到小米路由的Shell中了,这是成功的一大步。
编译好的Python
这里直接提供编译好的Python下载,这个链接为MINI型号下编译好的Python2.7.5。通过之前提到的WinScp,直接解压好了,像windows平时复制黏贴文件一样,拖拽WinScp界面右侧U盘盘符下的/extdisks/sda1/python文件夹下即可。
配置Python环境变量
python的环境变量在Openwrt中的配置也很简单,打开/etc/profile 进行添加环境变量,参考如下:
vi /etc/profile
然后在文本最后,添加如下注册内容:
export PATH="/extdisks/sda1/python/bin:$PATH"
然后按ESC,再按两遍 Shift + z,保存好退出。然后直接更新环境变量。
source /etc/profile
由此Python环境变量即配置完成。尝试shell中输入python2.7,看到python呼出,即大功告成。
安装Bottle和Markdown2
在SSH下,直接运行如下:
pip install bottle markdown2
pip工具就能下载好bottle轻量web服务框架以及python的markdown2标记语言库。
开启静态服务器
首先在U盘根目录下创建WEB文件夹。然后修改系统 httpd。
vi /etc/sysapihttpd/sysapihttpd.conf
然后按 Ctrl + F,到文本末尾最后一个“}”前添加如下符合nginx语法的配置:
server {listen 8090;server_name _;access_log off;location / {root /extdisks/sda1/WEB;index index.html index.htm;}error_page 404 404.html;error_page 500 502 503 504 50x.html;location = 50x.html {root html;}}
代码演示中用的是8090端口,如果想定义其他也可。运行如下命令更新httpd服务:
/etc/init.d/sysapihttpd restart
如果没有出现error信息,代表重启成功,若出现,请检查配置代码。 由此静态资源服务器已创建成功。
防火墙设置
开启防火墙部分的设置:
vi /etc/config/firewall
在最后添加如下端口的配置内容:
config rule 'httpdwan'option src 'wan' option dest_port '8090'option proto 'tcp'option target 'ACCEPT'option name ''\''httpd wan accept tcp port 8090'\'''
端口请自行更改。然后重启防火墙进程:
/etc/init.d/firewall restart
WEB APP DEMO
最终在U盘下,建立自己的web动态服务相关的文件夹,创建python脚本test.py,例:
from bottle import route, run, template@route('/hello/<name>')
def index(name):return template('<b>Hello {{name}}</b>!', name=name)run(host='0.0.0.0', port=9527)
重新回到,上一张,配置开启9527端口的防火墙设置并重启。运行命令:python2.7 test.py 。
然后在浏览器中输入http://192.168.31.1:9527/hello/world 若出现Hello world内容,即Bottle服务器框架已能正常运行。
由此即可开始通过Python-bottle写自己的动态网页、建设自己的博客啦~。
DDNS服务设置
打开192.168.31.1(小米路由器的后台管理)。点选->高级设置->DDNS , 选择DDNS提供商,输入壳域名提供商那儿注册的账号名密码,以及壳域名地址并保存。大功告成。由此就可以通过你的壳域名访问小米路由器中的静态服务器地址和动态服务器地址啦~。
PS:这里不推荐花生壳,因为它总需要一个oray进程存活于局域网中的某台主机上,若关闭,DDNS即失效。 这里我用的是no-ip.com。注册后获取免费的壳域名。 我在自己购买的阿里顶级域名中进行修改解析记录,将www选项设置为CNAME,并设置为no-ip.com注册的域名地址。
若是要实现 HTTPS,还需准备一个阿里云或者者其他正规DNS解析域名。并添加HTTPS证书等操作。看以后有空再写一篇吧。
由上一大堆,折腾了一天,终于告一段落,自己的博客也算架设起来了,Openwrt可以玩的还有好多,这个春节有的折腾咯。