系统基于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

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主进程

发送 USR2信号给旧版本主进程号:

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,完成动态模块添加

linux更新模块,Linux下Nginx的安装、升级及动态添加模块相关推荐

  1. Linux下nginx编译安装,重新添加模块

    Linux下nginx编译安装,重新添加模块 前言:编译完成后的Nginx,当我们需要新的功能模块时,要怎么重新添加呢?可以按照下面的方法试试. 1.查看nginx版本以及编译安装模块 [root@# ...

  2. Linux下Nginx编译安装过程详解

    Linux下Nginx编译安装过程详解 一.Nginx介绍 二.Nginx源码下载 1.打开Nginx官网 2.下载官网的源码包 三.Nginx源码安装 1.解压源码包 2.安装开发包组及环境 3.编 ...

  3. Linux下Nginx编译安装后的开机自启动设置

    Linux下Nginx编译安装后的开机自启动设置 一.查看当前Nginx启动状态 二.而配置Nginx相关服务文件 三 .设置nginx命令 四.设置开机启动 五.测试开机启动 一.查看当前Nginx ...

  4. linux下使用nginx搭建集群,CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群第一步)

    CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群) CentOS 7.4(腾讯云) pcre库 zlib库 openssl Nginx服务器 安装gcc g++开发类库 y ...

  5. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

  6. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  7. Linux下nginx的安装及部署

    Linux下nginx的安装及部署 一. nginx的安装 1. nginx安装需要很多依赖包(并不知道是干神马的,连接好网络,敲命令直接安便是了) 安装GCC 和GCC-C++(若没有安装gcc) ...

  8. linux系统的电视怎么安装直播,Linux下nginx的安装及点直播使用示范

    Linux下nginx的安装及点直播使用示范 Linux下nginx的安装及点直播使用示范 Linux下nginx的安装及点直播使用示范 一.准备工作: Red hat 5.5 nginx-1.11. ...

  9. Windows下nginx的安装及使用方法入门

    Windows下Nginx的安装及使用方法入门 nginx功能之一可以启动一个本地服务器,通过配置server_name和root目录等来访问目标文件 一. 下载 官网地址:http://nginx. ...

最新文章

  1. 模拟出ios中流行的黑色背景底
  2. Java中Image类与ImageIcon类的区别
  3. BZOJ 4259 FFT
  4. 帮助你成为高手的视频和资料
  5. 数据科学家 数据工程师_数据科学家应该对数据进行版本控制的4个理由
  6. PostgreSQL 12系统表(5)pg_index
  7. 用计算机来猜密码,画圈圈也能解锁电脑?我猜你一定不知道!
  8. vue添加html开启服务器_vue服务端渲染添加缓存
  9. Python对文本文件的简单操作(一)
  10. Hyperledger fabric 链码容器是一直运行的吗
  11. r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
  12. 微软商店打不开,闪退,或者根本没反应
  13. 10秒钟搞定圆柱齿轮设计所有课题
  14. 常用软件的替代软件 (免费和自由软件)
  15. linux高速串口收发程序,Linux的DMA高速串口驱动的设计
  16. bps、Bps、pps的概念和区别
  17. Apache JMeter安装
  18. 安卓蓝牙SCO打开流程
  19. PDF如何合并,PDF文件合并的技巧
  20. 高以翔猝死事件警示录,劝你熬夜All In的人也许在害你!

热门文章

  1. vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt
  2. Python3 中的最大整数和最大浮点数
  3. Python 循环列表删除元素的注意事项
  4. mysql 修改配置生效_MySQL修改my.cnf配置不生效的解决方法
  5. 黑马程序员C语言基础(第六天)指针
  6. python os.popen()方法(用于从一个命令打开一个管道)
  7. python 文件操作 os 如何检索文件夹内文件数量
  8. Jupyter notebook中用python matplotlib ax3.plot_surface绘制的三维图(3D图)(三维函数)无法旋转解决办法(%matplotlib notebook)
  9. PyQt编程之模态与非模态对话框(二)
  10. Java源码解析:ArrayList 和 Iterator 使用上的不同