NGINX 安装

主要内容:通过包安装和编译安装的方式对 NGINX 进行安装。

RHEL/CentOS 通过包(Packages)安装 NGINX

要安装最新的 NGINX 版本,请在 /etc/yum.repos.d/nginx.repo 中添加以下内容,以添加 NGINX 主线仓库(mainline repository)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

OS 部分用 rhelcentos 替换,OSRELEASE 部分替换为 5 , 6 或 7 ,以便对应正确的版本。

不知道自己是什么系统版本的,可以通过运行 cat /etc/redhat-release ,查看你本机的系统版本信息。

仓库添加完毕后,更新包,然后开始安装 NGINX。

yum update
yum install nginx

详细信息,请参阅 http://nginx.org/en/linux_packages.html#mainline 上的官方文档。

通过编译安装

首先我们需要安装包构建工具和额外的 Extra Packages For Enterprise Linux(EPEL)仓库:

sudo yum install yum-utils epel-release mock

然后更新/etc/yum.repos.d/nginx.repo,添加额外的仓库源:

[nginx-source]
name=nginx source repo
baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/
gpgcheck=0 
enabled=1

在这个例子中,我们使用CentOS 7作为演示。如何修改为其他版本的CentOS,参阅上一节用包安装中的相关说明。

更新仓库后,我们创建一个目录用于编译, 然后下载源代码包(SRPM):

mkdir ~/nginxbuild
cd ~/nginxbuild
yumdownloader --source nginx

接下来,下载所需的包以完成编译:

yum-builddep nginx

一旦下载了所有开发包,我们现在可以从SRPM中提取文件:

rpm2cpio nginx-1.9.10-1.el7.ngx.src.rpm | cpio -idmv

请注意,目录名称可能因您安装的NGINX版本而异。例如,这里是nginx-1.9.10,因为我安装了NGINX 1.9.10。

您应该看到源文件的输出类似于:

如果我们想要更新配置并应用补丁或更改其中一个默认值,那么可以通过编辑文件来完成。

我们现在可以使用 mock 从源代码重建这些文件,这是一个用于构建包的工具。 mock 的优点是所有开发依赖项都包含在 chrooted 环境中,因此它不会使主安装变得混乱。可以清理和删除这个 chrooted 环境,而不会对主机系统产生任何影响,如果您需要可重复的构建,这是很好的。

要编译,只需要运行如下命令:

mock --buildsrpm --spec ~/nginxbuild/nginx.spec --sources ~/nginxbuild

这将生成SRPM,它们将与相关的日志文件一起位于 /var/lib/moc/epel-7-x86_64/result目录中。现在我们已经重建了SRPM,我们可以编译它了。同样,我们将使用mock,以便整齐地包含所有内容:

mock --no-clean --rebuild var/lib/mock/epel-7-x86_64/result/nginx-1.9.11-1.el7.ngx.src.rpm

根据你机器的处理能力,这可能需要五分钟或更长时间才能完成。编译完成后,你应该在 /var/lib/mock/epel-7-x86_64 目录中看到生成的二进制 RPM 以及调试用的 RPM 。这是一个例子:

-rw-rw-r-- 1 demo mock 159K Feb 10 20:59 build.log
-rw-r--r-- 1 demo mock 889K Feb 10 20:57 nginx-1.9.11-1.el7.ngx.src.rpm
-rw-r--r-- 1 demo mock 803K Feb 10 20:59 nginx-1.9.11-1.el7.ngx.x86_64.rpm
-rw-r--r-- 1 demo mock 3.1M Feb 10 20:59 nginx-debuginfo-1.9.11-1.el7.ngx.x86_64.rpm
-rw-rw-r-- 1 demo mock 45K Feb 10 20:59 root.log
-rw-rw-r-- 1 demo mock 1000 Feb 10 20:59 state.log

现在我们有了新的二进制文件,我们可以通过 yum 安装它:

sudo yum install /var/lib/mock/epel-7-x86_64/result/nginx-1.9.11-1. ngx.x86_64.rpm

最好使用 yum 来安装软件包,因为它也可以安装任何依赖项。

测试

无论你的安装方法如何,一旦启动并运行 NGINX ,你应该能够通过IP地址加 / 或完全限定域名(FQDN)浏览它,并查看与此处显示的内容非常相似的内容:

要启动,停止和重新启动 NGINX(如果使用官方二进制文件安装),你可以使用标准的 Linux init 系统。不同的OS版本之间存在非常小的差异,因此确保正确使用正确的变量命令非常重要。

当Ubuntu从15.04切换到 systemd 作为默认的 init 系统时,请确保仔细检查您正在使用的版本。

各版本的操作可参考以下表

Activity/OSCentOS / RedHat 6CentOS / RedHat 7Ubuntu 14.04 / Debian 8
Start NGINXservice nginx startsystemctl start nginxservice nginx start
Stop NGINXservice nginx stopsystemctl stop nginxservice nginx stop
Restart NGINXservice nginx restartsystemctl restart nginxservice nginx restart
Reload NGINXservice nginx reloadN/AN/A

NGINX 的某些配置修改将需要完全重启 NGINX,而其他修改只需要重新加载配置。在大多数已修改配置文件的情况下,只需重新加载即可。 NGINX 将 fork 一组新的 worker 进程,并允许现有 workers 进程完成处理并干净地退出,这样就可以避免停机。

我们可以在进行配置更改后检查 NGINX 配置文件,以确保语法正确。为此,我们运行以下命令:

/usr/sbin/nginx -t

如果一切正确,你应该看到以下内容:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果有任何错误,请在错误提示对应的配置行检查是否存在语法错误。