使用Lua和OpenResty搭建验证码服务器安装 Lua-gd
1.安装lua
安装编译所需软件包:
yum install -y make gcc
下载并编译安装 lua-5.1:
yum install -y readline-devel
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar -zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux
make linux install
2.安装 gd
GD版本:gd-2.0.33
下载地址: http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
yum install -y libjpeg-devel libpng-devel freetype-devel fontconfig-devel libXpm-devel
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
tar zvxf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure
make && make install
3.安装 Lua-gd 库接写来修改Makefile文件:
Lua-GD版本:lua-gd-2.0.33r2
说明:
须先完成gd的安装,且版本号必须为gd-2.0.33 调用Lua-GD库的lua代码须由OpenResty中集成的LuaJIT解释执行
wget http://jaist.dl.sourceforge.net/project/lua-gd/lua-gd/lua-gd-2.0.33r2%20%28for%20Lua%205.1%29/lua-gd-2.0.33r2.tar.gz
tar zvxf lua-gd-2.0.33r2.tar.gz
cd lua-gd-2.0.33r2
注释第36~42行
打开第48~52行注释,并做如下修改
OUTFILE=gd.so
CFLAGS=-Wall `gdlib-config --cflags` -I/opt/openresty/luajit/include/luajit-2.1 -O3 //第49行,修改 lua 的 C 库头文件所在路径
GDFEATURES=`gdlib-config --features |sed -e "s/GD_/-DGD_/g"`
LFLAGS=-shared `gdlib-config --ldflags` `gdlib-config --libs` -llua -lgd //第51行,取消lua库版本号51
INSTALL_PATH=/opt/openresty/luajit/lib/lua/5.1 //第52行,设置 gd.so 的安装路径
$(CC) -fPIC -o ... //第70行,gcc 编译,添加 -fPIC 参数
然后编译:
$ make && make install
下面說一下遇到的坑: 编译时遇到的问题 首先需要gdlib-config 命令 如果找不到需要配置环境变量:
export PATH=$PATH:/usr/local/bin/
另外遇到的问题是 libgd.so.2: cannot open shared object file: No such file or directory
原因是会默认去/lib64 下面找这个文件 可是centos 默认是把这个文件放到 /usr/local/lib/libgd.so.2目录的
cp /usr/local/lib/libgd.so.2 /lib64
经过上面的处理程序就可以正常调用验证码功能