Nginx 的安装、启动和关闭
文章目录
- 一、背景说明
- 二、Nginx 的安装
- 2.1、依赖的安装
- 2.2、Nginx 安装
- 2.3、验证安装
- 三、启动 Nginx
- 3.1、普通启动
- 3.2、如何判断nginx已启动
- 3.3、通过配置启动
- 3.4、设置开机启动
- 四、关闭 Nginx
- 4.1、优雅地关闭
- 4.2、快速关闭
- 4.3、只关闭主进程
- 4.4、使用nginx关闭服务
- 五、重启 Nginx
- 六、问题
- 6.1、Nginx 从哪里下载?
- 6.2、如果没有rz如何安装?
- 6.3、如果没有 make如何安装?
- 6.4、zlib 从哪里下载?
- 6.5、使用 rz命令上传 nginx 安装包为什么会报错?
- 6.6、报错:fatal error: zlib.h: No such file or directory
- 七、总结

一、背景说明
最近想自己开发一些小玩意,所以在腾讯云买了个云服务器,选择镜像时放弃了宝塔Linux面板,而是选择了 Ubuntu18 的镜像。
现在想搭建自己的网站,选择了 Nginx 作为 Web服务器。那么如何在 Ubuntu18 系统中安装 Nginx 呢?所以就有了本文的诞生。
二、Nginx 的安装
2.1、依赖的安装
Nngix 的依赖有:
- gcc
- openssl, openssl-devel
- pcre,pcre-devel
- zlib,zlib-devel
依赖的安装命令:
apt install gcc openssl pcre pcre-devel zlib zlib-devel;
但是提示从pcre往后的包都找不到。有人说Ubuntu中没有这些包。
依赖的安装命令2:
# 如果是非root账户,需要使用sudo apt install命令
apt install gcc openssl libpcre3 libpcre3-dev libssl-dev;
2.2、Nginx 安装
- 使用 rz 命令将 nginx 和 zlib 的安装包上传到服务器。
# 打开上传文件选择框
sudo rz -y;
此时,文件默认上传到 home 目录。
注:如果rz后出现乱码 => 请戳这里
- 解压文件
# 解压nginx安装包,会在home目录生成`nginx-1.20.2`目录
sudo tar zxvf nginx-1.20.2.tar.gz;
# 解压 zlib 安装包
sudo tar zxvf zlib-1.2.11.tar.gz;
- 执行配置
# 进入nginx-1.20.2目录
cd nginx-1.20.2/;
# 执行配置文件
# 执行完后,/usr/local/下还没有生成nginx目录
./configure --prefix=/usr/local/nginx --with-zlib=../zlib-1.2.11/;
这段命令的意思:
--prefix:指定nginx安装的目录--with-zlib:指定从哪里读取zlib的源码(解压后的目录)

- 安装nginx
# 仍在 ~/nginx-1.20.2/下
make;
# 生成了/usr/local/nginx目录
# 需要root权限,否则上述目录无法创建
sudo make install;
2.3、验证安装
cd到/usr/local目录,如果nginx目录已经生成,则表示安装成功。如下图:

三、启动 Nginx
有两种启动方式:
- 普通启动
- 通过配置启动
3.1、普通启动
进入Nginx的安装目录(即/usr/local/nginx),有一个sbin目录。
普通启动就是运行sbin目录下的nginx文件。

启动命令如下:
cd /usr/local/nginx/sbin;
sudo ./nginx;# 或者
cd /usr/local/nginx/sbin & sudo ./nginx;
3.2、如何判断nginx已启动
(1)再次启动nginx
如果nginx已经启动,则再次启动会报如下错误:
cd /usr/local/nginx/sbin & sudo ./nginx;
[1] 7954
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[1]+ Done cd /usr/local/nginx/sbin
(2)还可通过查看进程,判断nginx是否启动:
ps -ef|grep nginx;
nginx的进程信息如下:

(3)直接访问部署nginx的机器的ip地址

3.3、通过配置启动
该启动方法的命令如下:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf;
3.4、设置开机启动
命令如下:
# 打开/etc/rc.d/rc.local文件
vim /etc/rc.d/rc.local;
在文件末尾追加如下内容:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 2>&1
重启系统,检查nginx是否随系统启动。
四、关闭 Nginx
4.1、优雅地关闭
sudo kill -QUIT $主进程id;
优雅地关闭之所以称为优雅,是因为如果关闭时还有用户请求,会等所有的用户请求都处理完,才进行关闭。
4.2、快速关闭
sudo kill -TERM $主进程id;# or
sudo kill $主进程id;
注:kill 不加参数,也是快速关闭。
4.3、只关闭主进程
sudo kill -9 $主进程id;
如:kill -9 7720

上图可以看出:通过这种方式关闭ngin的主进程,子进程还是存活的。
通过ps命令,可以获得主进程的id。
4.4、使用nginx关闭服务
sudo /usr/local/nginx/sbin/nginx -s stop;
五、重启 Nginx
使用下面的命令,可以对 Nginx 进行重启:
cd /usr/local/nginx/sbin/ && sudo ./nginx -s reload;
该命令会新建一个进程处理新的请求。同时通知老的进程,处理已经响应的请求,然后优雅地退出。
六、问题
6.1、Nginx 从哪里下载?
答:进入 Nginx的下载页:
https://nginx.org/en/download.html
我选择的版本是:nginx-1.20.2 的Linux版本。
6.2、如果没有rz如何安装?
答:我使用的云服务器是有这个命令的,如果自己的系统没有,可以通过下面的命令安装:
sudo apt install lrzsz;
6.3、如果没有 make如何安装?
答:和上面的命令类似:
sudo apt install make;
6.4、zlib 从哪里下载?
答:zlib的下载地址:
http://zlib.net/
我选的是tar.gz格式的文件:

6.5、使用 rz命令上传 nginx 安装包为什么会报错?
答:上传文件后,会出现莫名的字符。报错信息如下:
rz -y
## 结果输出
rz: nginx-1.20.2.tar.gz removed. ubuntu@VM-(reverse-i-search)`': q$ZGÿZU͇^C k^CZ2¢荙Ǿvu٧ބ)5¨m3¶
dev;ǢRӪƺ?͇Wվǟĕd|꾣Ĭ"ϲ¤ֶֶֶ $_¼WE'K@p.eD-bash: syntax error near unexpected token `('
ubuntu@xxxx:~$ rzͣ ...
参考了下面网友的说法:
https://segmentfault.com/q/1010000004642603
得知:rz -y 命令的执行,需要root权限。
所以应当使用如下命令:
sudo rz -y;
6.6、报错:fatal error: zlib.h: No such file or directory
详细报错信息:
src/http/modules/ngx_http_log_module.c:13:10: fatal error: zlib.h: No such file or directory#include <zlib.h>^~~~~~~~
答:原因:zlib不在home目录,而是上传到 nginx-1.20.2/目录中了。


七、总结
本文主要介绍了 Nginx 的安装、启动和关闭。之所以安装它,是打算使用其部署前端页面。
文章记录了整个 Nginx 的安装和启动过程。期间遇到一些问题,在问题节中对这些遇到的问题进行了记录,并给出了解决方法。
相关文章:
Nginx 的安装、启动和关闭
文章目录 一、背景说明二、Nginx 的安装2.1、依赖的安装2.2、Nginx 安装2.3、验证安装 三、启动 Nginx3.1、普通启动3.2、如何判断nginx已启动3.3、通过配置启动3.4、设置开机启动 四、关闭 Nginx4.1、优雅地关闭4.2、快速关闭4.3、只关闭主进程4.4、使用nginx关闭服务 五、重启…...
python 操作excel(openpyxl.load_workbook)、excel操作封装
操作excel 其他的库: xlrd xlwt : 过时了,只能操作xls后缀的文件。pandas:大数据测试 数据分析项目会用。 openpyxl:第三方库 支持的格式有:.xlsx、.xlsm、.xltx、.xltm,l不支持.xls文件格式…...
MySQL系统参数配置实战:生产环境优化
引言: MySQL作为广泛应用的关系型数据库,其系统参数配置直接影响着数据库的性能、稳定性以及资源利用率。本文旨在深入探讨MySQL的核心系统参数,并提供一份面向生产环境的配置建议,以帮助运维人员更好地优化数据库性能࿰…...
判断列表中每一个元素的个数
1.使用循环 nums [1, 1, 1, 2, 2, 3]# 构建一个空字典来存储元素和它们出现的次数 count_dict {}# 遍历列表,更新字典中每个元素出现的次数 for num in nums:if num in count_dict:count_dict[num] 1else:count_dict[num] 1# 输出统计结果 for num, count in c…...
目标检测——PP-YOLOE算法解读
PP-YOLO系列,均是基于百度自研PaddlePaddle深度学习框架发布的算法,2020年基于YOLOv3改进发布PP-YOLO,2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet,2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列,所以放一起解…...
每日一题 --- 螺旋矩阵 II[力扣][Go]
螺旋矩阵 II 题目:59. 螺旋矩阵 II - 力扣(LeetCode) 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出…...
C语言自定义类型结构体
variable adj.易变的,多变的;时好时坏的;可变的,可调节的; (数)(数字)变量的;(植,动)变异的,变型的࿱…...
【SpringBoot框架篇】37.使用gRPC实现远程服务调用
文章目录 RPC简介gPRC简介protobuf1.文件编写规范2.字段类型3.定义服务(Services) 在Spring Boot中使用grpc1.父工程pom配置2.grpc-api模块2.1.pom配置2.2.proto文件编写2.3.把proto文件编译成class文件 3.grpc-server模块3.1.pom文件和application.yaml3.2.实现grpc-api模块的…...
投资的三个匹配
许多人亏钱都是犯了同样错误,要么对投资的预期过高,要么是投资期限不匹配,要么是波动承受能力不匹配。投资想要赚钱,先解决匹配问题。 1.预期收益率要匹配 就是明确自己做投资,每年想赚多少钱。凡事都要有个目标&…...
[Netty实践] 请求响应同步实现
目录 一、介绍 二、依赖引入 三、公共部分实现 四、server端实现 五、client端实现 六、测试 一、介绍 本片文章将实现请求响应同步,什么是请求响应同步呢?就是当我们发起一个请求时,希望能够在一定时间内同步(线程阻塞&am…...
Java进阶—哈希冲突的解决
1. 什么是哈希冲突 哈希函数:哈希函数是一种将输入数据(键)映射到固定大小范围的输出值(哈希值)的函数。哈希函数通常用于存储 数据存储和检索领域,例如哈希表中。 哈希表:哈希表(Hash Table),也成为哈希映射(Hash Map)或字典&…...
css的border详解
CSS的border属性是一个简写属性,用于设置以下四个边框属性: border-width:定义边框的宽度。可以使用具体的像素值,或者使用预定义的关键字如thin、medium和thick。border-width不支持百分比值。默认情况下,边框的宽度是…...
如何保障消息一定能发送到RabbitMQ?
我们知道,RabbitMQ的消息最终是存储在Queue上的,而在Queue之前还要经过Exchange,那么这个过程中就有两个地方可能导致消息丢失。第一个是Producer到Exchange的过程,第二个是Exchange到Queue的过程。 为了解决这个问题,…...
【web前端】CSS语法
CSS语法 1. CSS语法格式 通常情况下语法格式如下: 选择器{属性名:属性值;属性名:属性值;属性名:属性值;... }2. CSS添加方式 2.1 行内样式 直接将样式写在本行的标签内。 <h1><p style"font-size: 48px; color:red;";>行内样式测试</p></…...
JS+CSS3点击粒子烟花动画js特效
JSCSS3点击粒子烟花动画js特效 JSCSS3点击粒子烟花动画js特效...
docker镜像复制与常见命令
一、前言 最近通过阿里的镜像仓库远程拉取镜像,发现以前的版本不见了,拉取了最新的镜像,有发现版本不配问题。那么想使用老版本的镜像那就要从别的环境获取。于是就需要进行离线镜像复制,打包,上传,重新导入…...
如何在linux环境上部署单机ES(以8.12.2版本为例)
ES安装(以8.12.2版本为例) 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…...
如何利用人工智能技术实现企业营销效率提升10倍(下)
01. AI在私域运营中可扮演重要角色 私域用户体验历程中的不满,对企业来说,无疑是一记沉重的打击。这些不满不仅会让用户感到失望和沮丧,更会在无形中侵蚀企业的各个环节,给业务带来不可估量的损失。 在私域环境中,每…...
【PHP + 代码审计】数组函数
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…...
Keepalive与idle监测及性能优化
Keepalive 与 idle监测 Keepalive(保活): Keepalive 是一种机制,通常用于TCP/IP网络。它的目的是确保连接双方都知道对方仍然存在并且连接是活动的。这是通过定期发送控制消息(称为keepalive消息)实现的。如果在预定时…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
