2010-04-01

使用Nokia N810做私人服务器

使用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。强烈建议使用后者,有两个理由:

  1. dropbear的SSH客户端不支持-R选项中的任意地址
  2. 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,不过作为一个嵌入式系统,还是有很多必备工具没有给预备好。可以自己去安装需要用的软件。这里提及几个:

  1. tar
  2. gzip
  3. sudo

这些工具在Application Manager里面都可以找到。

4 公 网访问-SSH隧道

N810作为服务器的优势是便于携带,在任何想要使用的地方随手启动与连接网络,所以固定访问点就成了问题。这时可以使用SSH隧道,将N810的 ssh访问挂载到一个网上固定服务器的端口上,具体可用命令:

ssh -f -N -g -R ::localhost:22 @

其中将port修改为公网服务器上的服务端口,user和server则是公网服务器的用户名与地址。这样,你就可以通过 : 来访问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:///repopath

使用起来是很简单方便的。

再就是对于已有的工作拷贝,删除再重新检出有点麻烦。可以用如下svn的命令修改版本库的地址:

svn switch --relocate   .

这样修改后,就可以直接应用新地址来执行操作了。

6 备 份与同步-rsync

备份之精髓在于数据的冗余存储,而且各个备份最好是从物理上尽可能的隔离。所以这里介绍十分方便的同步备份工具-rsync。

使用rsync你可以将不同机器上两个目录来做同步,会同时保持相同的文件权限。

这里提供一个我备份另外一个机器上svn版本库到N810上的命令,读者可以按照自己需求修改好放入脚本中执行:

#! /usr/bin/env sh
date
rsync -avz @:/repopath /media/mmc1/

这里的目标路径 /media/mmc1 就是N810上的外置存储卡的根目录。

没有评论:

发表评论