Building openresty1.7.10.1 with luajit on windows using Cygwin, 在windows下用Cygwin下编译带Luajit的openresty

作者:W.S.T 发布时间:May 21, 2015 分类:Code

First install 32bit cygwin.

Install packet: openssl zlib-dev pcre gcc-core perl readline

openresty没有对Cygwin做兼容,我们需要自己来修改文件

Open bundle\lua-cjson and lua-rds-parser and lua-redis-parser three folder's Makefile for edit, Add those lines before “## ..... (Macports)”

bundle\lua-cjson的,lua-rds-parser的,lua-redis-parser的Makefile里,“## ***OSX (Macports)”上面加入:

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片ifeq ($(OS),Windows_NT)
LDFLAGS2 += -L../luajit-root/usr/local/openresty/luajit -lcyglua51
endif

ifeq ($(OS),Windows_NT)
LDFLAGS2 += -L../luajit-root/usr/local/openresty/luajit -lcyglua51
endif

change

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片$(CC) $(LDFLAGS) -o $@ $^

$(CC) $(LDFLAGS) -o $@ $^
(cjson may be "$(CC) $(LDFLAGS) $(CJSON_LDFLAGS) -o $@ $(OBJS)")

to

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片$(CC) $(LDFLAGS) -o $@ $^ $(LDFLAGS2)

$(CC) $(LDFLAGS) -o $@ $^ $(LDFLAGS2)

(cjson may be "$(CC) $(LDFLAGS) $(CJSON_LDFLAGS) -o $@ $(OBJS) $(LDFLAGS2)")

Then run:

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片./configure --without-select_module --with-luajit
let ./configure can found your luajit:
mv ./build/luajit-root/usr/local/openresty/luajit/include/luajit-2.1 /usr/local/include
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll /lib/libluajit-5.1.a
./configure --without-select_module --with-luajit (must do this again)

./configure --without-select_module --with-luajit
let ./configure can found your luajit:
mv ./build/luajit-root/usr/local/openresty/luajit/include/luajit-2.1 /usr/local/include
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll /lib/libluajit-5.1.a
./configure --without-select_module --with-luajit (must do this again)

LuaJIT-2.1-20150223 my be wrong dir name, you need press tab after LuaJIT-2.1-

LuaJIT-2.1-20150223目录名不一定一样,你需要在LuaJIT-2.1-文字后直接按Tab换成正确的目录。

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片let make can link your luajit:
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll ./build/luajit-root/usr/local/openresty/luajit
make -j8
make install DESTDIR=/usr2
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll /usr2/usr/local/openresty/nginx/sbin/

let make can link your luajit:
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll ./build/luajit-root/usr/local/openresty/luajit
make -j8
make install DESTDIR=/usr2
cp ./build/LuaJIT-2.1-20150223/src/cyglua51.dll /usr2/usr/local/openresty/nginx/sbin/

All will be ok. You can find openresty in /usr2/usr/local/ folder.

Also the ffi may be a problem, because under cygwin, -E can not be exported function symbols, i have discussed this issue with the author Agentzh, may be next version can solve this problem (Already fixed in 1.4.3.9).

另外Cygwin编译的使用jit的ffi可能有问题,因为cygwin下-E无法导出函数符号,春哥已生成补丁,预估以后版本可以解决(1.4.3.9已解决)。

在windows下编译OpenResty

作者:W.S.T 发布时间:May 21, 2015 分类:Code

折腾了一天,终于解决了

首先,准备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成功托管到百度BAE

作者:W.S.T 发布时间:April 19, 2013 分类:Code

由于某大云,不让托管小站委屈,今天决定把BLOG托管到百度BAE.
SVN还不是很熟,SVN版本控制在百度网站上面在线编辑的话会有BUG,导致无法删除版本,弄了半天.
顺便分享下Typecho移植到BAE需要修改的几个地方.
一.在程序根目录增加app.conf文件,主要用于URL重写,内容如下:

阅读剩余部分...

phpMyAdmin同步功能,设置可以选择远程服务器

作者:W.S.T 发布时间:April 2, 2012 分类:Code

phpMyAdmin在使用同步功能时候,默认是不能选择远程主机,如下图:

修改方法:

找到phpMyAdmin目录,修改下面的文件:
phpMyAdmin\libraries\config.default.php 中的

$cfg['AllowArbitraryServer'] = true;

设置为真,就可以手动输入别的服务器地址.

centos linux 安装iftop

作者:W.S.T 发布时间:April 1, 2012 分类:Code

yum -y install gcc
yum -y install flex byacc  libpcap ncurses ncurses-devel libpcap-devel
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install