Nginx 官网:https://nginx.org
Nginx官方源码下载地址:https://nginx.org/download
打开官网并在右侧栏点击【download】。

笔者是将 Nginx 部署到 Linux 服务器上,我们选取最新的稳定版 1.22.1 下载:

(1) 确认centos的内核
准备一个内核为 2.6 及以上版本的 CentOS 操作系统,因为 linux 2.6 及以上内核才支持 epoll,而 Nginx 需要解决高并发压力问题是需要用到epoll,所以我们需要有这样的版本要求。
我们可以使用 uname -a 命令来查询 linux 的内核版本。

(2) 确保 CentOS 能联网
ping www.baidu.com
(3) 确认关闭防火墙
(4) 确认停用selinux
selinux (security-enhanced linux),美国安全局对于强制访问控制的实现,在 linux 2.6 内核以后的版本中,selinux 已经成功内核中的一部分。可以说 selinux 是 linux 史上最杰出的新安全子系统之一。虽然有了selinux,我们的系统会更安全,但是对于我们的学习 Nginx 的历程中,会多很多设置,所以这块建议大家将 selinux 进行关闭。
sestatus 查看状态:
sestatus

如果查看不是 disabled 状态,我们可以通过修改配置文件来进行设置,修改 SELINUX=disabled ,然后重启下系统即可生效。
vim /etc/selinux/config

如果通过 Nginx 源码安装需要提前准备的内容:

Nginx 是使用 C 语言编写的程序,因此想要运行 Nginx 就需要安装一个编译工具。GCC 就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了 C 语言。
使用下面命令来安装:
yum install -y gcc
安装成功后,可以通过 gcc --version 来查看 GCC 是否安装成功。
Nginx 在编译过程中需要使用到 PCRE 库(Perl Compatible Regular Expressoin 兼容正则表达式库),因为在 Nginx 的 Rewrite 模块和 http 核心模块都会使用到 PCRE 正则表达式语法。
可以使用下面命令来进行安装:
yum install -y pcre pcre-devel
安装成功后,可以通过 rpm -qa pcre pcre-devel 来查看是否安装成功
zlib 库提供了开发人员的压缩算法,在 Nginx 的各个模块中需要使用 gzip 压缩,所以我们也需要提前安装其库及源代码 zlib 和 zlib-devel 。
可以使用下面命令来进行安装:
yum install -y zlib zlib-devel
安装成功后,可以通过 rpm -qa zlib zlib-devel 来查看是否安装成功。
OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。
SSL:Secure Sockets Layer,安全套接协议的缩写,可以在 Internet 上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性。在 Nginx 中,如果服务器需要提供安全网页时就需要用到 OpenSSL 库,所以我们需要对 OpenSSL 的库文件及它的开发安装包进行一个安装。
可以使用下面命令来进行安装:
yum install -y openssl openssl-devel
安装成功后,可以通过 rpm -qa openssl openssl-devel 来查看是否安装成功。
上述命令,一个个来的话比较麻烦,我们也可以通过一条命令来进行全部安装:
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
选择最新稳定版,复制链接:

到 Linux 命令行上使用 wget 命令进行下载:
wget https://nginx.org/download/nginx-1.22.1.tar.gz

可以看到是下载到 pwd 当前工作目录 /root 的:

创建一个文件夹专门存放 Nginx 的源码压缩包:
mkdir -p nginx/core
mv nginx-1.22.1.tar.gz nginx/core
进入 Nginx 目录下:
cd nginx/core
解压:
tar -zxvf nginx-1.22.1.tar.gz

进入解压出来的文件夹:
cd nginx-1.22.1

创建 Nginx 的安装路径:
mkdir -p /usr/local/nginx
使用 configure 指定安装路径到 /usr/local/nginx :
./configure --prefix=/usr/local/nginx

然后执行编译和安装:
make && make install
安装好之后有 4 个目录:

我们来熟悉一下 Nginx 的目录结构:

conf:存放配置文件。我们要操作的最核心的就是 nginx.conf 。
html:存放静态文件。如 HTML 页面、CSS 样式文件、JS 文件等。
logs:存放日志文件。
sbin:存放 Nginx 的脚本文件,用于启动 / 停止 Nginx 服务。
打开 Linux 系统的环境变量文件:
vim /etc/profile
在 PATH 这一行加上:
PATH=/usr/local/nginx/sbin:

按 :wq 保存退出。
重新加载环境变量文件:
source /etc/profile
测试:查看 Nginx 的版本号:
nginx -v

如果能正确显示版本号则说明 Nginx 安装成功且环境变量生效。
在启动 Nginx 服务之前,可以先检查一下 conf/nginx.conf 文件配置是否有错误。命令如下:
nginx -t

如果返回的结果为 ok 和 successful ,则说明配置文件 nginx.conf 没有错误,可以启动 Nginx 服务。
打开 Nginx 的配置文件:
vim /usr/local/nginx/conf/nginx.conf

我们要开放 80 端口的防火墙:
firewall-cmd --zone=public --add-port=80/tcp --permanent
让防火墙开放立即生效:
firewall-cmd --reload
查看已经开放的端口:
firewall-cmd --zone=public --list-ports

输入下面命令启动 Nginx 服务:
nginx

Nginx 是在后台运行的,可以查看是否有 Nginx 相关的进程:
ps -ef | grep nginx

可以看到有 1 个 master 进程和 1 个 worker 进程,说明 Nginx 服务已经成功运行了。
我们可以打开浏览器,地址栏输入 server100 这台主机的 IP 地址:
http://192.168.148.100:80

能成功访问,说明 Nginx 服务已经启动成功了。
启动完成后,Nginx 的目录结构发生了变化:


以下划线 _temp 结尾的临时目录,都不用关注。
重点看 logs 日志目录,产生了 2 个文件:
access.log 记录的是访问日志。

error.log 记录的是错误日志。

输入下面命令停止 Nginx 服务:
nginx -s stop

查看进程看还有没有 Nginx :
ps -ef | grep nginx

已经没有 master 进程和 worker 进程,说明 Nginx 服务已经停止运行了。
当修改 Nginx 配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:
nginx -s reload
举例,修改配置文件,使得 worker 进程数为 2 :
vim /usr/local/nginx/conf/nginx.conf

按 :wq 保存退出。
重新加载配置文件:
nginx -s reload
查看 Nginx 进程:
ps -ef | grep nginx

可以看到 2 个 worker 进程。