您的位置:首页 > 数据库 > Redis

CentOS 6.4下安装Nginx+MYSQL+Lua+Redis(下)

2013-12-17 18:50 781 查看
接上一篇文章:《CentOS 6.4下安装Nginx+MYSQL+Lua+Redis(上)》

5、安装LuaJIT

下载luajit,官网http://luajit.org/

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

cd LuaJIT-2.0.1

make PREFIX=/usr/local//LuaJIT-2.0.1

make install PREFIX=/usr/local/LuaJIT-2.0.1

6、安装Nginx 第三方模块memc,lua,drizzle模块

ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本。

为了避免后面配置麻烦,这里将所有可能要用的模块都一并安装、编译:

详细模块地址分别为:
· ngx_devel_kit https://github.com/simpl/ngx_devel_kit
· set-misc-nginx-module #874554">https://github.com/agentzh/set-misc-nginx-module
· memc-nginx-module https://github.com/agentzh/memc-nginx-module
· echo-nginx-module https://github.com/agentzh/echo-nginx-module
· lua-nginx-module https://github.com/chaoslawful/lua-nginx-module
· srcache-nginx-module https://github.com/agentzh/srcache-nginx-module
· drizzle-nginx-module https://github.com/chaoslawful/drizzle-nginx-module
· rds-json-nginx-module #874554">https://github.com/agentzh/rds-json-nginx-module
在编译Nginx之前需要设置一下这两个库的LIB和INCLUDE文件地址:

– lua –
export LUA_LIB=/path/to/lua/lib
export LUA_INC=/path/to/lua/include
PS:这里的/path/to指你的LuaJIT的安装目录,所以你需要将它更改为你安装的目录,比如我我的LuaJIT安装安装在/usr/local/目录下的,所以我的配置环境如下:
– lua –

export LUA_LIB=/usr/local/luaJIT/lib

export LUA_INC=/usr/local/lua/include/luaJIT-2.0


– drizzle –
export LIBDRIZZLE_INC=/opt/drizzle/include/libdrizzle-1.0
export LIBDRIZZLE_LIB=/opt/drizzle/lib
这个和上面一样配置。
不过值得注意的是,需要实现安装drizzle7库文件:
安装drizzle7-2011.07.21.tar.gz

wget http://agentzh.org/misc/ href="http://www.server110.com/nginx/" target=_blank>nginx/drizzle7-2011.07.21.tar.gz

tar zxvf drizzle7-2011.07.21.tar.gz

cd drizzle7-2011.07.21

./configure --prefix=/usr/local/drizzle7 --without-server

make install-libdrizzle-1.0

echo "/usr/local/drizzle7/lib/" >>/etc/ld.so.conf

ldconbfig 为了让动态链接库为系统所共享,我们这里用ldconfig

Nginx编译选项如下,请注意先后顺序:
./configure –prefix=../nginx \
--with-pcre=../pcre \
--add-module=../ngx_devel_kit \
–add-module=../set-misc-nginx-module \
–add-module=../memc-nginx-module \
–add-module=../echo-nginx-module \
–add-module=../lua-nginx-module \
–add-module=../srcache-nginx-module \
–add-module=../drizzle-nginx-module \
–add-module=../rds-json-nginx-module
PS:需要注意的是../是指你解压的每个模块的路径。比方我解压的上面这些模块的路径为:/usr/local/extend,那么上面就应该是:
./configure –prefix=/usr/local/src/nginx-1.3.16 \      ###这里是你Nginx源文件的目录

--with-pcre=/usr/local/pcre \                                   ###这里是安装pcre文件的目录

--add-module=/usr/local/extend/ngx_devel_kit \     ###一下为安装的各个扩展模块的目录

-–add-module=/usr/local/extend/set-misc-nginx-module \

-–add-module=/usr/local/extend/memc-nginx-module \

-–add-module=/usr/local/extend/echo-nginx-module \

-–add-module=/usr/local/extend/lua-nginx-module \

-–add-module=/usr/local/extend/srcache-nginx-module \

-–add-module=/usr/local/extend/drizzle-nginx-module \

-–add-module=/usr/local/extend/rds-json-nginx-module
如何安装nginx时遇到下面问题:

./configure: error: the ngx_drizzle addon requires the libdrizzle library.

可以这么解决:
http://openresty.org/download/drizzle7-2011.07.21.tar.gz
tar xzvf drizzle7-2011.07.21.tar.gz
cd drizzle7-2011.07.21/
./configure --without-server
make libdrizzle-1.0
make install-libdrizzle-1.0

如果下面还是报错 那么就执行:

yum install readline-devel ncurses-devel


重新编译Nginx二进制,Nginx需要quit再启动。而普通配置更新则reload即可:
1. kill -HUP `cat /path/nginx/logs/nginx.pid` ##同样,这里的path也是你安装nginx的路径

2. /path/nginx/sbin/nginx -s reload
PS:详细的模块编译可以参考各自模块的文档说明。

启动及重新启动nginx,重启nginx后丢失nginx.pid问题解决

该部分来自:http://www.2cto.com/os/201308/236350.html

停止操作是通过向nginx进程发送信号来进行的

步骤1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里 面找master进程,它的编号就是主进程号了。
步骤2:发送信号
从容停止Nginx:
kill -QUIT 主进程号
快速停止Nginx:
kill -TERM 主进程号
强制停止Nginx:
pkill -9 nginx

另外, 若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文 件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
kill -信号类型 '/usr/nginx/logs/nginx.pid'

平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx 发送信号,平滑重启。
平滑重启命令:
kill -HUP 住进称号或进程号文件路径
或者使用

/usr/nginx/sbin/nginx -s reload

注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者

/usr/nginx/sbin/nginx -t

平滑升级
如果服务器正在运行的Nginx要进行升级、添加或删除模块时,我们需 要停掉服务器并做相应修改,这样服务器就要在一段时间内停止服务,Nginx可以在不停机的情况下进行各种升级动作而不影响服务器运行。
步骤1:
如 果升级Nginx程序,先用新程序替换旧程序文件,编译安装的话新程序直接编译到Nginx安装目录中。
步 骤2:执行命令
kill -USR2 旧版程序的主进程号或进程文件名
此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版 Nginx。新旧Nginx会同市运行,共同处理请求。
这时要逐步停止旧版 Nginx,输入命令:
kill -WINCH 旧版主进程号
慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版 工作进程。

此 时,我们可以决定使用新版还是恢复到旧版。
不重载配置启动新/旧工作进程
kill -HUP 旧/新版主进程号
从容关闭旧/新进程
kill -QUIT 旧/新主进程号
如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
kill -TERM 旧/新工作进程号

这样下来,如果要恢复到旧版本,只需要上面的几个步 骤都是操作新版主进程号,如果要用新版本就上面的几个步骤都操作旧版主进程号就行了。

上面就是Nginx的一些基本的操作,希望以后Nginx能有更好的方法来处理这些操作, 最好是Nginx的命令而不是向Nginx进程发送系统信号。

在使用的阿里云服务器上,进程性的 nginx -s stop后再次启动nginx -s reload ,总是会报错误nginx: [error] open() "/alidata/server/nginx/logs/nginx.pid" failed (2: No such file or directory),这应该是因为把nginx进程杀死后pid丢失了,下一次再开启nginx -s reload时无法启动,重装可以解决这个问题,但是太麻烦了。

一开始百度解决该问题。只是找到几个求助答案。没有实际有效的方法,于是用google开始搜索,虽然英语比较恶心,但一般,英文网站上总会有解决方法这一次也不另外。

issued a nginx -s stop and after that I got this error when trying to reload it.

[error]: invalid PID number "" in "/var/run/nginx.pid"

That /var/run/nginx/pid file is empty atm.

What do I need to do to fix it?

nginx -s reload is only used to tell a running nginx process to reload its config. After a stop, you don't have a running nginx process to send a signal to. Just run nginx (possibly with a -c /path/to/config/file)

于是我用了这方法,也就是nginx -c /path/to/config/file) //在我机器上是这样的/alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf

完成所有这些安装配置以后,就可以尽情的完爆Nginx和LUA了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: