将 nginx 注册为系统服务

nginx 提供了 -s signal 命令行参数让我们对其进行操作。我们可以很方便地利用 -p prefix 参数指定启动路径来启动多个完全隔离的 master 进程;还可以使用 -c filename 显式指定不同的配置文件。

由于 prefix 的路径一般都比较长, reload 或者 reopen nginx master 进程就会比较不方便。此时可以采用我在 在 OS X 中使用 OpenResty - 3.快捷方式 中提到的自建快捷方式的形式来简化这些操作。

更一般的,在服务器上我们会采用操作系统提供的标准服务的方式来进行这些简化。当然,这种方法一般仅针对一个 nginx master 进程进行操作。

本文将介绍在多个操作系统上将 nginx 注册为服务的方式(其实,也没有那么多啦)。

1. Mac OS X

参照 在 OS X 中使用 OpenResty - 2. 配置 OpenResty 环境 进行配置即可。

2. CentOS

根据 CentOS Nginx的一个初始化脚本(用于启动、停止、查看状态) 一文提供的方法,我整理了代码到 gist 上,只需要将 nginxd 下载到 /etc/init.d 并执行 addnginxservice 脚本即可。

下面的代码自动帮你做了上面的事:

wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/77eada5f92dd5583838390f26cc9790b00e63137/nginxd
wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/a0084d1ae6d5175c913e4593c99d493487d14c75/addnginxservice && source addnginxservice

3. Ubuntu

已经都是 Ubuntu了,自然是直接 apt-get 啦。这个没什么好说的。

4. Windows

nginx 的 Windows 二进制包并没有提供注册成为服务的功能。官方提供的方法和 Linux 相同,都是使用命令行参数进行操作。例如下面的 来自官方wiki 的方法,进入 nginx 文件夹,启动nginx进程:

cd nginx/
start nginx.exe

使用下面的命令查看 nginx 进程是否正在运行:

tasklist /fi "imagename eq nginx.exe"

关闭 nginx 进程:

nginx.exe -s quit

nginx 并不是为 windows 开发的,windows 版本的作用是为了方便在 windows 上工作的程序员们使用 nginx 。因此,nginx 好像并没有什么需要成为一个服务的动力。尽管 Running as a service. 出现在了 Possible future enhancements 列表中。

如果一定要在 windows 下将其注册为服务的话,把 Nginx 创建为 Windows 的一个服务原文)一文提供了一种方式。这是一篇写于 2009 年的文章,我并没有在我的 Windows 8.1 上尝试,因为我直接使用 Vagrang 了。

(全文完)