设为首页 收藏本站
查看: 1856|回复: 0

[经验分享] tnginx调用lua模块编译安装

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-2-14 14:43:23 | 显示全部楼层 |阅读模式
1.软件下载(目前最稳定版本):

tnginx最新动态
[2014-01-08] Tengine-2.0.0 开发版正式发布(变更列表)
[2013-11-22] Tengine-1.5.2 稳定版正式发布(变更列表)

最新版特性:
继承Nginx-1.4.4的所有特性,100%兼容Nginx的配置;
动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;
流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线;
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
动态脚本语言Lua支持。扩展功能非常高效简单;
支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
组合多个CSS、JavaScript文件的访问请求变成一个请求;
自动去除空白字符和注释从而减小页面的体积
自动根据CPU数目设置进程个数和绑定CPU亲缘性;
监控系统的负载和资源占用从而对系统进行保护;
显示对运维人员更友好的出错信息,便于定位出错机器;
更强大的防攻击(访问速度限制)模块;
更方便的命令行参数,如列出编译的模块列表、支持的指令等;
可以根据访问文件类型设置过期时间;
...


开发板
wget http://tengine.taobao.org/download/tengine-2.0.0.tar.gz
稳定版
wget http://tengine.taobao.org/download/tengine-1.5.2.tar.gz

LuaJIT-2.0.2.tar.gz
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz

ngx_devel_kit-0.2.19.tar.gz
https://codeload.github.com/simpl/ngx_devel_kit/tar.gz/v0.2.19

lua-nginx-module-0.9.4.tar.gz
https://github.com/chaoslawful/l ... releases/tag/v0.9.4

参考站点
https://github.com/chaoslawful/lua-nginx-module#installation

2.建立nginx运行用户和程序目录:

groupadd www
useradd -s /sbin/nologin -g www www
mkdir -p /usr/local/nginx
mkdir -p /usr/local/pcre

3.安装pcre
wget http://jaist.dl.sourceforge.net/ ... /8.32/pcre-8.32.zip
3.1:安装pcre-8.32
unzip pcre-8.32.zip
cd pcre-8.32
./configure --prefix=/usr/local/pcre --enable-utf8 --enable-pcregrep-libbz2 --enable-pcregrep-libz
make && make install

4. 安装LuaJIT-2.0.2.tar.gz

mkdir -p /usr/local/luajit
tar -xvf LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make
make install PREFIX=/usr/local/luajit

4.1 LIB库位置
[iyunv@tzhadoop08 LuaJIT-2.0.2]# ll /usr/local/luajit/lib/
total 1212
-rw-r--r--. 1 root root 775134 Jan 25 22:31 libluajit-5.1.a
lrwxrwxrwx. 1 root root     22 Jan 25 22:31 libluajit-5.1.so -> libluajit-5.1.so.2.0.2
lrwxrwxrwx. 1 root root     22 Jan 25 22:31 libluajit-5.1.so.2 -> libluajit-5.1.so.2.0.2
-rwxr-xr-x. 1 root root 451984 Jan 25 22:31 libluajit-5.1.so.2.0.2
drwxr-xr-x. 3 root root   4096 Jan 25 22:31 lua
drwxr-xr-x. 2 root root   4096 Jan 25 22:31 pkgconfig

4.2INC路径

[iyunv@tzhadoop08 LuaJIT-2.0.2]# ll /usr/local/luajit/include/luajit-2.0/
total 40
-rw-r--r--. 1 root root  6006 Jan 25 22:31 lauxlib.h
-rw-r--r--. 1 root root  4339 Jan 25 22:31 luaconf.h
-rw-r--r--. 1 root root 11964 Jan 25 22:31 lua.h
-rw-r--r--. 1 root root   135 Jan 25 22:31 lua.hpp
-rw-r--r--. 1 root root  2573 Jan 25 22:31 luajit.h
-rw-r--r--. 1 root root  1113 Jan 25 22:31 lualib.h

4.3
配置一下 luajit 或 lua 的环境变量(Nginx编译时需要):

我的测试环境里,配置如下:
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

4.4
验证
[iyunv@tzhadoop08 LuaJIT-2.0.2]# echo $LUAJIT_LIB
/usr/local/luajit/lib
[iyunv@tzhadoop08 LuaJIT-2.0.2]# echo $LUAJIT_INC
/usr/local/luajit/include/luajit-2.0

5,解压需要编译的文件(ngx_devel_kit,lua-nginx-module,echo-nginx-module)到/usr/local/
[iyunv@tzhadoop08 tnginx]# ll
total 5616
drwxr-xr-x. 6 health public    4096 Jan 10 18:51 echo-nginx-module-master
-rw-r--r--. 1 health public   87994 Jan 25 22:05 echo-nginx-module-master.zip
-rw-r--r--. 1 health public  470131 Jan 24 06:42 lua-nginx-module-0.9.4.tar.gz
-rw-r--r--. 1 health public   65029 Jan 24 06:41 ngx_devel_kit-0.2.19.tar.gz
drwxr-xr-x. 9 root   root     12288 Jan 25 22:14 pcre-8.32
-rw-r--r--. 1 health public 1434777 Jan 15 00:52 tengine-1.5.0.tar.gz


tar -xvf ngx_devel_kit-0.2.19.tar.gz -C /usr/local/

tar -xvf lua-nginx-module-0.9.4.tar.gz -C /usr/local/

unzip  echo-nginx-module-master.zip
mv echo-nginx-module-master /usr/local/

6,编译tnginx,需要注意编译顺序

tar -xvf tengine-1.5.2.tar.gz
cd tengine-1.5.2

./configure --user=www --group=www \
--prefix=/usr/local/nginx \
--with-pcre \
--with-pcre=/workspace/pcre-8.32 \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module  \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" \
--add-module=/usr/local/ngx_devel_kit-0.2.19 \
--add-module=/usr/local/echo-nginx-module-master \
--add-module=/usr/local/lua-nginx-module-0.9.4

make
make install

上传启动文件:(见附件)
/etc/init.d/nginx start

如果升级现有Tnginx,参考如下:
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp -rp objs/nginx /usr/local/nginx/sbin/
/usr/local/nginx/sbin/nginx -t
/etc/init.d/nginx reload

7.tnginx调用LUA测试配置文件:

[iyunv@computer ~]# more /usr/local/nginx/conf/nginx.conf
worker_processes  auto;
events {
   worker_connections  1024;
}
http {
   include       mime.types;
   default_type  application/octet-stream;
   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';
   #access_log  logs/access.log  main;
   sendfile        on;
   #tcp_nopush     on;
   #keepalive_timeout  0;
   keepalive_timeout  65;
   #gzip  on;



   server {
       listen       80;
       server_name  localhost;

       access_log  /data/logs/access_kjh.log  main;
location /echo {
default_type 'text/plain';
echo 'hello echo';
                               }

location /lua {
default_type 'text/plain';
   content_by_lua 'ngx.say("hello, lua")';
                               }

                               }  

    }

7.1测试访问:
[iyunv@computer ~]# curl http://127.1/lua
hello, lua
[iyunv@computer ~]# curl http://127.1/echo
hello echo

8.付tnginx启动文件;
#! /bin/sh
# chkconfig: 2345 55 25

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

set -e
[ -x "$DAEMON" ] || exit 0

do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}

do_stop() {
kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}

do_reload() {
kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac

exit 0


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-14955-1-1.html 上篇帖子: nginx日志方面知识整理 下篇帖子: 如何正确设置nginx中remote_addr和x_forwarded_for参数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表