使用Nokia N810做私人服务器
作者: | gashero |
---|---|
日期: | 2010-02-01 |
目录
- 1 简介
- 2 一切之根本-SSH
- 3 常用shell工具
- 4 公网访问-SSH隧道
- 5 Subversion服务器
- 6 备份与同步-rsync
1 简 介
Nokia N810上拥有一个较为完整的Linux操作系统,可以用于在其上安装各类自己的服务器软件。作为一个可以移动的服务器,会提供诸多便利。
2 一 切之根本-SSH
N810上虽然配备了硬件qwerty键盘,但是还是可以通过电脑远程操作为好,而且后面也会涉及到SSH通道上的通信。
可以通过Maemo4上的Application Manager安装软件。有两种SSH实现可选,dropbear和OpenSSH。强烈建议使用后者,有两个理由:
- dropbear的SSH客户端不支持-R选项中的任意地址
- dropbear的SSH服务器在待机(屏幕关闭)时,有时会卡住
所以,不多说了,安装OpenSSH吧,客户端和服务器一起装上。
安装以后用N810上ssh客户端去搞到客户端(你自己的电脑)上的id_dsa.pub文件,导入到 ~/.ssh/authorized_keys 文件里。就可以不用密码登录了。这里谈到密码,root和user(N810的默认用户名)的密码我都不知道。而且曾经因为修改密码而无法使用。所以建议 各位还是不要修改密码,而是只用key方式登录了事。
Linux下生成id_dsa.pub,或者Windows下用putty的问题,自己去google吧,很简单的。
另外一个关于本地语言配置的问题,修改 /etc/ssh/sshd_config ,将其中 AcceptEnv LANG LC_* 这一行注释掉。否则后面使用subversion时会有一些无聊的警告。
3 常 用shell工具
N810虽然提供了xterm,不过作为一个嵌入式系统,还是有很多必备工具没有给预备好。可以自己去安装需要用的软件。这里提及几个:
- tar
- gzip
- sudo
这些工具在Application Manager里面都可以找到。
4 公 网访问-SSH隧道
N810作为服务器的优势是便于携带,在任何想要使用的地方随手启动与连接网络,所以固定访问点就成了问题。这时可以使用SSH隧道,将N810的 ssh访问挂载到一个网上固定服务器的端口上,具体可用命令:
ssh -f -N -g -R :<port>:localhost:22 <user>@<server>
其中将port修改为公网服务器上的服务端口,user和server则是公网服务器的用户名与地址。这样,你就可以通过 <server>:<port> 来访问N810的ssh服务了。如果在N810上还有其他服务,可以修改命令中的22为你需要的端口。
由于ssh隧道具备自动重连功能,所以如果你只是出去吃个饭之类的,再回来,重新连接网络后,这个隧道仍然有效。不过超过1小时就不行了。
5 Subversion 服务器
也许你可以想像到一个服务器应该有的诸多功能,Subversion对我来说就是很必要的一个。
由于N810只有128MB内存+128MB交换空间,所以服务器这个东西,最好还是随用随启动,用完就关闭。所以就不建议启动 subversion的daemon进程了。可以使用访问协议 svn+ssh 来实现ssh通道上的svn服务。其优点是仅在使用时才启动svn的服务器进程,用完自动关闭。而且通过ssh通道,也就不用另外指定端口了。
不过这里还有个问题,就是svn并不支持在 svn+ssh 协议之上指定除22以外的端口号。而N810作为服务器的还需要挂载到其他服务器上的服务端口。这时你可以修改 .subversion/config 的 [tunnels] 段来实现,比如加入如下一条:
n810= /usr/bin/ssh -p65520 --username=user
然后你的svn访问路径就可以是如下的:
svn+n810://<server>/repopath
使用起来是很简单方便的。
再就是对于已有的工作拷贝,删除再重新检出有点麻烦。可以用如下svn的命令修改版本库的地址:
svn switch --relocate <oldurl> <newurl> .
这样修改后,就可以直接应用新地址来执行操作了。
6 备 份与同步-rsync
备份之精髓在于数据的冗余存储,而且各个备份最好是从物理上尽可能的隔离。所以这里介绍十分方便的同步备份工具-rsync。
使用rsync你可以将不同机器上两个目录来做同步,会同时保持相同的文件权限。
这里提供一个我备份另外一个机器上svn版本库到N810上的命令,读者可以按照自己需求修改好放入脚本中执行:
#! /usr/bin/env sh date rsync -avz <user>@<server>:/repopath /media/mmc1/
这里的目标路径 /media/mmc1 就是N810上的外置存储卡的根目录。