搭建nginx环境
###安装测试目录:/data/nginx ###luajit的安装和配置 #git clone http://luajit.org/git/luajit-2.0.git #make && make install ###nginx的安装和配置 http://nginx.org/en/download.html下载安装包 #tar zxvf nginx-1.4.1.tar.gz 下载第三方模块 lua-nginx-module git clone https://github.com/chaoslawful/lua-nginx-module.git echo-nginx-module git clone https://github.com/agentzh/echo-nginx-module.git ngx_devel_kit git clone https://github.com/simpl/ngx_devel_kit.git #tar xzvf pcre-8.33.tar.gz ==>不需要安装 #./configure #make && make install #tar xzvf zlib-1.2.8.tar.gz ==>不需要安装 #./configure #make && make install #tar xzvf openssl-1.0.1e.tar.gz ==>不需要安装 #./configure #make && make install must install FastDFS first! #./configure --prefix=/data/nginx \ --add-module=../nginx-module/lua-nginx-module \ --add-module=../nginx-module/ngx_devel_kit \ --with-pcre=../pcre-8.33 \ --with-zlib=../zlib-1.2.8 #make && make install # ./sbin/nginx ./sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory # ldd ../sbin/nginx libluajit-5.1.so.2 => not found #whereis libluajit-5.1.so.2 libluajit-5.1.so: /usr/local/lib/libluajit-5.1.so /usr/local/lib/libluajit-5.1.so.2 因为安装在缺省路径,所以LuaJIT对应的lib,include均在/usr/local目录里,但nginx默认查找/usr/lib和/usr/include/lib,做以下操作即可 #ln -s /usr/local/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2 #ln -s /usr/local/lib/libluajit-5.1.so.2.0.2 /usr/lib/libluajit-5.1.so.2.0.2 #ldconfig #ldd ./sbin/nginx #./sbin/nginx 替换掉./conf/nginx.conf文件 #./sbin/nginx -s reload 如果还是报require找不到文件***.lua,请在***.lua所在的工作目录下启动nginx ==>开发中根据需求还要安装: 安装luaSocket 安装LuaSocket前需要安装lua解释器,lua5.1或lua5.2均可,这里需要说明的是这里必须自己下载源码,自己编译后安装,系统自带或下载安装包安装的均无法进行luaSocket的安装,原因是,luasocket在调用的时候是lua加载C的动态库. 这个可以从luasocket的makefile看的出来.这些完成后,下载luaSocket源码,然后make,啊。。。。。,你会发现报了很多错误,因为它还需要依赖一些库文件, 解决办法为:yum install libtermcap-devel ncurses-devel libevent-devel readline-devel 附:lua5.1源码:http://www.lua.org/ftp/ luaSocket源码:http://luaforge.net/frs/download.php/2664/luasocket-2.0.2.tar.gz 安装完成后测试一下socket包是否可用,测试方法为:lua --进去lua解释器里面-->require(“socket”) 回车后没有提示错误即为成功了 接下来重新启动一下服务器,方法就不多说了,还会报缺少luasql模块的错误,很蛋疼呦,好吧,那就一次将它们全部解决掉,去open/lib,一看,啊...,原来宝贝都在这里,make一下就万事大吉了,好吧,收住高兴的心,敲下make命令,发现没有那么简单,会报ccmake没有安装,嗯,这是个问题,先学一下yum命令,yum为centos所专有的安装命令,限于篇幅,这里只介绍两个参数 list和install,install自然是安装参数了,list是查找命令,那要是不确定要查找什么命令呢,没事,用*,假如上面就可以写成*cmake*,所以先 yum list * cmake *, 会列出相关的包,选一个你需要的,然后yum install xxxxx,至于选那个嘛,就留给聪明的你了,然后还会提示什么*uuid*没安装,方法都已经有了,再罗嗦,大家在心里该叫我唐僧了。哦,忘记了,还有一个问题:安装好这些后还会报错,根据错误提示,将group_nginx.conf中的前面部分修改为:init_worker_by_lua_file,至于为什么自己去问百度老师吧(其实我也不怎么清楚,嘿嘿!)。 然后就大胆的启动服务器吧,如果不出什么意外,就可以运行了。注:能运行的特征是没有错误。 然后开始运行自己的API,首先说一下需要将三个文件放到安装nginx目录下:group_nginx.conf cfg.lua srvip.lua, group_nginx.conf是启动nginx的启动配置文件,nginx有它的默认启动配置文件,但很显然它的那个默认的不符合咱们的要求,因此咱们需要自己搞一个,所以就需要它了。 cfg.lua里面记录你写的api的链接文件和初始化文件(注:你只需要打开你需要的或正在测试的,其他的需要注释掉,否则会报错),还有一些日志的级别等。 然后就到test文件里面测试自己的API,如果仍然报错,授人与鱼不如授人与渔嘛,这里我就说一下出错以后的解决办法:出错后首先不要害怕 恐惧,当然也不要太高兴,首先要做的的是分析问题,从哪里分析呢,从两个地方分析:一是错误提示,根据错误提示大致定位为是系统缺少模块或是代码有问题,二是根据日志,先说一下nginx的日志,nginx会打印三个日志:error日志 access日志 static_system日志(这个日志是根据cfg.lua中STATLOG = true这个参数来设置)