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 目录。
注:如果rz后出现乱码 =>  请戳这里

  1. 解压文件
# 解压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; 
  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ͣ ...

参考了下面网友的说法:

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.rhkb.cn/news/283618.html

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

相关文章

计算机网络:数据交换方式

计算机网络&#xff1a;数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式&#xff0c;分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换&#xff0c;在电话问世后不久&#xff0c;人们就发现要让所有的电话机都…

Springboot-软件授权License

无意中看到了一个简单方便的授权方式&#xff0c;只需几步就可集成到boot项目中。 先上地址&#xff1a;smart-license: 保护个人与企业的软件作品权益&#xff0c;降低盗版造成的损失。PS&#xff1a;因个人精力有限&#xff0c;不再提供该项目的咨询答疑服务。 Smart-licen…

【小米汽车SU7实测】 小米汽车su7到底行不行?小米新能源轿车体验感怎么样?

小米汽车SU7是小米汽车的首款车型&#xff0c;定位“C级高性能生态科技轿车”&#xff0c;也是小米迈入新能源赛道的首次成果落地。 首先&#xff0c;让我们来谈谈它的性能。试驾过程中&#xff0c;小米SU7展现出了惊人的加速能力&#xff0c;0-100km/h加速仅需2.78秒&#xf…

pytest全局配置+前后只固件配置

pytest全局配置前后只固件配置 通过读取pytest.ini配置文件运行通过读取pytest.ini配置文件运行无条件跳过pytest.initest_mashang.pyrun.py 有条件跳过test_mashang.py pytest框架实现的一些前后置&#xff08;固件、夹具&#xff09;处理方法一&#xff08;封装&#xff09;方…

Kafka总结问题

Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题&#xff0c;在 kafka 中&#xff0c;使用一个类别属性来划分消息的所属类&#xff0c;划分消息的这个类称为 topic。topic 相当于消息的分配标签&#xff0c;是一个逻辑概念。主题好比是数据库的表&#xff0…

C++进阶之路---C++11相关特性 | 左值引用 | 右值引用 | 完美转发

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之…

全球大型语言模型(LLMS)现状与比较

我用上个博文的工具将一篇ppt转换成了图片&#xff0c;现分享给各位看官。 第一部分&#xff1a;国外大语言模型介绍 1&#xff0c;openai的Chatgpt 免费使用方法1&#xff1a;choose-carhttps://share.freegpts.org/list 免费使用方法2&#xff1a;Shared Chathttps://share…

【Java】Map和Set

文章目录 一、Map和Set的概念二、模型三、Map的说明3.1 Map.Entry<K, V>的说明3.2 Map 的常用方法 四、Set的说明4.1 Set的常用方法 一、Map和Set的概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关&#xff0c…

redis和rabbitmq实现延时队列

redis和rabbitmq实现延时队列 延迟队列使用场景Redis中zset实现延时队列Rabbitmq实现延迟队列 延迟队列使用场景 1. 订单超时处理 延迟队列可以用于处理订单超时问题。当用户下单后&#xff0c;将订单信息放入延迟队列&#xff0c;并设置一定的超时时间。如果在超时时间内用户…

Ollama 运行 Cohere 的 command-r 模型

Ollama 运行 Cohere 的 command-r 模型 0. 引言1. 安装 MSYS22. 安装 Golang3. Build Ollama4. 运行 command-r 0. 引言 Command-R Command-R 是一种大型语言模型&#xff0c;针对对话交互和长上下文任务进行了优化。它针对的是“可扩展”类别的模型&#xff0c;这些模型在高…

CTF题型 Http请求走私总结Burp靶场例题

CTF题型 Http请求走私总结&靶场例题 文章目录 CTF题型 Http请求走私总结&靶场例题HTTP请求走私HTTP请求走私漏洞原理分析为什么用前端服务器漏洞原理界定标准界定长度 重要!!!实验环境前提POST数据包结构必要结构快速判断Http请求走私类型时间延迟CL-TETE-CL 练习例题C…

代码随想录阅读笔记-栈与队列【用栈实现队列】

题目 使用栈实现队列的下列操作&#xff1a; push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue new MyQueue(); queue.push(1); queue.push(2); queue.peek(); …

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章&#xff1a; GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

docker仓库登录及配置insecure-registries的方法

docker仓库登录及配置insecure-registries的方法 这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置&#xff0c;就不需要在docker 客户端配置上对应证书&#xff0c;如果不配置要在/etc/docker/certs.d/目…

vue3与Electron构建跨平台应用(webpack)

一、创建vue3项目 vue create vue3_webpack_electron 二、安装Electron npm install --save-dev electron Electron 三、vue add electron-builder vue add electron-builder

优维全面可观测产品能力分解⑥:运维状态可观测

本文是《优维全面可观测产品能力分解》系列文章的第六篇&#xff1a;『运维状态可观测』。基于可观测的数据体系&#xff0c;「运维状态可观测」是实现于运维状态的一次深入可观测。 在日常运维场景中&#xff0c;系统/应用运维人员重点关注的是系统/应用是否可用&#xff0c;…

视频素材库哪个好?这8个短视频相关的优质素材网推荐看看

在这个数字化时代&#xff0c;视频内容的创作变得前所未有地重要。无论是短视频的快速制作&#xff0c;还是专业影片的精心编辑&#xff0c;找到合适的素材资源是每个视频创作者的基本需求。从高清视频片段、无水印的图片&#xff0c;到富有情感的音效&#xff0c;以下精选的网…

LeetCode---126双周赛

题目列表 3079. 求出加密整数的和 3080. 执行操作标记数组中的元素 3081. 替换字符串中的问号使分数最小 3082. 求出所有子序列的能量和 一、求出加密整数的和 按照题目要求&#xff0c;直接模拟即可&#xff0c;代码如下 class Solution { public:int sumOfEncryptedInt…

《剑指 Offer》专项突破版 - 面试题 88 : 动态规划的基础知识(C++ 实现)

目录 前言 面试题 88 : 爬楼梯的最少成本 一、分析确定状态转移方程 二、递归代码 三、使用缓存的递归代码 四、空间复杂度为 O(n) 的迭代代码 五、空间复杂度为 O(1) 的迭代代码 前言 动态规划是目前算法面试中的热门话题&#xff0c;应聘者经常在各大公司的面试中遇到…

JAVA——volatile,wait,notife

文章目录 volatile关键字简识jvm内存模型内存上的优化问题的产生volatile的作用 wait&#xff08;&#xff09;wait()的作用 notify&#xff08;&#xff09;notify的唤醒顺序 volatile关键字 volatile关键字可以保证内存的可见性&#xff0c;什么是内存的可见性呢&#xff1f…