小米路由器MINI架设WEB服务

news/2024/11/8 0:31:10/

@(标签) [平穷发挥我的想象] [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可以玩的还有好多,这个春节有的折腾咯。



http://www.ppmy.cn/news/178934.html

相关文章

小米 mini 可编程路由

通过openwrt 实现 可编程路由器 交互命令行 操作 无线网络环境 openwrt 简介 OpenWrt 是一个针对嵌入式设备&#xff08;通常是路由器或者软路由&#xff09;的 Linux 操作系统项目&#xff0c;提供了具有软件包管理功能的完全可写的文件系统&#xff0c;因此拥有了完全定制的…

一、玩转小米路由器mini之刷openwrt固件

这是2016年初搞的一个东西,主要是大学里一个学生账号只能使用一台设备登陆,当时手握手机,电脑,平板的我无奈的,但是我是不会向移动这等"恶势力"低头,于是乎,搞事情啊... 所需设备: 电脑一台: 安卓手机一部:装小米无线APP U盘:大于4G 过程步骤&#xff1b; 小米…

小米路由器mini刷老毛子教程

## 小米路由器mini刷老毛子教程 使用到的工具&#xff1a;PuTTY、WinSCP 使用到的文件&#xff1a;小米开发版系统文件&#xff08;miwifi_r1cm_firmware_2e9b9_2.21.109.bin&#xff09;、miwifi_ssh.bin、breed文件&#xff08;breed.bin&#xff09;、潘多拉固件&#xff08…

小米路由器 mini 刷 Padavan 详细教程

前两天买了个小米路由器 mini&#xff0c;开启我的智能路由器时代&#xff0c;但小米自家的固件用两天就腻歪了&#xff0c;于是网上查找比对了一些推荐固件&#xff0c;最后决定刷老毛子 Padavan&#xff08;主要是集成功能强大&#xff0c;方便智能上网和去广告&#xff09;&…

小米路由器mini刷openwrt

https://www.jianshu.com/p/bdd79a87f5fe

【Linux之 vi 文本编辑器】

1. 为什么应该学习 vi 在现在这个图形化编辑器和易于使用的基于文本编辑器的时代&#xff0c;比如说 nano&#xff0c;为什么还应该学习 vi 呢&#xff1f; • vi很多系统都预装。如果系统没有图形界面&#xff0c;比方说一台远端服务器或者是一个X 配置损坏了的本地系统&#…

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别&#xff1f; 先了解一下JavaScript 数据类型有哪些&#xff1f; javaScript 中有8种基本的数据类型&#xff1a;7种为基本数据类型&#xff0c;而Object 为复杂数据类型 基本数据类型&#xff08;原始数据类型&#…

信息与编码SCUEC DDDD 期末复习整理(1)

1.1948年&#xff0c;美国数学家香农发表了题为“通信的数学原理”的论文&#xff0c;从而创立了信息论。 2.不可能事件的自信息量是&#xff08;∞&#xff09;&#xff0c;必然事件的自信息量是&#xff08;0&#xff09; 3. 4.差错控制的主要方式有前向纠错方式FEC&#x…