热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tnginx调用lua模块编译安装

nginx牛B之处略lua牛B之处略1.软件下载(目前最稳定版本):tnginx最新动态[2014-01-08]Tengine-2.0.0开发版正式发布(变更列表)[2013-11

nginx 牛B之处 略

lua    牛B之处 略


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/lua-nginx-module/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/project/pcre/pcre/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库位置

[root@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路径


[root@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

验证

[root@tzhadoop08 LuaJIT-2.0.2]# echo $LUAJIT_LIB

/usr/local/luajit/lib

[root@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/

[root@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测试配置文件:


[root@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测试访问:

[root@computer ~]# curl http://127.1/lua

hello, lua

[root@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


本文出自 “康建华” 博客,请务必保留此出处http://michaelkang.blog.51cto.com/1553154/1359106


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
  • 1、概念解读1.1什么是链接?链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的方法。Linux系统中有两种链接:硬链接(HardLink)和软链接(SoftLink), ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 我们知道CDN护航了双11十年,却不知道背后有那么多故事
    2019独角兽企业重金招聘Python工程师标准摘要:一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天࿰ ... [详细]
author-avatar
看破红尘红尘看破_728
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有