Nginx Linux 版本的编译和安装
准备工作
为了编译 Nginx 源代码,我们需要标准的GCC编译器。
除此之外,我们还需要 Automake 工具,以完成自动创建 Makefile 的工作。
由于 Nginx 的一些模块需要依赖其他第三方库,通常有 pcre 库(支持 rewrite 模块)、zlib库(支持gzip模块)和 openssl 库(支持 ssl 模块)等。
如果系统没有安装以上提到软件和第三方库,可以进行在线安装:
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open open-devel
到此,就完成了编译和安装 Nginx 服务器软件的环境准备工作。
Nginx 软件的自动脚本
Nginx 的官方下载网站为: http://nginx.org/en/download.html。
这里 我是通过
wget http://nginx.org/download/nginx-1.12.2.tar.gz
下载到 新建的目录 nginx_1122下载后 解压 Nginx 归档:
# tar xf nginx-1.12.2.tar.gz
# cd nginx-1.12.2
# ls -l
total 704
drwxr-xr-x. 6 1001 1001 4096 Jan 25 09:44 auto
-rw-r--r--. 1 1001 1001 278202 Oct 17 13:16 CHANGES
-rw-r--r--. 1 1001 1001 423948 Oct 17 13:16 CHANGES.ru
drwxr-xr-x. 2 1001 1001 168 Jan 25 09:44 conf
-rwxr-xr-x. 1 1001 1001 2481 Oct 17 13:16 configure
drwxr-xr-x. 4 1001 1001 72 Jan 25 09:44 contrib
drwxr-xr-x. 2 1001 1001 40 Jan 25 09:44 html
-rw-r--r--. 1 1001 1001 1397 Oct 17 13:16 LICENSE
drwxr-xr-x. 2 1001 1001 21 Jan 25 09:44 man
-rw-r--r--. 1 1001 1001 49 Oct 17 13:16 README
drwxr-xr-x. 9 1001 1001 91 Jan 25 09:44 src
#
Nginx 源代码的编译需要使用 configure 脚本自动生成 Makefile 文件。使用以下命令配置并生成 Makefile 文件:# ./configure --prefix=/Nginx //编译配置
--prefix 指定了 Nginx 软件的安装路径为新建的 Nginx 目录。其他的设置使用默认设置。
Nginx 源代码的编译和安装
得到了 Nginx 软件的 Makefile 文件后,我们就可以编译源代码了。使用 make 命令进行编译:
# make
我们可以在屏幕上看到 Nginx 源代码编译的全过程。编译顺利完成以后,使用 make 的 install 命令安装 Nginx 软件:
# make install
到此,就安装好了一个基本的 Nginx 服务器,其安装路径为/Nginx 目录。Nginx 服务的启停控制
在 Linux 平台下,控制 Nginx 服务的启停有不止一种方法。
Nginx 服务的信号控制
Nginx 服务在运行时,会保持一个主进程和一个或多个worker process 工作进程。我们通过给 Nginx 服务的主进程发送信号就可以控制服务的启停了。那么,如何给主进程发送信号呢?首先要知道主进程的进程号 PID。获取PID有两个途径。一个是,在 Nginx 服务启动以后,默认在 Nginx 服务器安装目录下的 logs 目录中会产生文件名为 nginx.pid 的文件,此文件中保存的就是 Nginx 服务主进程的 PID。这个文件的存放路径和文件名都可以在 Nginx 服务器的配置文件中进行配置。
当前 Nginx 服务主进程 PID 为 40847:第二个获取 Nginx 服务主进程 PID 的办法是使用 Linux 平台下的查看进程的工具 ps,使用方法是:# cat nginx.pid 40847
Nginx 服务主进程能够接收的信号如下所列:# ps -ef | grep nginx root 40847 1 0 12:34 ? 00:00:00 nginx: master process ./nginx nobody 40848 40847 0 12:34 ? 00:00:00 nginx: worker process root 45140 44825 0 14:33 pts/0 00:00:00 grep --color=auto nginx
信号 作用 TERM 或 INT 快速停止 Nginx 服务 QUIT 平缓停止 Nginx 服务 HUP 使用新的配置文件启动进程,之后平缓停止原有进程,也就是所谓的“平滑重启” USR1 重新打开日志文件,常用于日志切割 USR2 使用新版的 Nginx 文件启动服务,之后平缓停止原有 Nginx 进程,也就是所谓的“平滑升级” WINCH 平缓停止 worker process,用于 Nginx 服务器平滑升级 向 Nginx 服务主进程发送信号有两种方法。一种是使用 nginx 二进制文件(暂不说明),另一种是 使用 kill 命令发送信号其用法是:kill SIGNAL PID
SIGNAL,用于指定信号,即上面的表中的一个。PID ,指定 Nginx 服务主进程的 PID,也可以使用 nginx.pid 动态获取 PID 号:kill SIGNAL 'filepath'
其中,filepath 为 nginx.pid 的路径。
Nginx 服务的启动
……
本文章内容主要摘自 《Nginx 高性能Web服务器详解》一书。