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/目录下的,所以我的配置环境如下:
– 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: error: the ngx_drizzle addon requires the libdrizzle library.
可以这么解决:
http://openresty.org/download/drizzle7-2011.07.21.tar.gz
如果下面还是报错 那么就执行:
重新编译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了。
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了。
相关文章推荐
- CentOS 6.4下安装Nginx+MYSQL+Lua+Redis(上)
- 阿里云CentOS7.3版本安装Java jdk/MySQL/Nginx/Tomcat/Redis个人记录
- centos6.5下安装php7,nginx,mysql,redis.composer
- CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
- centos 7 yum命令安装 Nginx、PHP 7、MySQL 57 、redis
- centos下gitlab私服完整安装部署(nginx+MySQL+redis+gitlab-ce+gitlab-shell+)
- centos6.5安装配置nginx+php+mysql+httpsqs+ttserver+redis
- CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
- CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
- CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
- CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
- Centos6.4_X64编译安装php-5.4.17、nginx-1.4.2、mysql-5.6.13
- CentOS 6.4下通过YUM快速安装配置LAMP服务器(Apache+PHP5+MySQL)
- centos升级到6.4 yum安装 nginx,mysql,php
- CentOS 5.5安装Nginx、PHP(FastCGI)、MySQL --搭建LNMP环境安装Wordpress、Discuz
- CentOS 6.8 安装LNMP环境(Linux+Nginx+MySQL+PHP)
- centos 6.2 ubuntu 12.04 上安装apache(httpd2.4) nginx1.2 php5.3.10 mysql5.3
- 经验回顾:在CentOS下用源码安装LNMP(nginx,mysql,php)
- Centos 6.3 编译安装Nginx+php+Mysql
- Centos编译安装 LAMP (apache-2.4.7 + mysql-5.5.35 + php 5.5.8)+ Redis