Monthly Archives: May 2013

迁移博客到Raspberry Pi上

之前博客host在amazon的服务器上,每个月15~16刀的支出着实不小。

现在有了Raspberry Pi了,基本上24小时开机,可以当一个小server用,所以想着把博客迁移到Pi上,反正访问量不大,肯定能承受得住。

Apache有点大,想想还是用nginx来跑wordpress吧。google一下,找到这篇文章:http://www.cnx-software.com/2012/08/03/wordpress-for-raspberry-pi-using-nginx-and-mysql/
基本上把在Pi上安装http server和部署wordpress的要点写清楚了。

不过我要的不是一个新的wordpress,而是迁移原来的博客,所以也在这里记录一下。因为是事后记录,可能有遗漏或者错误,仅供参考。

1. 安装nginx, php,mysql等

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server

2. 参考上面的link,把nginx和php的配置文件配好,因为我还要用https(防GFW),所以相比那篇文章里的配置,多了ssl的配置

# Upstream to abstract backend connection(s) for php
upstream php {
server unix:/var/run/php5-fpm.sock;
}
server {
## Your only path reference.
root /srv/www/wordpress;
listen          80;
listen          443 default_server ssl;
## Your website name goes here. Change to domain.ltd in VPS
server_name     mine260309.me;

ssl_certificate     /home/pi/cacert/mine260309.me.StartCom.cert;
ssl_certificate_key /home/pi/cacert/mine260309.me.key.pem;
ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;
access_log      /srv/www/wordpress/logs/access.log;
error_log       /srv/www/wordpress/logs/error.log;

## This should be in your http block and if it is, it's not needed here.
index index.php;

location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

记得创建对应的文件夹,否则nginx会访问失败:

sudo mkdir -p /srv/www/wordpress/
sudo mkdir -p /srv/www/wordpress/logs

3. 把备份的文件拷过来,恢复wordpress文件夹和数据库。

3.1 我的备份是这样的一个脚本,crontab每周跑一次,备份过的文件会自动被dropbox同步。(注意用户名和密码是自己设的mysql的用户名、密码)

#!/bin/sh
# Back my web with clear password!
mysqldump --add-drop-table -h localhost -u  --password= minewpdb | bzip2 -c > ~/Dropbox/MyWebs/blog.bak.sql.bz2
tar -czf ~/Dropbox/MyWebs/blog.bak.html.tar.gz /var/www/html

3.2 恢复的过程是:
a) 恢复mysql数据库

$ mysql -u root -p
mysql> CREATE DATABASE minewpdb;  #创建database,注意名字和之前用的一样
mysql> GRANT ALL ON minewpdb.* TO @localhost IDENTIFIED BY '';  # 创建一个myssql用户,方便起见,也和以前一样好了
$ mysql -u ec2-user -p minewpdb < /media/ent/blog.bak.sql # 恢复数据库

b) 恢复html文件夹,这个很简单,就是把blog.bak.html.tar.gz解压出来,放到/srv/www/wordpress目录就行了
然后就可以先在本地测试了,确认wordpress没有问题之后,就是域名了。

4. 域名DDNS

这一块还没玩过,只能做尝试了。

先测试了url forwarding,在dyndns.org有个免费域名mine260309.dyndns-at-home.com,这个是可以DDNS的,然后在GoDaddy里设置了forwarding,然而无论是设置成http://的还是https://的,ssl都有问题(我的博客用了WordPress HTTPS),上推去问,@wzyboy同学说可以用he.net的服务,去google了一下,果然是个好东西。参考http://www.bidon.ca/en/random/2011-06-16-using-dynamic-dns-feature-dnshenet

4.1 上dns.he.net,注册后,可以免费设置50个域名。
1) 添加mine260309.me;
2) Edit Zone -> New A -> Enable entry for dynamic dns
3) 点击”refresh”图标 -> Generate Key,记住这个key,以后给ddclient用
4.2 然后在pi上下载ddclient

apt-get install ddclient

#安装的过程中会有preconfig:

remote server: dyn.dns.he.net
username: mine260309.me
password:
domain: mine260309.me

service ddclient status

确认ddclient工作正常。

4.3 在GoDaddy的设置里把Forwarding关掉,然后手动设置Nameserver为ns1.he.net, ns2.he.net, …

最后测试,一切正常!

不过因为在墙内了,发完博客自动发推的功能木有了,当然这个可以用别的服务搞定就是了,以后再说~

Share

Bye Bye Moto

    随着Motorola Home部门正式被Arris收购,我也不再是moto员工了。作为一毕业就加入moto并一直干到现在的“老员工”,对于moto还是很有感情的。。。 所以,回顾一下我的moto生涯吧——
    05年大四开始找工作,拿到南摩的offer,很是开心——一方面是搞定了工作,另一方面,可以先开始intern,工资4k,其中1k交学校,剩下的都 归自己。当时每个月生活费也就几百,3k的纯收入真是笔巨款,而且住学校,吃住都很便宜,上下班还有班车,就停在学校边上的珠江路上,超级方便。
    06年毕业,本来可以带着intern的CoreId直接上班的,不过当时为了看世界杯,中间断了一段时间,结果入职时就换了CoreId,还损失了那几天的工资,后来觉得有点亏。
    那段时间主要在Terry的team里做Intel FDI文件系统,这是在Nor Flash上的一个私有文件系统,充分利用nor flash特性设计的文件系统。印象比较深刻的是当时有个老外帮忙用单片机做了一个专门用来做掉电测试的板子,随机地让手机开机、掉电,不停的循环,确保 文件系统不会坏。把一个文件系统做稳定之后还是小有成就感的。
    后来re-org,当时文件系统已经成熟了也不需要太多的维护,有机会转去做bootloader,想想有机会跟硬件、汇编打交道,蛮有意思的。
    moto的手机主要用TI和Qualcomm的芯片,当年还是TI很火的时候,TI很牛,也不给BSP,不过有之前的bootloader的base,换用新的芯片,也就是改些配置,把板子跑起来的事情,其实没有太大的挑战性。值得说的大概有两个事情。
      · 一个是在某个片子上只有32KiB的internal RAM,跑之前的code因为太大根本不行,只能想办法,改编译选项(-Os),找大的global变量,看看能不能缩减字库之类的,后来总算把最开始的 bootloader弄得足够小,然后去初始化DDR Ram,然后内存使用就豁然开朗了;
      · 另一个是关于flash速度的,当时用RSDLite烧机(现在俗称刷机)速度很慢,不但烧写慢,checksum也很慢,远远太不到flash的理论速 度。我正好之前做文件系统对flash很熟,知道怎么配置,怎么用burst read/write,改动一番后,flash的速度提高了很多。
    09年中的时候,上海的home部门在招人,当时正好想换个环境到上海去,就内部申请transfer了。内部电话面试一下,两边的老板同意就行了,这一点还挺人性化的,公司的HR也很专业,transfer的事情基本上都由HR搞好了。
    于是,在南摩工作了整3年之后(不包括intern的半年),我来到了上海摩托。
    这是个完全不一样的部门——
      不再是MobileDevice了,而是Home,专做机顶盒的软件;不再用Clearcase/ClearQuest了,而是用Bugzilla(不过 现在改用Jira了)/ SVN了;电脑变差了,没有免费饮料了,没有building了。。。 诸多变化,一开始还是挺不适应的。。。
    在这里,因为是scrum,做的事情很杂,经常几个月就换个方向做,于是,在上海摩托,做过这些东东:toi, bitband, viaccess, ekioh-webkit, dlna, dtcp,以及修过任何机顶盒会碰到的问题,hdmi啦,audio/video output啦,等等。
    做新的东西,是能学到不少东西,但很多时候项目就是在修bug,这个就很没意思了,在上海3年多,工作上更多的只是跟着项目走,真正深入地学到东西,很 少。有时候只能自己在业余的时候搞搞Android开发,玩玩自己的博客,翻翻墙,看看Twitter,看各种IT博客之类,收获倒是挺多。
    · 一方面,Linux玩多了,各种脚本,以及python,svn,git,玩得还都不错,也在Android市场上有两个评分都不错的app;
    · 另一方面,各种博客(以及StackOverflow!)看下来,真心能学到很多东西,并发编程、c/c++/java的某些细节,等等。佩服那些大牛小牛们,呵呵。Google Reader真是神器,可惜就要关了。
    这期间,经历了Moto的拆分,Google的收购,还始终算是moto的员工;经历了Twitter的崛起,饭否的成功、封杀与复活,新浪微博的ws, 微信的异军突起,从不怎么使用新技术新产品,到现在用着twitter, facebook, foursqure, ifttt, pocket, evernote, dropbox, amazon aws, godaddy, bitcoin等各种新玩意儿,算是积极的变化吧。
    然后,Arris的收购,然后,终于不再是moto人了。。。
    Bye Bye Moto
    —-
    谨以此文纪念在moto的岁月
    2013.05
Share