在windows下编译OpenResty
折腾了一天,终于解决了
首先,准备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