分类 路由器 下的文章

启动和关闭 路由器上的 代理

仅作以后参考之用

打开代理:

ps | grep 'python2 proxy.py' | grep -v grep || {
    echo 'Not running, then start'
    python2 /opt/local/goagent3111/local/proxy.py
    exit $?
}

关闭代理:

kill -9 `ps | awk '/python2 \/opt\/local\/goagent3111\/local\/proxy.py/{print $1}'`

ipkg, opkg 与 openWrt

ipkg 是 Itsy Package Management System 的缩写, 是类似与 Debian 的 dpkg 一样的, 专门用在嵌入式设备的轻量级包管理工具, 层被用在 OpenWrt, NSLU2, webOS 等操作系统. 如今, ipkg 这个项目已经停止更新, 曾经使用它的许多项目转而使用它的变种: opkg.


opkg 是 OPKG Package Manager 的缩写, 由 ipkg 演变而来, 所以也是用于嵌入式设备轻量级的包管理工具, 用来下载, 安装, 删除, 显示 OpenWrt 的包. 于 ipkg 不同, opkg 可以对 root 文件系统进行全部的包管理, 而不仅限于安装软件到特定的目录, 如 /opt.

opkg 的配置文件一般是 /etc/opkg.conf
搜索某个 package 的关键字: opkg info '*mysql*'
安装某个 package: opkg install nginx
安装的位置会参照/etc/opkg.conf 中配置的 dest的值, 你也可以指定: opkg install -d mnt nginx

src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages
dest mnt /data
dest ram /tmp
arch all 100
arch brcm4709 200
arch brcm47xx 300

以上是修改小米路由器的 opkg.conf, 第一行指定 repo 的 URL, 2,3行指定安装可能的路径, 3,4,5指定可以兼容的包, 后面的数字, 100代表优先级最高, 200次之, 300最低, 但是也可以兼容安装.

参考:
ipkg in wikiipedia
opkg on openWrt
OpenWrt version history
Broadcom BCM47xx 系列

路由器上 nginx 博客添加 fastcgi 缓存

openWRT 的路由器上架上了博客, 虽然路由器CPU, 内存都很弱, 但是假设一个博客系统还过得去. 最近发现一旦访问量大一点, 路由器CPU 就飙的很高.
为了解决这个问题, 在启动 fastcgi 的时候, 已经添加了多进程:

#运行PHP环境
PHP_FCGI_CHILDREN=2
PHP_FCGI_MAX_REQUESTS=30
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
/opt/bin/spawn-fcgi  -a 127.0.0.1 -p 9000 -f /opt/bin/php-fcgi

一开始设置PHP_FCGI_CHILDREN 为4, 但是发现还是有时候 CPU 飙升, 都是 fast_cgi 占用. nginx 的 CPU 占用率都很低. 那么瓶颈在于 php, 就要优化 php 这边.
博客系统的一个特性在于绝大部分只是看, 只有非常少的部分是修改. 那么就可以考虑设置缓存. 这里主要设置 fastcgi 的 cache, 当然也可以设置 nginx 的 cache, 或者其他的. fastcgi 的相对来说, 比较简单.
修改nginx 的http 部分, 添加如下设置:

fastcgi_cache_path /opt/var/nginx/tmp/fastcgi_cache levels=1:2 keys_zone=cache_zone:8m inactive=1d max_size=100m;
fastcgi_temp_path  /opt/var/nginx/tmp/fastcgi_temp;

fastcgi_cache cache_zone;
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_key "$scheme$request_method$host$request_uri$is_args$args";
fastcgi_cache_valid 200 301 302 1d;
fastcgi_ignore_client_abort on;

其中fastcgi_cache_path, 和 fastcgi_temp_path 必须设置在 http 部分, 其他设置可以设置在 server 或者 location 部分, 以缩小范围.
网上有很多教程, 但是比较容易出错的一个点是: fastcgi_ignore_headers, 如果不设置这一项, fastcgi cache 就不起作用, 因为一般的 web http 请求都是使用后面的这些值做缓存的. 参考:这里
设置好之后, nginx -t 测试修改是否正确, 然后重启或者 reload.

那么再重新 top, 启动多线程测试, 你就会发现现在是 nginx 占用 CPU 了, 但是也非常低.
另外要注意的就是 purge, 万一你修改了博客, 或者有用户添加了评论, 那么就需要重新从数据库里拿了, nginx 的 fastcgi 模块有这个指令: fastcgi_cache_purge, 可是它是从version 1.5.7 开始生效的, 所以这里就没配置.

对于某些不想缓存的文档, 可以这么设置:

set $no_cache 0;
if ($request_uri ~* "/(administrator)")
{
    set $no_cache 1;
}
fastcgi_cache_bypass $no_cache;

关于 nginx fastcgi 指令的全部描述, 参看这里

openWRT 自带 busybox 的 netstat 命令查看端口

Usage: netstat [-ral] [-tuwx] [-enW]

Display networking information

Options:

-r      Routing table
-a      All sockets
-l      Listening sockets
        Else: connected sockets
-t      TCP sockets
-u      UDP sockets
-w      Raw sockets
-x      Unix sockets
        Else: all socket types
-e      Other/more information
-n      Don't resolve names
-W      Wide display

    

显示正在监听的 tcp, udp 端口

netstat -ltue

不解析常见的端口, 直接以数字显示

netstat -ltuen