折腾了一天,终于解决了

首先,准备cygwin环境

cygwin下载setup.exe,启动并开始安装,建议选163源或者日本的源,速度较快

需要的安装的包及其devel包: openssl zlib pcre

还有就是一些编译需要的工具: gcc4 make perl lua (不使用openresty内置的lua)

下载openresty, openresty官网

并解压到 C:\cygwin\tmp下

修正lua的C模块编译脚本

共需要修正3个文件(其实就是3个模块),而且都是一样的修改. 版本号日新月异,自己搞定啦

打开 C:\cygwin\tmp\ngx_openresty-1.2.8.6\bundle\lua-cjson-1.0.3\Makefile, 加入 -llua5.1

然后就是如法炮制,修正rds和redis处理模块

开始编译吧,童鞋们!

启动cgywin

开始执行配置,注意,这里使用系统的lua,而非openresty内置的lua,原因就是cjson等模块会找不到内置的lua(配一下也可以,但麻烦)

cd /tmp/ngx_openresty-1.2.8.6

./configure --without-select_module --prefix=/opt/openresty --with-lua51=/usr

开始编译(按你的实际情况设置并发数哦,不然很久很久的)

make -j8                  #8就是内核数,并行编译,按你的实际情况而定

编译完成

安装那点小事

如果你直接执行make install, 你会看到这些错误(也许?)

这个我也纠结了一段时间,然后改成这样执行,注意是/opt2,而非原本的/opt

make install DSETDIR=/opt2

你以为完了?其实还没有,你需要把名字改回去

rm -fr /opt/openresty
mv /opt2/opt/openresty /opt/

先简单测试一下

测试最基本的配置文件检查

/opt/openresty/nginx/sbin/nginx.exe -t

然后就是测试核心的lua调用

打开nginx.conf文件,添加一个location

        location /lua/hi {
            content_by_lua 'ngx.say("LUA Here")' ;
        }

保存,启动nginx, 然后curl一下看看

/opt/openresty/nginx/sbin/nginx.exe
curl -v http://127.0.0.1/lua/hi

测试数据库连接

数据库的resty.mysql库需要LuaBitOP库(汗,为啥openresty不包含?)

下载LuaBitOP库, 猛击下载地址,并解压到C:\cygwin\tmp下

惯例了,修正编译参数

编译然后拷贝到openresty的lualib

cd /tmp/LuaBitOp-1.0.2
make
cp bit.so /opt/openresty/lualib

接下来,就是修改nginx.conf,加上官方的测试例子

        location /lua/mysql {
            content_by_lua '
            
            local mysql = require "resty.mysql"
            local db, err = mysql:new()
            if not db then
                ngx.say("failed to instantiate mysql: ", err)
                return
            end

            -- 省略1000字,自行到官网拷贝吧
            ' ;
        }

让nginx重新加载配置,然后访问之

/opt/openresty/nginx/sbin/nginx.exe -s reload
curl -v http://127.0.0.1/lua/mysql

哦也,上截图

打完收工!! 但有啥不足呢?

没有luajit,反正我没弄出来, configure阶段总是找不到库,不管了,windows就不那么追求性能了



blog comments powered by Disqus

Published

2013-06-25

Categories


Tags

Fork me on GitHub