因为我是在家用NAS服务器使用虚拟机来安装的Linux,所以选用的CentOS版本不是最新的,而且是最基础版,也就是最小化安装的那款:CentOS7.4 Minimal。而Nginx选用了当前的最新版本:1.21.6。

首先将安装包“nginx-1.21.6.tar.gz”下载至Linux服务器上,然后使用如下命令解压缩:

1
tar -zxvf nginx-1.21.6.tar.gz

然后进入解压好的“nginx-1.21.6”目录下:

1
2
3
cd nginx-1.21.6
# 执行configure脚本
./configure

执行./configure时可能会报如下错误:

1
2
3
4
5
6
[hongmao@localhost nginx-1.21.6]$ ./configure
checking for OS
 + Linux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found

这个是由于我的操作信息是最小化安装版(“Minimal”)的,本身并未自带C语言编译器,所以有需要的话我们此处可手动安装一个:

1
sudo yum install -y gcc

然后,再次执行./configure,此时不会再报上述错误,但可能会遇到如下新的问题:

1
2
3
4
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

缺少pcre模块,那就安装一下:

1
sudo yum install -y pcre-devel

然后,再次执行./configure,此时还可能会遇到新的问题:

1
2
3
4
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

缺少zlib模块,同理,也安装一下:

1
sudo yum install -y zlib zlib-devel

然后,再次执行./configure,此时理论上就可以安装成功了。

接下来执行:

1
2
3
make
# 然后再执行make install,注意这个命令需要权限较高,需使用sudo
sudo make install

如此,Nginx便安装完成了,默认安装至/usr/local/nginx/目录下。进入该目录下:

1
2
3
4
cd /usr/local/nginx
# 执行ls
[hongmao@localhost nginx]$ ls
conf  html  logs  sbin

sbin目录下有nginx脚本,使用该脚本启动、重启、关闭Nginx。我们进入该目录下:

1
2
3
cd /usr/local/nginx/sbin
# 启动Nginx
sudo ./nginx

此时访问我们虚拟机的IP,会发现可能无法访问成功,原因可能是:默认的防火墙开着的,因为是本地虚拟机,防不防火墙的无所谓,我们可以将其关闭:

1
2
3
4
5
# 关闭防火墙
systemctl stop firewalld.service
# 如果关闭防火墙后,发现页面可以正常访问了,说明就是防火墙导致的之前访问不通
# 所以,我们还可以使用如下命令设置防火墙在系统重启时不自动开启
systemctl disable firewalld.service

其他常用命令:

1
2
3
4
5
6
# 不停机重新加载配置文件
./nginx -s reload
# 暴力退出
./nginx -s stop
# 优雅退出
./nginx -s quit