`
galo
  • 浏览: 37375 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

阅读更多
1、下载OpenResty和Redis

OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz
Redis下载地址:wget http://download.redis.io/releases/redis-2.8.6.tar.gz

2、安装依赖包
yum install -y gcc gcc-c++ readline-devel pcre-devel openssl-devel tcl perl


3、安装OpenResty
tar zxvf ngx_openresty-1.4.3.6.tar.gz
cd ngx_openresty-1.4.3.6
./configure --with-luajit
make && make install


lua和redis等相关模块就已经安装完成,利用下面命令查看。
/usr/local/openresty/nginx/sbin/nginx -V


设置Nginx为服务和开机启动
vi /etc/rc.d/init.d/nginx

#!/bin/bash
# Tengine Startup script# processname: nginx
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/openresty/nginx/sbin/nginx
nginx_config=/usr/local/openresty/nginx/conf/nginx.conf
nginx_pid=/usr/local/openresty/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "tengine already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;

status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL

保存退出

chmod 775 /etc/rc.d/init.d/nginx   #赋予文件执行权限
chkconfig  --level 012345 nginx on   #设置开机启动
service nginx start


4、安装Redis
tar zxvf redis-2.8.6.tar.gz
mv redis-2.8.6 redis
cd redis
make MALLOC=libc
make install


设置Redis的配置文件
vi /usr/local/redis/redis.conf

#是否作为守护进程运行
daemonize yes
#如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
pidfile redis.pid
#绑定主机IP,默认值为127.0.0.1
#bind 127.0.0.1
#Redis默认监听端口
port 6379
#客户端闲置多少秒后,断开连接,默认为300(秒)
timeout 300
#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
loglevel verbose
#指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志
logfile stdout
#可用数据库数,默认值为16,默认数据库为0
databases 16
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1w条keys数据被改变时,60秒刷新到disk一次
save 60 10000
#当dump .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
#本地数据库存放路径,默认值为 ./
dir ./


调整内存分配策略
查看一下内存分配策略
vi /proc/sys/vm/overcommit_memory 
注意用vi或vim是不能修改里面的值的,需要使用下面的方法
echo "1" >>/proc/sys/vm/overcommit_memory

该文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存。
Redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为 8G,这个时候也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)
启动服务
redis-server /usr/local/redis/redis.conf

通过redis-cli命令来实际操作一下

关闭服务
redis-cli shutdown
如果端口变化可以指定端口
redis-cli -p 6380 shutdown

保存/备份
数据备份可以通过定期备份该文件实现。
因为redis是异步写入磁盘的,如果要让内存中的数据马上写入硬盘可以执行如下命令:
redis-cli save 或者 redis-cli -p 6380 save(指定端口)
注意,以上部署操作需要具备一定的权限,比如复制和设定内核参数等。
执行redis-benchmark命令时也会将内存数据写入硬盘。
设置Redis开机自启
vi /etc/rc.d/init.d/redis

#!/bin/bash
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig:   - 80 12
# description:  Redis is a persistent key-value database
# processname: redis-server
# config:      /etc/redis/redis.conf
# pidfile:     /var/run/redis.pid

source /etc/init.d/functions

BIN="/usr/local/bin"
CONFIG="/usr/local/redis/redis.conf"
PIDFILE="/var/run/redis.pid"


### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0
prog="redis-server"
desc="Redis Server"

start() {

        if [ -e $PIDFILE ];then
             echo "$desc already running...."
             exit 1
        fi

        echo -n $"Starting $desc: "
        daemon $BIN/$prog $CONFIG

        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}

stop() {
        echo -n $"Stop $desc: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
        return $RETVAL
}

restart() {
    stop
    start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
        RETVAL=$?
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac

exit $RETVAL

保存退出
chmod 777 /etc/rc.d/init.d/redis
chkconfig redis on
service redis start    #stop,restart

5、在Nginx中调用lua脚本简单读取Redis中的数据
vi /usr/local/openresty/nginx/conf/nginx.conf

在server配置节中增加
location /test {
            default_type text/plain;
            content_by_lua_file /usr/local/test.lua;
        }

保存退出,然后创建lua脚本文件
vi /usr/local/test.lua

local redis = require "resty.redis"
local cache = redis.new()
cache.connect(cache, '127.0.0.1', '6379')
local res = cache:get("foo")
if res==ngx.null then
    ngx.say("This is Null")
    return
end
ngx.say(res)

保存退出,重启Nginx
service nginx restart

6、测试

访问Nginx地址:http://127.0.0.1/test观察效果,
可设置foo值观察效果。

原文地址:http://www.cnblogs.com/kgdxpr/p/3550633.html
  • 大小: 19.4 KB
  • 大小: 5.9 KB
分享到:
评论

相关推荐

    openresty 最佳实践

    OpenResty是一种基于Nginx和LuaJIT的全功能Web平台,它允许开发者在Nginx核心上直接运行Lua脚本。OpenResty集成了大量优秀的Lua库、第三方模块,以及大多数的Nginx模块,可以用于构建可扩展的Web应用、Web服务、动态...

    lua openresty

    OpenResty是一个基于Nginx与LuaJIT的高性能Web平台,它利用Lua语言的简洁、易学和易用特性,为开发者提供了极高的可编程性和扩展性。OpenResty不仅能够处理数以十万计的并发连接,而且因为它的非阻塞I/O模型,它也...

    ngx_openresty_lua_技术交流实践

    - **Lua与Redis交互**:掌握在OpenResty中使用Lua操作Redis数据库进行数据读写的高级技巧。 ### LuaCjsonLibrary - **JSON处理**:了解如何在Lua中进行JSON解析,异常处理及优化。 ### Nginx状态查看器 - **理解...

    OpenResty最佳实践

    OpenResty是一款基于Nginx和LuaJIT的Web平台,它允许开发者在Nginx中直接使用Lua语言来编写业务逻辑,从而可以提供高性能、可扩展的Web应用。OpenResty最佳实践就是关于如何利用OpenResty高效地构建Web应用和后端...

    ngx_openresty服务器安装步骤.docx

    ngx_openresty是一款基于Nginx的全功能Web平台,它集成了LuaJIT脚本语言,使得开发者能够利用Lua的高效性能来扩展Nginx的功能,构建高性能的Web服务和API后端。OpenResty的目标是提供一个完整的、端到端的解决方案,...

    《OpenResty最佳实践》 .pdf

    OpenResty是一个基于Nginx和LuaJIT的全功能Web平台,它将Lua脚本语言嵌入到Nginx服务器中,可以用来构建动态的Web应用和高性能Web服务。《OpenResty最佳实践》这本书籍,旨在向读者介绍OpenResty的使用方法和最佳...

    ngx_openresty-1.7.4.1.tar.gz

    ngx_openresty是一款基于Nginx的全功能Web平台,它集成了许多强大的Lua扩展模块,使得Nginx不仅能够处理静态文件和反向代理,还能执行动态脚本,实现高性能的Web应用服务器功能。在Linux环境下,安装ngx_openresty...

    OpenResty 最佳实践

    综上所述,这份文档是OpenResty用户和开发者的宝贵资料,通过实际案例和详细的步骤指导,涵盖了从基础到高级的多种技术细节,可以帮助读者更快地掌握OpenResty和Lua的使用,并在实际工作中解决遇到的问题。

    openresty最佳实战

    文档中提到了在Windows平台、CentOS平台、Ubuntu平台和Mac OS X平台上的安装方法,这是确保OpenResty应用正常运行的先决条件。 在实际应用中,了解OpenResty的执行阶段概念和正确记录日志是至关重要的。此外,热...

    OpenResty-Best-Practices.pdf

    OpenResty是一个基于Nginx和LuaJIT的高性能Web平台,它允许开发者将Lua脚本直接嵌入到Nginx配置中运行,从而提供一个灵活且高性能的Web应用服务器环境。本篇文档旨在介绍OpenResty的最佳实践,涵盖从基础概念到高级...

    OpenResty安装过程.pptx

    #### 二、OpenResty在CentOS中的安装步骤 - **准备工作**: - 确保已经安装了`yum-utils`工具。 - 添加OpenResty的YUM仓库。 - **添加仓库**: ```bash sudo yum install yum-utils sudo yum-config-manager --...

    OpenResty Best Practices.pdf

    OpenResty环境的搭建部分,覆盖了Windows、CentOS、Ubuntu和Mac OS X等不同操作系统上的安装步骤,帮助开发者在各种环境下快速上手。此外,书中还涉及到了Nginx的热更新、代码调试、日志记录的最佳实践,以及如何...

    openresty实践

    在OpenResty的环境中搭建和配置,特别是在不同的操作系统平台(Windows、CentOS、Ubuntu、MacOS)上,需要了解平台特有的注意事项和安装步骤。构建简单的Hello World程序是开始实践的第一步。 OpenResty提供了丰富...

    openresty最佳实践

    - **Lua Nginx Module**:允许直接在Nginx配置文件中嵌入Lua代码。 #### 十、测试与部署 ##### 10.1 测试策略 在部署前进行充分的测试是非常重要的: - **单元测试**:确保每个模块都按预期工作。 - **集成测试**...

Global site tag (gtag.js) - Google Analytics