升级及动态添加模块

By admin in 3522vip on 2020年3月25日

系统基于ubuntu server 14.04.4 amd64

安装

第一步 下载并解压Nginx压缩包

从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.org/download/nginx-1.10.1.tar.gz命令直接下载
解压nginx-1.10.1.tar.gz文件:

tar zxvf nginx-1.10.1.tar.gz

第二步 配置

cd nginx-1.10.1
./configure --prefix=/usr/local/nginx

注意:

① 即使早先从没安装C compiler(C 编写翻译器),这一步将报如下错误音讯:

xueliang@dev:~/download/nginx-1.10.1$ ./configure
–prefix=/usr/local/nginx
checking for OS

  • Linux 4.2.0-27-generic x86_64
    checking for C compiler … not found

./configure: error: C compiler cc is not found

xueliang@dev:~/download/nginx-1.10.1$

能够参照那篇小说设置C
compiler,然后继续上面包车型地铁操作

② 假设以前从没安装PCRE,这一步将报如下错误音讯:

checking for PCRE library … not found
checking for PCRE library in /usr/local/ … not found
checking for PCRE library in /usr/include/pcre/ … not found
checking for PCRE library in /usr/pkg/ … not found
checking for PCRE library in /opt/local/ … not found

./configure: error: the HTTP rewrite module requires the PCRE
library.
You can either disable the module by using
–without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE
library
statically from the source with nginx by using –with-pcre= option.

xueliang@dev:~/download/nginx-1.10.1$

能够参照他事他说加以考察那篇作品设置PCRE,然后继续下边的操作

③ 如果从前从没安装zlib,这一步将报如下错误消息:

checking for md5 in system md library … not found
checking for md5 in system md5 library … not found
checking for md5 in system OpenSSL crypto library … not found
checking for sha1 in system md library … not found
checking for sha1 in system OpenSSL crypto library … not found
checking for zlib library … not found

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using
–without-http_gzip_module
option, or install the zlib library into the system, or build the zlib
library
statically from the source with nginx by using –with-zlib= option.

xueliang@dev:~/download/nginx-1.10.1$

能够参见那篇作品安装zlib,然后继续下边包车型地铁操作

也能够跳过此步,施行暗许安装,--prefix的暗中认可值为/usr/local/nginx,Nginx官方网址对此有表明:Building
nginx from Sources

第三步 编译

make

第四步 完毕安装

sudo make install

平整晋级

当必要对正值运转的Nginx进行进步时,能够在不仅仅息Nginx的状态下,使用新本子或许重编译的可执路程序替换旧版本的可实行程序,这里大家从nginx-1.10.1升级到nginx-1.11.1

第一步 备份旧版本

因为Nginx的进级,实质只是用新本子的可试行文件,替换旧版本的可执路程序,所以,对于备份,不仅能够只备份旧版本可推行文件,也足以打包备份整个旧版本安装目录,仿照效法命令分别如下:

只备份旧版本可试行文件

sudo cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

包裹备份整个旧版本安装目录

sudo tar -cvf /usr/local/nginx.bak /usr/local/nginx

第二步 下载新本子并解压Nginx压缩包

对此新本子Nginx压缩包的下载和平解决压,能够参见本文关于Nginx的安装部分的率先、二步。

其三步 使用旧版本构造参数,配置并编写翻译新本子Nginx

因为只是对Nginx举办进步,并不涉及配置参数的改正,所以,我们通常选取和旧版本同样的铺排(当然你也能够运用崭新的铺排消息卡塔尔(قطر‎,来编写翻译新本子的Nginx,使用如下命令查看旧版本构造音信:

/usr/local/nginx/sbin/nginx -V

能够获得结果如下:

xueliang@dev:~/download/nginx-1.11.1$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configure arguments: –prefix=/usr/local/nginx
xueliang@dev:~/download/nginx-1.11.1$

其中 [configure arguments: –prefix=/usr/local/nginx]
这一行即为旧版本Nginx配置消息,这里能够看来,旧版本只是钦赐了安装路线,使用[configure
arguments:]背后的参数音讯,对新本子Nginx作相近配置,然后进行编译:

./configure --prefix=/usr/local/nginx

第四步 编写翻译新本子Nginx可执路程序

make

第五步 用新本子Nginx可执路程序覆盖旧版本可执路程序

在上一步的底蕴上,试行一下指令即可:

sudo cp objs/nginx /usr/local/nginx/sbin/nginx

实行那条命令,大概会报以下卓殊,提醒文件被挤占:

xueliang@dev:~/download/nginx-1.11.1$ sudo cp objs/nginx
/usr/local/nginx/sbin/nginx
cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text
file busy
xueliang@dev:~/download/nginx-1.11.1$

能够应用以下命令举行抑遏覆盖:

sudo cp -rfp objs/nginx /usr/local/nginx/sbin/nginx

第六步 运转新本子Nginx主进程

出殡 US宝马X32实信号给旧版本主进程号:

kill -USR2 旧版本的Nginx主进程号

旧版本Nginx主进度接纳到-USR2功率信号,将重命名它的.pid文件为.oldpid,然后实践新本子的Nginx可执路程序,依次运维新本子的主进程和做事经过:

PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx)
33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

第七步 从容关闭旧版本的办事进程

那会儿,新、旧版本的Nginx实例会同期运营,同盟管理需要,假如这个时候给旧版本主进度发送WINCH 功率信号,旧版本主进度将会给它的干活进度发送新闻,须要它们从容关闭,从今以后,旧版本的做事历程始起逐年淡出:

PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

从容关闭旧版本的劳作经过命令:

kill -WINCH 旧版本的Nginx主进程号

第八步 从容关闭旧版本的主进度,达成Nginx的晋升

通过一段时间后,旧的干活进程(work
process)管理完了有着已连接的诉求后脱离,仅由新本子的做事历程来管理新的伏乞了:

PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

应该注意的是,那个时候,旧版本的主进程还并未有关闭它监听的套接字,假诺有须要,你还是能够回复旧版本专门的工作历程。如果由于某个原因,新本子的可推行文件运营境况不卓越,下边有两种方案可供参照他事他说加以考查:

  • 给旧版本主进度发送 HUP 数字信号。旧版本主进度就要不重复读取配置新闻的意况下,重新开启专业进度。然后,通过给新版本主进度发送 QUIT 时域信号,全体新本子的历程将会从容关闭。
  • 给新版本主进程发送 TERM 频限信号。然后,他将会给它的工作进度发送消息,须求它们立时退出,紧接着,这个干活儿进度就能够应声退出。(若是因为一些原因,新本子进度未有退出,应该给新版本主进度发送 KILL 频域信号,免强新版本主进度退出。)新版本主进程退出的还要,旧版本主进程将会自动运转它的劳作经过。
    新版本主进程退出后,旧版本主进程将会移除名字以.oldpid 结尾的文件,复苏为它的 .pid 文件。
    只要进级成功,应该给旧版本主进程发送 QUIT 实信号,使其脱离,只保留新本子进程:
PID PPID USER %CPU VSZ WCHAN COMMAND
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

增多模块

刚接触Nginx时,只晓得Nginx的机能是分模块的,并不知底有些模块暗中认可是不参预到营造中去的,譬喻ngx_http_ssl_module模块,是用来协助https斟酌的,暗许意况下是一向不营造到Nginx中的。

随着工作不断扩张,假设需求Nginx协助少数模块,而那一个模块私下认可不在Nginx的构建安顿中,创设Nginx时,又从不点名参预这一个模块,该如何做吧?是还是不是能够给曾经运转的Nginx动态拉长这个模块呢?答案是任天由命的!

给运转中的Nginx动态拉长模块的方案,与地点提到的平整晋级Nginx的方案很周边。下边大家来看一下什么给运维中的Nginx加多 ngx_http_ssl_module模块。

先是步 查看运转中的Nginx版本,并下载、解压对应版本的压缩包

查看Nginx版本:

/usr/local/nginx/sbin/nginx -v

结果:

xueliang@dev:~$ /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.11.1
xueliang@dev:~$

或者:

/usr/local/nginx/sbin/nginx -V

结果:

xueliang@dev:~$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.11.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configure arguments: –prefix=/usr/local/nginx
xueliang@dev:~$

此处能够见到,正在周转的Nginx版本为1.11.1,参照安装Nginx部分,下载并解压对应版本的Nginx

其次步 编译Nginx,同期步向须求模块配置

参照平滑晋级的第三步,查看运转中的Nginx的配置参数,并在最后追加-with-http_ssl_module

如:原配置音讯为 --prefix=/usr/local/nginx,则新配置消息为 --prefix=/usr/local/nginx --with_http_ssl_module,配置Nginx试行的下令如下:

./configure --prefix=/usr/local/nginx --with_http_ssl_module

其三步 平滑重启Nginx,实现动态模块增加

这一步可以参照平滑晋级的第四至八步

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 3522vip 版权所有