openwrt+aria2+移动硬盘打造智能NAS系统

一两年前(记不得是一年前还是两年前了)买了巴法络的WZR-HP-G300NH2型号路由器,路由器配置不算高,但还是可以各种折腾。先刷了dd-wrt,但是感觉不够智能所以刷了openwrt,接着挂载移动硬盘安装迅雷Xware远程下载,autoddvpn智能翻墙,才知道原来路由器可以这么玩!前几天路由器时不时的掉线,估计是系统出了问题,重刷了固件,随便把当初刷机时收集的资料整理了一份分享给大家。

一、TFTP刷机法刷OPENWRT(该部份只适用于BUFFALO WZR-HP-G300NH2)

1、根据路由器cpu类型下载适合自己路由器的openwrt固件备用,我选择的是14.07下的openwrt-ar71xx-generic-wzr-hp-g300nh2-squashfs-tftp.bin
openwrt固件选择基础知识:
factory用于原厂固件下刷机;sysupgrade是openwrt固件下升级用;tftp用于uboot启动模式下tftp刷机。
squashfs和jffs2区别是:squashfs会占用空间存放系统必要的文件,并且这些文件是只读的,当系统损坏时,可以执行firstboot恢复初始状态。而jffs2是可以改写的,你可以删除一些系统部件而获得更多的空间,但缺点是一旦系统崩溃,有可能你无法使用firstboot脚本重建初始系统。

2、在本地连接中设置静态IP地址,设置参数如下
IP地址:192.168.11.2 ; 子网掩码:255.255.255.0 ; 网关/dns 192.168.11.1

3、关闭windows防火墙及其他防火墙,拔掉多余网线,只留wan口旁的lan口与电脑连接(这步很重要,不设置会无法用tftp上传固件)

4、设置静态路由(windows7设置方法,刷机时的所以命令都在cmd内输入)
在cmd中输入以下命令:

netsh interface ipv4 add neighbors 11 192.168.11.1 02-aa-bb-cc-dd-1a

可以用route print 命令先看网卡端口,上面命令中写的是11,需改成自己的,一般为Interface List下面一行的头一个数字)
5、tftp命令上传固件刷机,路由器插上电源后,仔细观察网卡灯,顺序为1.所有灯全亮,2.只剩插网线的lan口灯亮,3.闪烁几下暗掉后请准备,再亮的同时按回车执行下面命令,此处为要点,一定要掌握好时机(即网卡灯第三次亮时按回车)。

tftp -i 192.168.11.1 put d:\openwrt-ar71xx-generic-wzr-hp-g300nh2-squashfs-tftp.bin

上传成功会显示传输成功,上面的d:\openwrt-ar71xx-generic-wzr-hp-g300nh2-squashfs-tftp.bin请改为自己放固件的路径和文件名

6、tftp上传的时间很快,但是上传后等待时间会有点长,一般为7、 8分钟,这时什么都不要做,千万不要断电,路由会自己重启

7、删除静态路由,改ip地址为自动获取

netsh interface ipv4 delete neighbors 11 192.168.11.1 02-aa-bb-cc-dd-1a

8、成功后openwrt的ip为192.168.1.1,默认用户名密码root。

二、安装软件挂载移动硬盘并共享

使用openwrt过程中会用到WinSCP和PuTTY,先自行在网上搜索下载。

1、用PuTTY连接至路由

2、输入以下命令(#号及后面的为注释不要输入):

opkg update     #更新软件列表
opkg install luci-i18n-chinese #安装中文web界面
opkg install kmod-usb-storage block-mount kmod-fs-ext4 luci-app-samba samba36-client samba36-server hdparm     #安装共享等
reboot  #重启路由

3、挂载与共享设置
浏览器输入192.168.1.1进入路由器web界面,点“系统”菜单选择“挂载点”选项

在挂载点页面的挂载点处选择要挂载的硬盘分区,可点“修改”进行相关设置,注意下图中挂载点要显示的目录名称与文件系统格式设置,设置好后注意选择保存。

点“服务”菜单选择“网络共享”选项,在网络共享页面点添加设置共享目录,目录处输入上图中设置的挂载点目录名称,选择允许匿名用户,创建权限和目录权限都设置为7777,选择保存设置完毕。

设置好后用PuTTY连接至路由,用以下命令启动共享

/etc/init.d/samba enable

4、设置usb硬盘自动休眠

在web管理页面点“系统”菜单选择“启动项”选项,在启动项页面的“本地启动脚本”内输入以下命令,使移动硬盘5分钟无操作便进入休眠,休眠时接到读写命令会自动唤醒进入工作模式。

hdparm -S 60 /dev/sda2

注:hdparm -S 60 /dev/sda2 设置超时值(5分钟)使硬盘进入休眠模式(省电模式),这个S数值12=1分钟,所以60=5分钟(60/12); /dev/sda2 为挂载的硬盘路径,ls /dev/sda*查看你的盘符。

至此挂载移动硬盘及共享设置全部完成!

三、安装aria2下载软件

我最初用的openwrt下载软件是迅雷自家的Xware,后用了arir2发现它各种方便,甩Xware几条街。
1、安装Aria2

opkg update
opkg install aria2 sudo  #安装aria2与sudo

2、配置Aria2
Aria2有两种下载模式,一种是命令行下载模式,一种是RPC Server模式.前者不建议使用,后者的使用方式很方便. RPC模式就是启动之后什么也不做,等着通过RPC接口接受下载请求.下载完也不会退出,一直等待. 使用命令行加参数的方式配置Aria2非常不推荐,建议使用配置文件的方式,下面贴出一份配置文件。

##允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许非外部访问
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
#设置加密的密钥,token验证
rpc-secret=token
#禁用IPv6, 默认:false
disable-ipv6=true
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=3
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=5
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
#max-overall-upload-limit=0
#单文件速度限制
#max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#日志文件,如果不需要日志,这一行可去掉
#log=/app/aria2/Aria2.log
#这两个是记录和读取下载历史用的,断电和重启时保证下载任务不会丢失,如果有时aria2不能启动,清空这里面的内容就行了
input-file=/app/aria2/aria2.session
save-session=/app/aria2/aria2.session
#定时保存会话,每5分钟自动保存错误或未完成的下载,如果为 0, 只有 aria2 正常退出才回保存,默认 0,需要1.16.1之后的release版
save-session-interval=300
#文件保存路径, 默认为当前启动位置
dir=/usb/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

将上面的配置文件保存为aria2.conf(注意保存时编码选择为ANSI,否则会出现未知错误),用WinSCP新建/app/aria2目录,并将aria2.conf保持在里面,在/app/aria2新建aria2.session文件(目的请见上面的配置注释)

aria2.session也可在终端用命令建立:

cd /app/aria2   #进入/app/aria2 目录
touch aria2.session  #新建aria2.session文件

3、设置开机自启动

在web管理页面点“系统”菜单选择“启动项”选项,在启动项页面的“本地启动脚本”内输入以下命令,设置开机自启动。

sudo -u nobody  aria2c –conf-path=/app/aria2/aria2.conf -D

注:以用户nobody运行aria2,以解决aria2下载的文件的权限问题,-D 意为后台执行

至此,aira2安装设置已全部完成,aria2下载可使用迅雷离线导出百度网盘助手115下载助手Aria2c Integration等插件解决,本文不再赘述。

linux主机安装nginx实现反向代理Dropbox

Dropbox可以方便的分享自己的文件,只需把相关文件存放在Dropbox的Public文件夹即可分享。但众所周知,国内是无法访问Dropbox。Nginx是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器,可实现网站的反向代理。为此,我特意为我的dropbox外链建立了一个反向代理,以方便国内无阻的访问。

0、需具备的条件
一台在国外的linux主机,我使用的系统是centos 6.6

1、nginx安装
终端连接自己的vps,输入下以命令安装nginx

wget http://repo.webtatic.com/yum/el6/i386/webtatic-release-6-5.noarch.rpm
rpm -Uvh webtatic-release*rpm
yum --enablerepo=webtatic install nginx18

2、设置
在/etc/nginx/conf.d 文件夹下新建一个后缀为conf的文件,如dropbox.conf,并输入如下代码:

server{
listen 80;
server_name www.xxx.com;
location / {
proxy_pass https://dl.dropboxusercontent.com/u/0000000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

上面代码中www.xxx.com为你要使用的网址,https://dl.dropboxusercontent/u/0000000/ 是你Dropbox的Public文件夹网址。

3、启动
设置开机自启并运行

chkconfig nginx on
/etc/init.d/nginx start

4、Google Docs代理
nginx也可以制作Google Docs代理,不过不用这么麻烦,已有国内牛人为我们搞定了一切,如下面我为大家推荐的GDGDocs。
GDGDocs是由南阳谷歌开发者社区搭建的一个无障碍访问 Google Docs 解决方案,使用方法很简单,只需将 Google Docs 域名替换为 www.gdgdocs.org即可。
如要访问:
https://docs.google.com/forms/d/1PoJsZqMWld_ySoZbXfCU1xjH33ijjBNdFAU8zVE3Db8/viewform
只需要修改docs.google.com为www.gdgdocs.org即可访问:https://www.gdgdocs.org/forms/d/1PoJsZqMWld_ySoZbXfCU1xjH33ijjBNdFAU8zVE3Db8/viewform

5、附nginx基本配置与参数说明

#运行用户
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;

#全局错误日志及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

#工作模式及连接数上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;

#单个后台worker process进程的最大并发链接数
worker_connections 1024;

# 并发总数是 worker_processes 和 worker_connections 的乘积
# 即 max_clients = worker_processes * worker_connections
# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4 为什么
# 为什么上面反向代理要除以4,应该说是一个经验值
# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
# worker_connections 值的设置跟物理内存大小有关
# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
# $ cat /proc/sys/fs/file-max
# 输出 34336
# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
# 使得并发总数小于操作系统可以打开的最大文件数目
# 其实质也就是根据主机的物理CPU和内存进行配置
# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
# ulimit -SHn 65535

}

http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log logs/access.log main;

#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;

#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;

#开启gzip压缩
gzip on;
gzip_disable “MSIE [1-6].”;

#设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;

#设定虚拟主机配置
server {
#侦听80端口
listen 80;
#定义使用 www.nginx.cn访问
server_name www.nginx.cn;

#定义服务器的默认网站根目录位置
root html;

#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;

#默认请求
location / {

#定义首页索引文件的名称
index index.php index.html index.htm;

}

# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {

#过期30天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}

#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}

}
}

为微信公众号制作全文输出的RSS

自从Google关闭Google Reader以来,RSS阅读就一直被唱衰,大卡们都认为微博微信等的兴起使人们无暇阅读长篇大论,零碎化阅读工具将取代RSS阅读。但对于重度RSS依赖者视乎并不这样认为,微博、微信虽然轻巧,但不利于系统化的阅读,且在信息化爆炸的时代,微博很容易错过总要的信息。

微信公众号我认为它绝对是一个奇葩产品:封闭,google、百度基本搜索不它他的内容,也没有RSS输出;阅读不便,只能在手机微信上阅读……,对于我来说它似乎没有任何优点。但是,很多写作者可能是出于营销的目的都只发或优先发文章于他的微信公众号上。学习是不进则退,作为知识获取者的我们不可能因为工具的不便就不阅读了,我们还得使用它!

难道微信公众号就完全不可能输出RSS,方便各种工具阅读?答案是否定的!网络牛人们早就找出了多种方法,并且写成了程序方便我们使用。今天我就为大家介绍一款可以为微信公众号制作全文输出的RSS工具,它的源码在:https://github.com/wlwr/rss。我直接使用的是作者搭建的演示程序:http://rss.wlwr.net,它的使用很简单:

第一步:在搜狗微信搜索中搜索你想要全文输出RSS的微信公众号,如我搜索的财税名人“第三只眼”。

第二步:选择你要找的公众号,在公众号页面的地址栏复制openid号,粘贴入http://rss.wlwr.net/页面的相应位置。

第三步:点搜索按钮形成RSS,就此可以用RSS工具阅读了!

后记:可能是搜狗微信搜索反爬虫的原因,该工具有时会报错,但还是可以凑合使用。

人生不再重来

看过的印度电影一直都是深刻的,都想表述对某些事情的看法。今天看的这部《人生不再重来》也不例外。

卡比尔、阿琼、依姆兰是大学时期被誉为三个火枪手的好兄弟,大学毕业前约定要进行一次西班牙的公路旅行。因为各种原因与借口,这个计划拖延到了四年后卡比尔与娜塔莎结婚前夕,以卡比尔单身旅行为理由终于如愿以偿的实行。

在这次旅行中影片以依次解开三人心结的形式讨论了事业、家庭、亲情、婚姻等问题。也为我们阐述了一些简单,但我们极易遗忘的道理。

阿琼八岁的时候父亲就去世了,留给他母亲一大笔债务,所以他很小就认为只有钱是万能的,他每天拼命的工作,计划着拼命赚钱然后在四十岁退休,工作成了他生活的全部。阿琼的前女友就为此和他大吵而分手:“你的工作不是你生活的全部,那只是一部分,就像我们的关系也是你生活的一部分”。可是阿琼并没有明白这个道理。直到挑战了他所恐惧的潜水后与莱拉的对话才让他明白:他过去一直都活在盒子里,人唯一一次应该呆在盒子里是他死的时候。而现应该做的事是及时行乐,先充实地度过今天,之后再去考虑四十岁的事。

依姆兰的生父在依姆兰出生前就抛弃了他们母子俩,依姆兰非常犹豫是否要去见见他的父亲,搞明白父亲为什么要抛弃他,搞明白父亲对待他的态度。跳伞让依姆兰明白了自己应该直面恐惧,一次酒吧斗殴被拘事件得以让依姆兰与生父相见,依姆兰最终可以审问他的父亲了。父亲认为他只是做出了各自的选择:你母亲想要个孩子,她想成为母亲;我有别的梦想,我想成为画家,我想画画…想环游世界,我爱她,但是…我们各自做出了选择!依姆兰似乎从对话中悟到了什么……(这段看得不是很明白)

卡比尔在与女友娜塔莎的相处过程中发现娜塔莎变了,她变得很有占有欲、她只想掌控卡比尔的生活,但卡比尔说:我想有个伴但、但我也想要自己的生活!卡比尔向娜塔莎求婚也只是场误会,卡比尔怕娜塔莎伤心,怕自己违背了自己的承诺,怕无法面对双方的父母……就一直延续着这误会。在奔牛节放牛的最后一刻,卡比尔最于释怀了自己,要过自己的生活,他要对娜塔莎说,对不起,但我不能跟你结婚。

影片算是完美的阐述,完美的收场,片中的一首诗,感觉相当经典:

当痛苦之云在天空若隐若现;
当悲伤的影子摇曳忽闪;
当眼泪夺眶而出;
当恐惧始终与孤独相伴;
我试着安慰自己 问 为什么要哭?
这只是生活所给予的;
所有内心的寂默;
都会随着时间释放;
每个人的故事都有些许阴霾;
每个人的生活也都有阳光普照;
不必在眼中装满泪水;
每时每刻都会开始新的生活;
为什么要让它们擦肩而过!