Tuesday, May 17, 2022

在Linux上,如何正确地安装Nignx?

  很多人都在Linux上用Nignx,一般随着使用的发行版本,会自带一个版本稍微低一点的Linux;比如Debian 11带的是1.18,不是最新的稳定版;查了一圈,从Nignx官方找了标准的安装方法;

其实一共有3种;1/3,源码编译;2/3,使用Linux自带的Nginx;3/3,使用Nginx官方的方法来安装;

方法1/3,就不做说明了,一般是用特殊需求、有些基础的人使用的方法。

方法2/3,就是做完OS后,使用系统的标准命令来安装,如果apt install nginx -y / dnf install nginx -y,Linux版本发行时带的啥就用啥;一般普通使用的话,就完全可以满足的。

方法3/3,是我主要要说的。最新要使用Nginx的一个新的功能(ssl_reject_handshake),但Debian 11用方法2安装的 版本是1.18,不支持;于是就找了一圈;有的说是使用方法1,进行编译,太费时费力了。。。于是就有个方法3.

参考来源:https://nginx.org/en/linux_packages.html

我的服务器现在都换成Debian11或者Debian10了,主要是原因是省资源;不过在甲骨文的免费虚拟机上,用的是Ubuntu,跟Debian相似。RHEL系列,也顺便提一下吧,就不做测试了。。我这里所说的,也就是把官方的文档“精简”话,我用到的,我提一下;我没用到的,我就不提了。有其他需求的话,自己去官网上找找。(sudo设置成不同的颜色了,如果你是root用户登录的话,直接把sudo去掉就好了。因为一些精简的系统,是没安装sudo的。)


支持的平台:

Debian

Version                      Supported Platforms

10.x “buster”            x86_64, i386, aarch64/arm64

11.x “bullseye”          x86_64, aarch64/arm64

Ubuntu

Version                 Supported Platforms

18.04 “bionic”         x86_64, aarch64/arm64

20.04 “focal”         x86_64, aarch64/arm64, s390x

21.10 “impish”         x86_64, aarch64/arm64

22.04 “jammy”         x86_64, aarch64/arm64

RHEL/CentOS

Version         Supported Platforms

7.4+                 x86_64, ppc64le, aarch64/arm64

8.x                 x86_64, aarch64/arm64, s390x

On Debian:

1. sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
2. curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
3. gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
运行完,命令行会有如下的提示
pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>
顺便说下,573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62是官方给的指纹,如果不是它的话,就要注意了 
4.1稳定版本
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
4.2主线版本
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
5.可选,就是优先使用官方的包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx
6.安装nginx
sudo apt update && sudo apt install nginx

On Ubuntu:
1. sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
2. curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
3. gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
运行完,命令行会有如下的提示
pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>
顺便说下,573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62是官方给的指纹,如果不是它的话,就要注意了 
4.1 稳定版本
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
4.2 主线版本
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
5.可选,就是优先使用官方的包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx
6.安装nginx
sudo apt update && sudo apt install nginx

On RHEL/CentOS:

1. sudo yum install yum-utils

2. sudo vi /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
一般情况下,会安装稳定版本,如果你想使用主线版本,需要运行:
sudo yum-config-manager --enable nginx-mainline
最后运行下面的命令来安装Nginx;提示key匹配的话,直接接受就好了。
3. sudo yum install nginx

最后说明一下,今天的日期是:2022-05-15,nginx当前的稳定版本是1.20.2,主线版本是1.21.6。