Raspberry Pi调优及开机IP上报功能配置

前一阵到wy上兑换了一个树莓派,拿到手了很开心,于是购买了一个sony C10的SD卡。

然后就是一顿搞。。

装上系统之后发现系统很卡,于是对其进行了一些系统参数配置。

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

对一些读写较多的地方做了改进,使其不直接读写SD卡;

上面是配置方法,只要将内容加入到/etc/fstab重启即可。

安装chkconfig

sudo apt-get install chkconfig

开机IP上报功能

#!/bin/bash

# check network availability
while true
do
 TIMEOUT=5
 SITE_TO_CHECK="www.sinaapp.com"
 RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
 if [ "x$RET_CODE" = "x200" ]; then
 echo "Network OK, will POST ip..."
 break
 else
 echo "Network not ready, wait..."
 sleep 1s
 fi
done

# get the IP address of eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'`

# send the Email
#echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxx@gmail.com

# POST ip

while true
do
TIMEOUT=5
SITE_TO_POST="xxxx.sinaapp.com/ip.php"
RET_CODE=`curl -s --connect-timeout $TIMEOUT "$SITE_TO_POST" -w %{http_code} -d "ip=$ETH0_IP_ADDR"| tail -n1`
echo "-------------------------------------------";
echo $ETH0_IP_ADDR
echo $RET_CODE
date
echo "-------------------------------------------";
 if [ "$RET_CODE" = "200" ]; then
 echo "POST OK"
 break
 else
 echo "SOMETHING WRONG"
 sleep 1s
 fi
done

服务端

<?php

echo "";

if(!empty($_POST['ip'])&&empty($_GET['get'])){
	$ip=serialize($_POST['ip']);
    $mmc=memcache_init();
    if($mmc==false)
        echo "mc init failed\n";
    else
    {
        memcache_set($mmc,"Rasp_ip",$ip);
        
    }
}else if(!empty($_GET['get'])){
    $mmc=memcache_init();
    if($mmc==false)
        echo "mc init failed\n";
    else{
		$ip= memcache_get($mmc,"Rasp_ip");
        //var_dump($ip);
        echo unserialize($ip);
    }
}

远程内网端口转发

ncat -l -vv -p 9999 模拟CCPROXY侦听端口

ssh user@60.100.100.110 -R 8080:127.0.0.1:9999 -P 5862

上面是要被访问的内网


下面是本地
ssh user@60.100.100.110 -P 5862 -L 8080:127.0.0.1:8080

ncat localhost 8080 模拟浏览器发送数据

配置.htaccess使WordPress强制使用HTTPS访问

网上有许多方法都是依赖于端口检测的,但是总感觉这种方法不太合适,不过其实用起来没有什么问题,但是最后我还是没有选择使用端口检测的方法来区分访客是否使用Https访问,因为服务器上可能服务ssl服务的端口不仅只有443.

经过打印PHP $_SERVER 变量发现,其中有一个变量是HTTPS,当访客使用https方式访问的时候会有该变量,否则没有。

查阅了apache mod_rewrite官方文档,是这样说的:

HTTPS Will contain the text “on” if the connection is using SSL/TLS, or “off” otherwise. (This variable can be safely used regardless of whether or not mod_ssl is loaded).

也就是说访客使用SSL/TLS访问的时候HTTPS这个变量会变成on,否则就是off或者没有这个变量。

所以可以使用这种方法进行检测,这样就可以写出一条很简洁的规则:

RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301]

只要检测变量不为on,就进行强制外部调整[R],并最后结束[L]。

最后的规则就像下面这样子:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

你当然可以把所有的规则写到一起,OK,这样wordpress以后就只能强制使用SSL访问了!