没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下。
1.首先,分布式Erlang的实现提供了自有的安全机制来预防未经授权的Erlang系统访问。Erlang系统与别的机器进行交互时必须有同样的magic cookie,保存在一个称为.erlang.cookie的文件中,为了在两台不同机器间测试,需要编辑一份.erlang.cookie,内容随便,比如:
just_test
然后将这份文件拷贝到windows环境变量HOMEPATH所在的目录 ,比如我的是C:\Documents and Settings\Admin,而linux拷贝到环境变量$HOME指向的目录,比如我这里是/root。特别注意一点,linux的.erlang.cookie文件需要设置权限为-r--------,也就是400,仅所有者可读:
chmod 400 .erlang.cookie
2.因为Erlang中的node名称是name@host,host是计算机名,因此在两台机器上都需要将计算机名和ip加进hosts文件,这个文件在linux下是在/etc/hosts,你可以用vi编辑如下:
x.x.x.x zane zane #windows机器的ip和计算机名
,hosts在windows系统的C:\WINDOWS\system32\drivers\etc目录下,编辑:
x.x.x.x dennis #linux机器的名称和ip
3.第三步,要启动节点,通过命令erl -sname 或者erl -name,在此之前需要启动epmd进程,它负责映射符号名到机器地址
在两个机器都执行:
epmd -daemon
4.至此配置完成,可以测试下Erlang分布式编程在不同的机器和系统之间了(比如《Erlang入门(三)--分布式编程》中的ping pong例子),very cool!