主要内容:通过包安装和编译安装的方式对 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 部分用 rhel
或 centos
替换,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/OS | CentOS / RedHat 6 | CentOS / RedHat 7 | Ubuntu 14.04 / Debian 8 |
---|---|---|---|
Start NGINX | service nginx start | systemctl start nginx | service nginx start |
Stop NGINX | service nginx stop | systemctl stop nginx | service nginx stop |
Restart NGINX | service nginx restart | systemctl restart nginx | service nginx restart |
Reload NGINX | service nginx reload | N/A | N/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
如果有任何错误,请在错误提示对应的配置行检查是否存在语法错误。