Nginx[004] 安装Nginx & lua模块平滑升级

安装 Nginx

下载&解压

# wget http://nginx.org/download/nginx-1.14.2.tar.gz
# tar xf nginx-1.14.2.tar.gz -C /usr/local

添加预启动的执行环境

# yum install pcre pcre-devel openssl-devel gcc gcc-c++ perl-ExtUtils-Embed

添加编译安装选项,并检查编译环境

# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_perl_module

编译安装

# make && make install

增加环境变量

# vim /etc/profile.d/nginx.sh
    PATH=/apps/nginx/sbin/:$PATH

配置nginx的service 脚本例子

# vim /usr/lib/systemd/system/nginx.service
    [Unit]
    Description=nginx
    After=network.target 
       
    [Service] 
    Type=forking 
    ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
    ExecReload=/apps/nginx/sbin/nginx -s reload
    ExecStop=/apps/nginx/sbin/nginx -s quit
    PrivateTmp=true 
       
    [Install] 
    WantedBy=multi-user.target

赋予脚本执行权限

chmod +x /usr/lib/systemd/system/nginx.service

设置nginx.service为系统服务

systemctl enable nginx.service

通过系统服务操作nginx

systemctl start nginx.service
systemctl reload nginx.service
systemctl restart nginx.service
systemctl stop nginx.service
systemctl status nginx.service
systemctl daemon-reload

查看占用80端口的进程

# netstat -lnp|grep :80

安装Lua模块

  1. 装lua
# wget  http://luajit.org/download/LuaJIT-2.0.5.tar.gz 
# tar -zxvf  LuaJIT-2.0.5.tar.gz
# cd LuaJIT-2.0.5
# make install PREFIX=/usr/local/LuaJIT
  1. /etc/profile 文件中加入环境变量
export LUAJIT_LIB=/usr/local/LuaJIT/lib
export LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0

路径是上面luajit实际安装路径,路径错误安装nginx的lua模块时会报错找不到luajit库

  1. 下载ngx_devel_kit模块
# wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz

然后解压缩
NDK(nginx development kit)模块是一个拓展nginx服务器核心功能的模块,第三方模块开发可以基于它来快速实现。 NDK提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。

  1. 下载lua-nginx-module模块
# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz

然后解压缩
lua-nginx-module模块使nginx中能直接运行lua

  1. 安装相应的模块

找到之前已有的模块

# nginx -V

输出nginx版本

# nginx -v

下载同版本的nginx源码 并解压

# wget http://nginx.org/download/nginx-1.14.2.tar.gz
# tar xf nginx-1.14.2.tar.gz && cd nginx-1.14.2

备份原Nginx文件

# mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak
# cp -r /etc/nginx{,.bak}

编译安装(平滑)
增加这两个模块
–add-module=/vagrant/lua-nginx-module-0.10.9rc7
–add-module=/vagrant/ngx_devel_kit-0.3.0

./configure  --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_perl_module --add-module=/vagrant/lua-nginx-module-0.10.9rc7 --add-module=/vagrant/ngx_devel_kit-0.3.0
# make
# cd objs
# cp nginx /apps/nginx/sbin/
# cd /vagrant/nginx-1.14.2
# make upgrade

此处出现报错

/apps/nginx/sbin/nginx -t
/apps/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or director

软连接的问题

首先, 根据报错找到文件的真实位置

# find / -name libluajit-5.1.so.2
/usr/local/LuaJIT/lib/libluajit-5.1.so.2

找到软连接的参考路径

# ldd $(which /apps/nginx/sbin/nginx)
libluajit-5.1.so.2 => not found

创建软连接

# ln -s /usr/local/LuaJIT/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

// 再次执行升级

[root@ nginx-1.14.2]# make upgrade

成功输出如下:

/apps/nginx/sbin/nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /apps/nginx/logs/nginx.pid`
sleep 1
test -f /apps/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /apps/nginx/logs/nginx.pid.oldbin`

本次操作给将来留下一个坑, 因为安装模块时所使用的文件下载后解压,就直接用, 没有管理到统一路径, 这可能会给将来留下隐患, 建议统一管理安装时所使用的模块安装包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值