安装 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模块
- 装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
- /etc/profile 文件中加入环境变量
export LUAJIT_LIB=/usr/local/LuaJIT/lib
export LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0
路径是上面luajit实际安装路径,路径错误安装nginx的lua模块时会报错找不到luajit库
- 下载ngx_devel_kit模块
# wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
然后解压缩
NDK(nginx development kit)模块是一个拓展nginx服务器核心功能的模块,第三方模块开发可以基于它来快速实现。 NDK提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。
- 下载lua-nginx-module模块
# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
然后解压缩
lua-nginx-module模块使nginx中能直接运行lua
- 安装相应的模块
找到之前已有的模块
# 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`
本次操作给将来留下一个坑, 因为安装模块时所使用的文件下载后解压,就直接用, 没有管理到统一路径, 这可能会给将来留下隐患, 建议统一管理安装时所使用的模块安装包