百度坐标的映射是否圆内均匀分布点坐标

tnginx调用lua模块编译安装
nginx 牛B之处 略
牛B之处 略
1.软件下载(目前最稳定版本):
tnginx最新动态
[] Tengine-2.0.0 开发版正式发布(变更列表)
[] 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
/simpl/ngx_devel_kit/tar.gz/v0.2.19
lua-nginx-module-0.9.4.tar.gz
/chaoslawful/lua-nginx-module/releases/tag/v0.9.4
/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 install PREFIX=/usr/local/luajit
4.1 LIB库位置
[ 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路径
[ LuaJIT-2.0.2]# ll /usr/local/luajit/include/luajit-2.0/
-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
配置一下 luajit 或 lua 的环境变量(Nginx编译时需要):
我的测试环境里,配置如下:
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
[ LuaJIT-2.0.2]# echo $LUAJIT_LIB
/usr/local/luajit/lib
[ 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/
[ 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
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/
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 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测试配置文件:
[ ~]# more /usr/local/nginx/conf/nginx.conf
worker_connections
default_type
application/octet-
log_format
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log
logs/access.
#keepalive_timeout
keepalive_timeout
access_log
/data/logs/access_kjh.
location /echo {
default_type 'text/plain';
echo 'hello echo';
location /lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
7.1测试访问:
[ ~]# curl http://127.1/lua
hello, lua
[ ~]# curl http://127.1/echo
hello echo
8.付tnginx启动文件;
#! /bin/sh
# chkconfig:
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# 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
[ -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
echo -n "Starting $DESC: $NAME"
echo -n "Stopping $DESC: $NAME"
reload|graceful)
echo -n "Reloading $DESC configuration..."
echo -n "Restarting $DESC: $NAME"
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" &&2
本文出自 “康建华” 博客,请务必保留此出处http://michaelkang./9106
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
lua和c有两种关系:
一种是在lua中调用C的函数,C称为库代码,一种是C中调用lua,C就称为应用程序代码,此时C中包含了lua的解释器
注意在C++中,通常要把lua的一些头文件定义在extern &c&中,因为他们是C语言实现的.
1. 作为应用程序调用lua代码: char*
一.下载LuaJIT
文件名:LuaJIT-2.0.2.tar.gz
下载地址(官网):http://luajit.org/download.html
wget -c http://luajit.org/download/LuaJIT-2.0.2.tar.gz 二.编译.安装
Sphinx 安装wget /files/sphinx-1.10-beta.tar.gztar zxf sphinx-1.10-beta.tar.gzcd sphinx-1.10-beta./configure –prefix=/usr/local/sphinx –with-mysqlmake &&amp ...
也就是和package.json处于同一级别的目录下. 我想装在某个根目录下,这样就可以在各个项目目录中调用根目录的安装模块来执行任务了,省的每个项目目录去安装. 但是,这个想法,我实践了,证明是不行的. 不知道有没有解决办法? 在这么做之前你需要知道 grunt的module必须在gruntfile的相对路径中 即使模块安装在global中 grunt也不 ...
依赖包(附件有下载):
包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll windows windows: 将luajava-1.1.dll拷贝到java.libary.path目录(通过System.getProperty(&j ...下次自动登录
现在的位置:
& 综合 & 正文
源码安装nginx并配置Lua模块
今天需要在测试机布置nginx测试环境,测试机不能联网。所以只能用scp上传nginx源码安装。期间遇到不少问题
1.下载nginx源码
$wget 'http://sysoev.ru/nginx/nginx-1.2.6.tar.gz'
2.下载lua-nginx-module源码
$git clone /chaoslawful/lua-nginx-module.git
$tar zcvf lua-nginx-module
//上传到测试机
//$scp -p nginx-1.2.6.tar.gz port user@ip:nginx-1.2.6.tar.gz
3.编译nginx
$tar -zxvf nginx-1.2.6.tar.gz
$cd nginx-1.2.6.tar.gz
$configure --add-module=/root/lua-nginx-module
提示找不到lua库
安装lua源码。在lua.org官方主页下载,一开始我直接下的最新版,最后才发现:
ngx_lua does not support Lua 5.2.Only
Lua 5.1.x and LuaJIT 2.0 are supported. See
后悔没先看wiki,
4.下载lua源码
$wget http://www.lua.org/ftp/lua-5.1.5.tar.gz
$tar -zxvf lua-5.1.5.tar.gz
$make linux
gcc -O2 -Wall -DLUA_USE_LINUX
-c -o lua.o lua.c
在包含自 lua.h:16 的文件中,
从 lua.c:15:
luaconf.h:275:31: 错误:readline/readline.h:没有那个文件或目录
luaconf.h:276:30: 错误:readline/history.h:没有那个文件或目录
5.安装readline
$wget ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz
$tar -zxvf readline-6.2.tar.gz
$./configure
$make install
再重新编译lua, 提示-lncurses失败,也就是没有ncurses库
/usr/bin/ld: cannot find -lncurses
collect2: ld 返回 1
make[2]: *** [lua] 错误 1
make[2]: Leaving directory `/root/lua-5.1.5/src'
make[1]: *** [linux] 错误 2
make[1]: Leaving directory `/root/lua-5.1.5/src'
make: *** [linux] 错误 2
6.安装ncurses
$wget ftp://invisible-island.net/ncurses/ncurses-5.9.tar.gz
$tar -zxvf ncurses-5.9.tar.gz
$./configure
$make & make install
执行到中途,提示:
/bin/sh: -I../c++: 没有那个文件或目录
make[1]: *** [../objects/cursesf.o] 错误 127
make[1]: Leaving directory `/root/ncurses-5.9/c++'
make: *** [all] 错误 2
这个问题纠结了好长时间,在找到相关的,但是发现是gentoo系统。不过也试了试安装g++,下载g++源码时发现完整的包有78M,就偷懒下了个gcc-g++-xxx.tar.gz。最后解压发现不完整,根本不能编译。
最后才在找到答案。
If you don't have a c++ compilter, try adding --without-cxx to your
./configure line.
安装ncurse
$./configure --without-cxx
$make & make install
7.安装nginx(因为主要目的是测试lua模块,所以没安装http_rewrite模块和http_gzip模块)
$./configure --add-module=/root/lua-nginx-module --without-http_rewrite_module --without-http_gzip_module
$make install
/usr/local/lib/liblua.a(loadlib.o): In function `ll_loadfunc':
loadlib.c:(.text+0x7d4): undefined reference to `dlsym'
loadlib.c:(.text+0x7e2): undefined reference to `dlerror'
loadlib.c:(.text+0x8ad): undefined reference to `dlopen'
loadlib.c:(.text+0x8c3): undefined reference to `dlerror'
/usr/local/lib/liblua.a(loadlib.o): In function `gctm':
loadlib.c:(.text+0xdbc): undefined reference to `dlclose'
collect2: ld 返回 1
make[1]: *** [objs/nginx] 错误 1
make[1]: Leaving directory `/root/nginx-1.2.7'
make: *** [install] 错误 2
根据的提示,在obj/Makefile的对应位置(搜索llua)添加-ldl选项
因为要使用set指令,无奈必须安装rewrite模块。
又需要安装 pcre, g++, gmp,mpfr,mpc ...
checking for x86_64-unknown-linux-gnu-gcc... /root/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/root/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include
-isystem /usr/local/x86_64-unknown-linux-gnu/sys-include
checking for suffix of object files... configure: error: in `/root/gcc-4.6.1/x86_64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] 错误 1
make[2]: Leaving directory `/root/gcc-4.6.1'
make[1]: *** [stage1-bubble] 错误 2
make[1]: Leaving directory `/root/gcc-4.6.1'
make: *** [all] 错误 2
http://gcc.gnu.org/wiki/FAQ#configure_suffix
&&&&推荐文章:
【上篇】【下篇】把Lua编译进nginx步骤方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了把Lua编译进nginx步骤方法,本文讲解了操作步骤以及可能出现的错误解决方法,需要的朋友可以参考下
Lua编译进nginx的方法
1、先安装lua-jit,网上说也可以下载lua,不过lua-jit效率比较高,地址:
我下的是2.0.3版本的
下载解压后,直接make && make install就可以了,默认安装在/usr/local目录
2、下载ngx devel包
注意,这个是一个nginx的扩展,不需要编译
3、下载nginx的lua扩展
4、导出两个变量
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-&VERSION&
其中LUAJIT表示luajit的安装目录
5、接下来是编译nginx了
&./configure --prefix=/opt/nginxrw --with-http_gzip_static_module --with-http_stub_status_module
--with-http_ssl_module&&& --add-module=/data/src/lua-nginx-module-0.9.8&&
--add-module=/data/src/ngx_devel_kit-0.2.19
其中两个--add-module表示lua的nginx模块和ngx devel包扩展
启动时,可能报某个库的路径找不到:
sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
用ldd命令可以看下某个二进制文件的引用的动态库
解决办法:
echo "/usr/local/lib" && /etc/ld.so.conf.d/usr_local_lib.conf
ok,是不是编译成功了呢,开始编写lua脚本吧
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Nginx + LuaJIT + Redis 编译配置教程
最近工作上需要本地开发机模拟服务器的环境, 最初的需求考虑是 需要搭建 Nginx + Luajit + Redis 组合的配置, 因为本博客所在主机 中使用的是一样的方式配置, 当时就直接参考自己的操作笔记, 重新 搭建一套在开发机上. 因为这些都是基础的系统配置信息,干脆
最近工作上需要本地开发机模拟服务器的环境, 最初的需求考虑是
需要搭建 Nginx + Luajit + Redis 组合的配置, 因为本博客所在主机
中使用的是一样的方式配置, 当时就直接参考自己的操作笔记, 重新
搭建一套在开发机上. 因为这些都是基础的系统配置信息,干脆分享
出来,也希望从读者中收获建议和改善的方案 :)
首先是说明配置的方式和原因:
其实是选择最终二进制文件部署的路径,
我选择的是 /opt/下:
/opt/nginx /opt/redis /opt/luajit 部署的详情
1. 下载源码包编译安装
Makefile 及脚本里通常的 PREFIX 变量(编译后的路径)
在/usr/local/下,因为我经常更新自己使用的工具或者依赖库(非系统命令安装),
所以我选择在 /opt/下统一放置.
例如工具类: nginx ffmpeg redis mysql luajit lua
他们的配置是
/opt/nginx /opt/ffmpeg /opt/redis
/opt/mysql /opt/luajit /opt/lua
如果是纯库文件 (lib) 例如: boost libevent libev
那么统一放在 /opt/libs/ 下:
/opt/libs/boost /opt/libs/libevent /opt/libs/libev
2. 版本的指定和更新: 经常更新软件, 我会遇到以下问题:
开发项目A依赖 redis 2.6
开发项目B依赖 redis 3.0
其他项目多数依赖 redis 2.8
版本需求不一样, 那么可以这么玩:
/opt/redis/2.6.0
/opt/redis/3.0.0
/opt/redis/2.8.0 同时在 /opt/redis/ 下做一个软链接
即 default -& 2.8.0:
cd /opt/redis
ln -sfn 2.8.0 default Note: ln 参数 n 是在文件夹软链重定向时生效, 否则链接失败
/etc/profile 下定义工具的环境变量
/etc/ld.so.conf.d/ 文件下定义依赖库的路径
基本上是公式化的:
/opt/nginx/default
/opt/redis/default
/opt/libs/libev/default
/opt/libs/boost/default
default 其实是具体编译版本的文件夹软链接
前提描述完毕, 下面是版本选择:
Nginx 1.6.2
Redis 2.8.17
LuaJIT 2.0.3
Ubuntu 14.04
需要提前安装的库有:
pcre zlib openssl build-essential
1. 编译 Redis 2.8.17
mkdir -p /opt/redis/2.8.17 # 先定义好编译后的路径
进入源码目录
cd redis-2.8.17 make && make install
将 源码目录下编译生成的 src/redis-server src/redis-client
放置在 /opt/redis/2.8.17 下, 其他的辅助工具根据需求配置
(如 redis-benchmark)
cd /opt/redis/
sudo ln -sfn 2.8.17 default
/opt/redis 下定义启动脚本
mkdir init
添加 init/redis-server 脚本 脚本内容看
[gist 传送门]
做 init 脚本软连接到 /etc/init.d
因为 service 命令寻找的是 /etc/init.d 下的脚本名字:
ln -sf /opt/redis/init/redis-server /etc/init.d/
2. 编译 LuaJIT
cd LuaJIT-2.0.3
vim Makefile # 修改
export PREFIX= /opt/luajit/2.0.3
保存退出编译
sudo make install
cd /opt/luajit/
ln -sfn 2.0.3 default # 建立软链接
3. 编译 nginx
cd /your_build_path/ # 找一个用于编译工作的目录
1) 首先下载nginx 第三方模块
nginx 开发模块, 目录名是 ngx_devel_kit
git clone /simpl/ngx_devel_kit.git
nginx lua 模块, 目录名是 lua-nginx-modul
git clone /chaoslawful/lua-nginx-module.git
nginx lua调用的 redis 接口脚本, 目录名是 lua-resty-redis
git clone /agentzh/lua-resty-redis.git
nginx lua调用的上传模块脚本, 目录名是 lua-resty-upload
git clone /openresty/lua-resty-upload.git
mkdir -p /opt/nginx/1.6.2
放置 init 脚本的路径, 稍后会做软链接
mkdir -p /opt/nginx/init
放置 pid 文件, init 脚本判断状态阅读需要
mkdir -p /opt/nginx/run
daemon 模式时, init 脚本以文件方式上锁, 防止重复 start 进程
mkdir -p /opt/nginx/lock
tmp 文件, nginx client buffer 缓存文件会在这里生成,
以及进程产生的临时文件
mkdir -p /opt/nginx/tmp/client
mkdir -p /opt/nginx/tmp/proxy
mkdir -p /opt/nginx/tmp/fcgi
nginx 启动时加载配置文件 /opt/nginx/default/conf/nginx.conf
里面会调用 include 语法, 加载指定的配置文件, 为了方便管理和规划,
建议自己自定义文件统一放在规划目录下:
nginx.conf 里配置: include /opt/nginx/sites-available/*.
存放合法的配置文件或者生效的
mkdir /opt/nginx/sites-available
存放暂时不需要的或者已经废弃的配置(可做备份)
mkdir -p /opt/nginx/sites-disable
存放 Lua 依赖脚本的路径
mkdir -p /opt/nginx/lua/share
存放 Lua c lib
mkdir -p /opt/nginx/lua/lib
存放业务的lua脚本(开发人员自己编写的)
mkdir -p /opt/nginx/lua/app
因此在 nginx conf 配置文件中, http 模块或者 server 模块
添加上如下配置信息(Lua 依赖的路径, 假设 Lua5.1版本):
lua_package_path “/opt/nginx/lua/share/?.”;
lua_package_cpath “/opt/nginx/lua/lib/?./opt/luajit/default/lib/lua/5.1/?.”;
而在location 块中执行的 Lua 脚本, 出现 content_by_lua_file 语法,
则可以指定执行的脚本存在 /opt/nginx/lua/app 路径下
mkdir -p /var/log/nginx
下载的源码包也在与上面模块一样的根目录下, 然后解压, 进入源码文件夹:
cd nginx-1.6.2
configure 编译:
# configure 编译
./configure \
--prefix=/opt/nginx/1.6.2/ \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/opt/nginx/run/nginx.pid
--lock-path=/opt/nginx/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/opt/nginx/tmp/client/ \
--http-proxy-temp-path=/opt/nginx/tmp/proxy/ \
--http-fastcgi-temp-path=/opt/nginx/tmp/fcgi/ \
--add-module=../ngx_devel_kit \
--add-module=../lua-nginx-module
make && sudo make install
部署 Lua 依赖脚本:
mkdir /opt/nginx/lua/share/restry
cp lua-restry-redis/lib/restry/redis.lua /opt/nginx/lua/share/restry/
cp lua-restry-upload/lib/restry/upload.lua /opt/nginx/lua/share/restry/
在 /opt/nginx/default/conf/nginx.conf 里配置的例子:
# 主配置文件的参数例子
# 进程数设置是 cpu核数-2, nginx master 进程只accept连接
# 例如4cpu, processes 数3
worker_processes
# 根据生产服务场景设置, 基于 LuaJIT 的nginx, lua vm 内存最大承载 1G,
# 占用内存有限, 连接数尽量设置在合理范围之内, 待测试
worker_connections
# http 块设置
lua_code_ # debug 情况下 off, 方便调试
lua_package_path "/opt/nginx/lua/share/?.";
# 如果有luajit支持,需要添加该路径
lua_package_cpath "/opt/nginx/lua/lib/?./opt/luajit/default/lib/lua/5.1/?.";
server_ # 关闭 nginx 的版本信息(对外)
default_type
application/octet-
log_format
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
error_log /var/log/nginx/error.
# 禁止了nagle算法, 即数据即时发送出去, 而不是刻意控制拥塞
keepalive_timeout 65;
# 业务配置
include /opt/nginx/sites-available/*.
nginx 服务的启动文件 [gist 传送门]
存放在 /opt/nginx/init/nginx
ln -sf /opt/nginx/init/nginx /etc/init.d/
Nginx + LuaJIT + Redis 的配置大致的手工流程描述完毕.
总结源码编译服务工具的思路:
1. 了解 Makefile 里通常会有 PREFIX 这样的关键字,
它定义了最终的编译生成路径, 无论是 configure 指定 Cprefix 参数
还是Makefile 里直接修改都是可以的.
2. 尽量不安装在默认的 /usr/local/ 下, 建议选择 /opt/ 或者
/your_self_define/ 自定义的路径, 统一放置, 无论是开发环境还是
生产环境, 干净的依赖环境有利于调试和部署.
3. 工具版本的依赖里定义一个 default 软链接, 以方便版本切换, 这是一个建议习惯.
0. 今年4月份 曾经在自己主机上 Nginx + Lua + Redis, Lua基于
LuaJIT解释器, 使用apache jmeter做并发连接测试, 在 512M内存的虚拟主机
同时 1000的连接, 每个连接一次请求对主机的cpu也只是瞬时的90%, 而所有请求都
正常返回结果, 承载高并发的 http 短连接请求稳定性在主机上测试还是可靠的, 而用
Node.js 跑了同样的服务, 会发生请求失败, 失败次数在5%左右. 当然, 测试的
环境条件也有其他影响, 比如 js的代码和依赖的库相比于 Lua的代码复杂. 如果
业务简单, 使用 Node.js + Redis 是成本最低的解决方案. 而 Nginx
方案主要在配置精力上和迁移性(Nginx bin文件, LuaJIT解释器), 做 Demo
或者需求经常变化的场景, Node.js 的部署是较为方便的.
1. 部署工具在不断更新, 也有了 Docker 这样的工具, 减少了开发者了解发行版
之间的差异的成本, 运维工程师这个职业也会有新的挑战和认识, 也许会转向更
后台和底层的方向发展, 或者以 DevOps 的方式出现.
2. 互联网行业创业是一个流行的活动, 以开发工程师为主的初创团队在运维上
经验不足, 在人力成本和招人困难的情况下会优先选择对开发者友好的开源运维
工具. 例如常用的运维开源工具就有:
部署工具 SaltStack, Puppet, Jenkins
监测工具 Nagios Zabbix
日志收集 Logstash
进程管理工具 Supervisor
然而这并不表示不需要合格的运维工程师, 或者是为开发者服务的工程师. 至于
需要的程度, 每一位开发者都会根据自己的工作经历和体会去感受 :)
原创文章,转载请注明: 转载自kaka_ace's blog
本文链接地址: Nginx + LuaJIT + Redis 编译配置教程
你最喜欢的

我要回帖

更多关于 origin不均匀横坐标 的文章

 

随机推荐