今天打算试试yaws,这是一个使用erlang实现的web服务器,参照blog:
http://yarivsblog.com/articles/2006/07/12/the-hitchhiker
首先需要安装erlang环境,windows和linux下都有,但yaws好像只给了个linux下的安装文件,于是在ubuntu6.06上安装。
从erlang主页www.erlang.org上下载源码,编译步骤:
tar -xzvf xxx.tar.gz
cd xxx
sudo ./configure
(sudo make clean)#可选的,用于非首次编译的情况
sudo make
sudo make install (as root)
但configure时出错:(类似如下)
configure: error: No curseslibraryfunctions found
There is a problem with $ERL_TOP/erts/configure not passing the LDFLAGS
environment variable for test compiles, so ALL library tests fail. I
modified files $ERL_TOP/erts/aclocal.m4 and $ERL_TOP/configure.in in order
to locate pthread_create in the standard C runtime library. The
$ERL_TOP/configure.in produces a configure that works, wheras the
$ERL_TOP/erts/configure.in does not. At the top of file erts/configure.in:
AC_PREREQ(2.13)
AC_INIT(vsn.mk)
应该是一些curses库没有安装,但apt-get install curses提示找不到,google了一下发现需要安装
ncurses-devel包,在网上只找到了相应的rpm包,使用alien命令,将rpm保转换为deb包安装:
sudo apt-get install alien
sudo alien *.rpm,转成deb后,用dpkg -i *.deb
或者
sudo alien -i *.rpm
进行安装
(注意,下载rpm包的时候我将包改名了,导致alien时出错,改成原来的名字就正常了,不知道为什么:P)
这时候cofigure可以过去了,但make又出错了,提示erlc找不到,类似如下的错误信息:
erlc -W +debug_info -I../include -o../ebin otp_ring0.erl
make[4]: erlc: Command not found
make[4]: ***[../ebin/otp_ring0.beam]Error127
make[4]: Leaving directory `/usr/src/packages/erlang-10.b.5/lib/kernel/src'
make[3]: *** [/usr/src/packages/erlang-10.b.5/lib/kernel/ebin/otp_ring0.beam] Error 2
make[3]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'
make[2]: *** [generate] Error 2
make[2]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'
make[1]: *** [depend] Error 2
make[1]: Leaving directory `/usr/src/packages/erlang-10.b.5'
make: *** [build-stamp] Error 2
make: *** [debs] Error 2
看网上有介绍说使用make clean并不完全,
于是将源码删除,重新解压缩,再configure后,make,没有提示erlc找不到了,又有提示类似如下的错误信息:
> otp_src_R11B-1/lib/kernel/ebin/erlang.beam > i686-pc-linux-gnu/preload.c
> m4 -DTARGET=i686-pc-linux-gnu -DOPSYS=linux -DARCH=x86 hipe/
> hipe_x86_asm.m4 > i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h
> /bin/sh: m4: command not found
> make[2]: *** [i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h] Error 127
> make[2]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'
> make[1]: *** [generate] Error 2
> make[1]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'
> make: *** [depend] Error 2
这是m4包没有找到(http://www.erlang.org/pipermail/erlang-questions/2006-November/023942.html)
安装m4包后,继续make出现如下错误:
hipe/hipe_mkliterals.c:351: error: 'X86_LEAF_WORDS' undeclared here (not in a function)
hipe/hipe_mkliterals.c:352: error: 'X86_NR_ARG_REGS' undeclared here (not in a function)
网上搜索结果:http://forum.trapexit.org/viewtopic.php?t=6815
将源码删除,再解压缩 再make终于过去了
提示:如下的包最好是在erlang安装之前就安装好的: perl, debhelper (>= 4.0.0), autoconf (>= 2.50),
openssl, libssl-dev, m4, libncurses5-dev, dpatch, autotools-dev,
unixodbc-dev
make过程大概有1个小时,之后是make install很快。
打开终端,输入erl,出现提示符1>
后面将yaws的安装和使用
yaws的安装挺简单的,主要是他的编译是基于erlang的。
需要注意的是,安装好后,如果没有安装相应的ssl模块的话,需要更改一下conf文件,将其中关于ssl的部分注释掉,既如下部分:
<server xxx>
....
<ssl>
...
</ssl>
</server>
在windows下的安装,在yaws的主页上有说明,需要下载一个bat文件,不过这个文件好像有问题,需要将一些安装的环境变量改一下,在(SET ERLC_FLAGS=)这行之后添加:
SET ProgramFiles=G:\erlang\yaws\yaws_program
SET HOME=G:\erlang\yaws\yaws_data
SET APPDATA=G:\erlang\yaws\yaws_configure
ProgramFiles 为yaws的程序位置,HOME为yaws的数据位置,包括www,log,wiki,ssl等,APPDATA为yaws的配置位置。
如果使用默认安装参数的话,需要将IF NOT DEFINED ProgramFiles SET ProgramFiles="c:\Program Files"和
HOME="%HOMEDRIVE%%HOMEPATH%\My Documents"中的双引号去掉(感觉这个bat文件写的比较乱)
同时不要忘了,在安装好之后注释掉conf文件中关于ssl的部分。
安装好后,默认就可以在%home/www目录或者/tmp(windows下为%home%\www or C:\tmp)目录添加yaws文件(ehtml)来显示了。
btw:如果在ubuntu or debian上安装,最简单,只要apt-get install yaws 就可以了。运行yaws需要root权限。