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
    • 七、总结


cover


一、背景说明

最近想自己开发一些小玩意,所以在腾讯云买了个云服务器,选择镜像时放弃了宝塔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 安装

  1. 使用 rz 命令将 nginx 和 zlib 的安装包上传到服务器。
# 打开上传文件选择框
sudo rz -y;

此时,文件默认上传到 home 目录

  1. 解压文件
# 解压nginx安装包,会在home目录生成`nginx-1.20.2`目录
tar zxvf nginx-1.20.2.tar.gz;
# 解压 zlib 安装包
tar zxvf zlib-1.2.11.tar.gz; 
  1. 执行配置
# 进入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的源码(解压后的目录)

在这里插入图片描述

  1. 安装nginx
# 仍在 ~/nginx-1.20.2/下
make;
# 生成了/usr/local/nginx目录
# 需要root权限,否则上述目录无法创建
sudo make install;

 

2.3、验证安装

cd到/usr/local目录,如果nginx目录已经生成,则表示安装成功。如下图:
在这里插入图片描述

 


三、启动 Nginx

有两种启动方式:

  1. 普通启动
  2. 通过配置启动

3.1、普通启动

进入Nginx的安装目录(即/usr/local/nginx),有一个sbin目录。
普通启动就是运行sbin目录下的nginx文件

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的进程信息如下:
ps--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
worker process

上图可以看出:通过这种方式关闭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格式的文件:
zlib

 

6.5、使用 rz命令上传 nginx 安装包为什么会报错?

答:上传文件后,会出现莫名的字符。报错信息如下:

rz -y
## 结果输出
rz: nginx-1.20.2.tar.gz removed.                                                                    ubuntu@VM-(reverse-i-search)`': q$ZGÿZU͇^C k^C󑵊Z2¢荙Ǿvu򒻢٧ބ)5¨m3¶
dev;ǢR򺑙Ӫƺ?͇Wվǟĕd|꾣Ĭ"ϲ¤𼎬ֶֶֶ $_񏚁¼WE'K@p.eD-bash: syntax error near unexpected token `('
ubuntu@xxxx:~$ rzͣ z: command not found
ubuntu@xxxx:~dzT@=׽𐆘®ڒ.©n¥\²«
\udcc8s\udc8aT@=\udc96\udc8a\udcd8}\udcefƘ\udcaeڒ.\udca9\udc9cn\udc94\udca5\udcb2\udcab: command not found
LjM~󾠩Bυ˟洌𮊙ꆢJ#ϓ-࠿HO秽þ/^6¢f V**0bec3410003d31

参考了下面网友的说法:

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 的安装和启动过程。期间遇到一些问题,在问题节中对这些遇到的问题进行了记录,并给出了解决方法。

 
 
 
 
 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

# 网络是研究微生物生态共现模式的常用方法。在这一部分中&#xff0c;我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…

编曲学习:如何编写钢琴织体 Cubase12逻辑预置 需要弄明白的问题

钢琴织体是指演奏形式、方式,同一个和弦进行可以用很多种不同的演奏方法。常用织体有分解和弦,柱式和弦,琶音织体,混合织体。 在编写钢琴织体前,先定好歌曲的调。 Cubase小技巧:把钢琴轨道向上拖动打和弦轨道,就可以显示和弦!如果你有一些参考工程,不知道用了哪些和…

yum安装mysql及数据库补全功能

centos7上面没有mysql&#xff0c;它的数据库名字叫做mariadb [rootlocalhost ~]#yum install mariadb-server -y [rootlocalhost ~]#systemctl start mariadb.service [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 [rootlocalhost ~]#ss -na…

kerberos验证协议安装配置使用

一、kerberos是什么 Kerberos 是一个网络身份验证协议&#xff0c;用于在计算机网络中进行身份验证和授权。它提供了一种安全的方式&#xff0c;允许用户在不安全的网络上进行身份验证&#xff0c;并获取访问网络资源的权限。 二、安装配置kerberos服务端 1、安装kerberos #检…

微信小程序 nodejs+vue+uninapp学生在线选课作业管理系统

基于微信小程序的班级作业管理助手使用的是MySQL数据库&#xff0c;nodejs语言和IDEA以及微信开发者工具作为开发工具&#xff0c;这些技术和工具我在日常的作业中都经常的使用&#xff0c;并且因为对编程感兴趣&#xff0c;在闲暇时间也进行的进行编程的提高&#xff0c;所以在…

计算机二级(Python)真题讲解每日一题:《十字叉》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ ‪‬‪‬‪‬‪‬‪‬‮‬‪…

二、python基础

一、关键字&#xff08;保留字&#xff09; 指在python中赋予特定意义的一类单词&#xff0c;不能将关键字作为函数、变量、类、模块的名称 import keyword#利用内存模块keyword print(keyword.kwlist)#输出所有关键 print(len(keyword.kwlist))#利用内置函数len()输出关键字的…

Python笔记四之协程

本文首发于公众号&#xff1a;Hunter后端 原文链接&#xff1a;Python笔记四之协程 协程是一种运行在单线程下的并发编程模型&#xff0c;它的特点是能够在一个线程内实现多个任务的并发操作&#xff0c;通过在执行任务时主动让出执行权&#xff0c;让其他任务继续执行&#xf…

前端面试拼图-实践经验

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录并添加部分可参考的文档&#xff0c;如下... 1. H5页面如何进行首屏优化&#xff1f; 路由懒加载 适用于SPA&#xff08;不适用MPA&#xff09; 本质就是路由拆分&#xff0c;有限保证首页加载 服…

ThreadLocal-内存泄露问题

ThreadLocal概述 ThreadLocal是多线程中对于解决线程安全的一个操作类&#xff0c;它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal 同时实现了线程内的资源共享案例&#xff1a;使用JDBC操作数据库时&#xff0c;会将每一个线程的Conn…

从0到1理解MySQL的事务和ACID特性

从0到1理解MySQL的事务和ACID特性 在开始之前&#xff0c;我们先来了解一下MySQL的事务是什么&#xff0c;以及ACID是什么。 事务是什么&#xff1f; 事务可以简单地理解为一组数据库操作的集合&#xff0c;它们一起被视为一个不可分割的工作单元。事务要么全部成功执行&…

SpringBoot ApplicationListener实现发布订阅模式

文章目录 前言一、Spring对JDK的扩展二、快速实现发布订阅模式 前言 发布订阅模式(Publish-Subscribe Pattern)通常又称观察者模式&#xff0c;它被广泛应用于事件驱动架构中。即一个事件的发布&#xff0c;该行为会通过同步或者异步的方式告知给订阅该事件的订阅者。JDK中提供…

springboot 查看和修改内置 tomcat 版本

解析Spring Boot父级依赖 去到项目的根pom文件中&#xff0c;找到parent依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${springboot.version}…

Error response from daemon Get server gave HTTP response to HTTPS client

使用docker compose拉起docker镜像时&#xff0c;若出现如下报错 Error response from daemon: Get "https://devops.test.cn:5000/v2/": http: server gave HTTP response to HTTPS client表示Docker守护进程无法从指定url获取响应&#xff0c; 可能原因有以下&…

苍穹外卖-day09:用户端历史订单模块(理解业务逻辑),商家端订单管理模块(理解业务逻辑),校验收货地址是否超出配送范围(相关API)

用户端历史订单模块 1. 查询历史订单&#xff08;分页查询&#xff09; 1.1 需求分析和设计 产品原型&#xff1a; 业务规则 分页查询历史订单可以根据订单状态查询展示订单数据时&#xff0c;需要展示的数据包括&#xff1a;下单时间、订单状态、订单金额、订单明细&#…

C解析YAML

在C语言中解析YAML文件&#xff0c;你可以使用如libyaml等专门的YAML解析库。以下是使用libyaml库进行YAML解析的一个基本示例。libyaml是一个用来解析和生成YAML数据的C库。 首先&#xff0c;你需要确保已经正确安装了libyaml库。对于许多Linux发行版&#xff0c;你可以使用包…

软考76-上午题-【面向对象技术3-设计模式】-创建型设计模式01

一、创建型设计模式一览 二、创建型设计模式 2-1、创建型设计模式的概念 一个类创建型模式使用继承改变被实例化的类&#xff1b; 一个对象创建型模式将实例化委托给另一个对象。 对应java的new一个对象。 2-2、简单工厂模式&#xff08;静态工厂方法&#xff09; 简单工厂…

一文解读ISO26262安全标准:概念阶段

一文解读ISO26262安全标准&#xff1a;概念阶段 1 相关项定义2 安全生命周期启动3 危害分析和风险评估 HaRa4 功能安全概念 由上一篇文章知道&#xff0c;安全生命周期包含概念阶段、产品开发阶段、生产发布后续阶段。本文详细解读概念阶段要进行的安全活动。 本部分规定了车辆…

猫头虎分享已解决Bug || TypeError: Cannot interpret ‘float‘ value as integer.

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

利用自定义 URI Scheme 在 Android 应用中实现安全加密解密功能

在现代移动应用开发中&#xff0c;安全性和用户体验是至关重要的考虑因素。在 Android 平台上&#xff0c;开发人员可以利用自定义 URI Scheme 和 JavaScript 加密解密技术来实现更安全的数据传输和处理。本文将介绍如何在 Android 应用中注册自定义 URI Scheme&#xff0c;并结…