如果想了解更多与Nginx相关的内容,可以查看Nginx专栏中的文章: Nginx

1. Linux

本次演示使用的Linux系统为Ubuntu 22.04.2 LTS

1.1 通过宝塔安装

宝塔不太了解的同学,可以参考宝塔官网给出的教程先安装宝塔

https://www.bt.cn/new/download.html

在这里插入图片描述

1.1.1 安装Nginx流程

截至2025年5月22日,Nginx稳定版的最新版本为1.28.0


在宝塔面板中点击软件商店,搜索Nginx关键字

在这里插入图片描述

点击安装

在这里插入图片描述

我们选择最新的稳定版本1.28.0(截至2025年5月6日),点击编译安装

在这里插入图片描述

点击提交并安装按钮

在这里插入图片描述

1.1.2 检查Nginx是否安装成功

输入以下指令查看Nginx的版本号,如果出现具体的版本号就说明Nginx安装成功了

nginx -v

在这里插入图片描述

1.1.3 调整与Nginx相关的配置

在宝塔的网站一栏中找到Nginx,也可以在软件商店中打开

在这里插入图片描述

配置文件

在这里插入图片描述

性能调整

在这里插入图片描述

1.1.4 开启记录访问日志(可选)

通过宝塔安装的Nginx默认不会开启记录访问日志,需要我们手动开启


找到access_log off;关键字

access_log off;

在这里插入图片描述

access_log off;替换成access_log /www/server/nginx/logs/access.log;

access_log /www/server/nginx/logs/access.log;

保存配置文件后重载Nginx配置

在这里插入图片描述

1.1.5 与Nginx相关文件的存储路径

与Nginx相关文件的存储路径可以查看Nginx的配置文件

cat /www/server/nginx/conf/nginx.conf

在这里插入图片描述

1.1.5.1 根目录
/www/server/nginx
1.1.5.2 配置文件
/www/server/nginx/conf/nginx.conf
1.1.5.3 日志相关文件所在目录
/www/server/nginx/logs
/www/wwwlogs
1.1.5.4 nginx.pid文件
/www/server/nginx/logs/nginx.pid

1.1.6 安装Nginx时可能遇到的问题(安装失败,文件不存在:/www/server/nginx/sbin/nginx)

如果安装Nginx时遇到安装失败,文件不存在:/www/server/nginx/sbin/nginx报错信息,并且点击详情后是以下内容


+ ngx_http_cache_purge_module was configured adding module in /www/server/nginx/src/ngx_http_substitutions_filter_module-master + ngx_http_subs_filter_module was configured adding module in /www/server/nginx/src/nginx-dav-ext-module + ngx_http_dav_ext_module was configured checking for zlib library … found checking for libxslt … found checking for libexslt … found checking for GD library … not found checking for GD library in /usr/local/ … not found checking for GD library in /usr/pkg/ … not found checking for GD library in /opt/local/ … not found checking for GD library in /opt/homebrew/ … not found ./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries. make: *** No rule to make target ‘build’, needed by ‘default’. Stop. make: *** No rule to make target ‘install’. Stop. ======================================================== /www/server/panel/install/public.sh: line 157: cmake: command not found Ubuntu 22.04.2 LTS \l Bit:64 Mem:7745M Core:4 gcc:11.3.0 cmake: Linux 5.15.0-76-generic x86_64 ERROR: nginx-1.28.0 installation failed. 安装失败,请截图以上报错信息发帖至论坛www.bt.cn/bbs求助 cat: /etc/redhat-release: No such file or directory |-Successify — 命令已执行! —

在这里插入图片描述

需要先运行以下指令后重新安装Nginx(Ubuntu)

apt-get update -y && apt-get install libxml2 libxml2-dev libxslt-dev -y

如果安装Nginx时遇到了其它问题,可以在宝塔官方论坛中寻找解决方法

https://www.bt.cn/bbs/

在这里插入图片描述

1.2 通过包管理工具安装(Ubuntu)

  • 通过包管理工具安装的Nginx可能不是最新的稳定版,如果想要最新的稳定版,可以通过宝塔安装或者通过源码编译安装
  • 如果是新手,想安装Nginx的最新稳定版,建议通过宝塔安装,不建议通过源码安装

本次演示使用的Linux系统为Ubuntu 22.04.2 LTS

1.2.1 安装Nginx流程

截至2025年5月22日,Nginx稳定版的最新版本为1.28.0


先输入以下命令更新软件包列表

sudo apt update

在这里插入图片描述

接着输入以下命令安装Nginx

sudo apt install -y nginx

最后输入以下指令启动Nginx

sudo systemctl start nginx

设置Nginx开机自启(可选)

sudo systemctl enable nginx

1.2.2 检查Nginx是否安装成功

输入以下指令查看Nginx的版本号

nginx -v

在这里插入图片描述

输入以下指令查看Nginx服务的运行状态(按下CTRL + C快捷键可退出查看Nginx服务的运行状态的界面)

sudo systemctl status nginx

在这里插入图片描述

1.2.3 与Nginx相关文件的存储路径

与Nginx相关文件的存储路径可以查看Nginx的配置文件

cat /etc/nginx/nginx.conf

在这里插入图片描述

1.2.3.1 根目录
/etc/nginx
1.2.3.2 配置文件
/etc/nginx/nginx.conf
1.2.3.3 日志相关文件所在目录
/var/log/nginx
1.2.3.4 nginx.pid文件
/run/nginx.pid

1.2.4 可能遇到的问题(open() “/var/log/nginx/error.log” failed (13: Permission denied))

1.2.4.1 问题呈现

使用sudo ps -ef | grep nginx指令查看与Nginx进程相关的信息时抛出以下错误

sudo ps -ef | grep nginx

ubuntu@VM-24-6-ubuntu:~$ sudo ps -ef | nginx
nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log” failed (13: Permission denied)
2025/05/22 03:17:08 [warn] 3111566#3111566: the “user” directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2025/05/22 03:17:08 [emerg] 3111566#3111566: open() “/var/log/nginx/access.log” failed (13: Permission denied)

在这里插入图片描述

1.2.4.2 问题产生的原因

通过包管理器安装的Nginx的日志文件存放在/var/log/nginx目录下,该目录下的所有文件默认归属于www-data用户和sync用户组,其它用户无权访问

即使是使用sudo指令提权,甚至以root用户运行sudo ps -ef | grep nginx指令也不行,因为nginx的工作进程是以www-data用户启动的

如果nginx的工作进程是以root用户启动的,使用sudo指令提权或者以root用户运行sudo ps -ef | grep nginx指令才能查看到对应的信息

在这里插入图片描述

1.2.4.3 解决方法

如果运行以下指令后执行sudo ps -ef | grep nginx指令还是报错,需要关闭FinalShell等软件后重新连接,或者重新打开一个SSH连接窗口

/var/log/nginx目录及/var/log/nginx目录下的子文件改为www-data用户和www-data用户所有

sudo chown -R www-data:www-data /var/log/nginx

/var/log/nginx目录及/var/log/nginx目录下的子文件赋予访问和执行权限

sudo chmod -R +rx /var/log/nginx

再次运行sudo ps -ef | grep nginx指令,可以发现成功显示出与Nginx进程相关的信息了

sudo ps -ef | grep nginx

在这里插入图片描述

2. Windows

截至2025年5月22日,Nginx稳定版的最新版本为1.28.0

2.1 下载Nginx

下载地址:https://nginx.org/en/download.html

https://nginx.org/en/download.html

在这里插入图片描述

2.2 安装Nginx

无需安装,解压下载好的nginx-1.28.0.zip压缩包就可以直接使用Nginx了

2.3 启动Nginx

2.3.1 双击nginx.exe文件启动

  • 双击nginx.exe文件后会有一个黑窗一闪而过,代表Nginx已经成功启动
  • 如果多次双击nginx.exe文件,会启动多个Nginx实例,但是nginx.pid文件中只会记录最后一次启动的Nginx实例的master进程的PID

在Nginx的根目录下双击nginx.exe文件启动Nginx

在这里插入图片描述

2.3.2 通过Nginx提供的命令启动

在Nginx的根目录下输入start nginx命令启动Nginx

  • 不要直接输入nginx命令启动Nginx,直接输入nginx命令启动Nginx会阻塞当前窗口
  • 如果直接关闭被nginx命令阻塞的窗口,Nginx进程依然会在后台运行
start nginx

在这里插入图片描述

2.4 停止Nginx

2.4.1 通过任务管理器停止

按下Win + R快捷键,输入cmd指令,接着输入tasklist /fi "imagename eq nginx.exe" /fo table命令,查看Nginx进程的PID

tasklist /fi "imagename eq nginx.exe" /fo table

在这里插入图片描述

按下CTRL + SHIFT + ESC快捷键打开任务管理器,找到详细信息,按照PID降序排列

在这里插入图片描述

根据PID定位到Nginx进程后,鼠标右键Nginx进程,点击结束任务

在这里插入图片描述

2.4.2 通过Nginx提供的命令停止

在Nginx的根目录下输入nginx -s stop命令停止Nginx

nginx -s stop

在这里插入图片描述

当然,更优雅的方式是通过bat文件停止Nginx,具体的做法如下:

  1. 在Nginx的根目录下新建一个名为stop.bat的文件(文件名字可自定义)
  2. nginx -s stop指令粘贴到stop.bat文件中
stop.bat

双击stop.bat文件,就可以停止Nginx了

2.4.3 两种停止Nginx的方式的区别

在说明两种停止Nginx的方式有什么区别之前,我们先来了解一下Nginx根目录下log目录中的nginx.pid文件

无论我们是直接双击nginx.exe文件启动Nginx,还是通过命令行启动Nginx,Nginx根目录下log目录中的nginx.pid文件都会记录Nginx的master进程的PID

对Nginx架构不太了解的同学,可以参考我的另一篇文章:Nginx基础篇(Nginx简介、常见服务器的对比、Nginx的优点、Nginx的功能特性及常用功能、Nginx的官方简介、环境准备、安装Nginx)


如果我们是通过任务管理器停止Nginx的,不仅需要停止master进程,还要停止工作进程,而且通过任务管理器停止Nginx后,nginx.pid文件不会被删除,nginx.pid文件中依然会记录Nginx的master进程的PID,即使Nginx进程已经停止

如果是通过命令停止Nginx的,Nginx的master进程和工作进程都会被停止,nginx.pid文件也会被删除

停止方式 是否删除nginx.pid文件 是否优雅停止 是否需要手动结束工作进程
任务管理器
命令(nginx -s stop)

2.4.4 通过命令停止所有Nginx进程

通过命令停止所有Nginx进程与通过任务管理器进程停止Nginx一样,是比较暴力的方法,log目录下的nginx.pid文件不会被清除

有时候会出现启动多个Nginx实例的情况,多个Nginx实例会影响程序的正常运行,可以通过运行taskkill /f /t /im nginx.exe命令来停止所有Nginx进程

taskkill /f /t /im nginx.exe

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐