2025-Nginx安装教程(Linux操作系统通过宝塔安装Nginx、Linux系统通过包管理工具安装Nginx——Ubuntu、Windows操作系统安装Nginx)
2025-Nginx安装教程(Linux操作系统通过宝塔安装Nginx、Linux系统通过包管理工具安装Nginx——Ubuntu、Windows操作系统安装Nginx)
如果想了解更多与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,具体的做法如下:
- 在Nginx的根目录下新建一个名为
stop.bat
的文件(文件名字可自定义) - 将
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
更多推荐
所有评论(0)