在windows下安装mochiweb
闲来无事要折腾,听说MochiWeb很不错,就准备在本本上实践一下。
网上看了几篇文章:
1.实战Mochiweb.
http://tech.it168.com/jd/2008-01-30/200801301154397.shtml
2.(译)用Mochiweb打造百万级Comet应用,第一二三部分
http://idisc.javaeye.com/blog/267028
http://idisc.javaeye.com/blog/270076
http://idisc.javaeye.com/blog/273074
3.MochiWeb的设计
http://www.javaeye.com/topic/348379
不过呢,这些介绍的都是在linux环境下的安装,在window下自然是行不通的,忙乎了几个小时,其间GOOGLE发挥了很大作用,总算在下班前一秒钟搞定。俗话说好记性不如烂笔头,所以决定发扬流水账精神,把这段MochiWeb坎坷之旅记录下来。
大致过程参照(1.实战Mochiweb.), 这里仅仅记录注意事项:
0.svn checkout mochiweb 在 e:/__opensource__/mochiweb/;
1.安装msys(为了make, 而且必须是GNU make);
2.msys.bat
sh:/>cd /e/__opensource__/mochiweb/
sh:/>make
3.sh:/>escript scripts/new_mochiweb.erl demo
这里会看到有个错误. 同时发现多了个目录demo.
4.上面3的错误是因为windows系统没有符号链接产生的,(deps目录下应该有个符号链接到mochiweb目录,因为要用到(ebin和src)。解决办法到微软网站下载个junction(请google).
sh:/>junction ../mochiweb demo/deps/mochiweb_src
5.进入demo目录;
sh:/>cd demo
sh:/>make all
(如果有堆栈错误请退出msys重进)
6.启动;
sh:/>./start-dev.sh
这时候会有错误(init terminating in do_boot),根据错误提示逐步解决:
7.痛苦的过程在于修改start-dev.sh
1)加入 -s ssl;
2)加入 -s crypto;
3)改路径 $PWD/deps/*/ebin -> #PWD/deps/mochiweb-src/ebin
4)最关键的一步.处理crypto_server的小bug
在erl控制台下,我们可以检验这段代码,会发现L13仍然返回{error,...},原因很简单, 我机器上的目录是这样的
D:\cean\erlang\lib\crypto-1.5.1.1\priv\windows\lib
而要求的是
D:\cean\erlang\lib\crypto-1.5.2.1\priv\lib\win32
解决办法也很懒惰, 重新建个目录, 把crypto_drv.dll考过去.
8.这时候start-dev.sh的exec erl行成这样:
exec erl -s ssl -s crypto -pa $PWD/ebin $PWD/deps/mochiweb-src/ebin -boot start_sasl -s reloader -s demo
9.这时候可以心情愉悦的.
sh:/>./start-dev.sh
然后看http://localhost:8000/
时间仓促要回家就不检查了,有问题请指正,谢谢.
P.S.
1.加入分布式参数:
-sname node1 -setcookie abcdef
2.如果在浏览器中看动起来的结果,就得采用长连接, 在demo_web.erl中修改红色内容(不确定):
Response = Req:ok({"text/html;charset=utf-8;connection=keep-alive",
3.生成测试数据:
(for /L %i in (1, 1, 1000) do @echo http://localhost:8000/test/%i) > mochi-urls.txt