Nginx安装、卸载教程(含Window、Linux版、Docker版)

news2024/11/18 9:47:03

目录

一、下载

二、Linux版安装

2.1 编译安装之前

2.2 编译安装

2.3 启动Nginx

2.4 关于防火墙

2.5 安装成系统服务

三、Linux版卸载(彻底)

3.1 检查一下Nginx服务是否在运行

3.2 停止Nginx服务

3.3 查找、删除Nginx相关文件

3.4 再使用yum清理

四、Docker安装Nginx

五、如何通过nginx访问我们的项目


以Nginx开源版为例,进行演示

安装包下载地址:http://nginx.org/

一、下载

进入后下载对应的即可。下载速度还是很快的,本身文件就不大。下载完成直接解压就行。

至于windows版本的,直接双击运行nginx.exe文件即可启动

然后访问本机的80端口即可。

如果出现访问不了的情况,可以检查一下防火墙,或者以管理员权限运行。

window版本使用太简单了,这里一笔带过了。

二、Linux版安装

2.1 编译安装之前

  1. 将压缩包(nginx-1.21.6.tar.gz)放在任意指定的linux目录下,如/root

  2. 解压缩文件(解压到当前路径)

    tar -zxvf nginx-1.21.6.tar.gz

    备注:

    也可以解压缩到指定目录,比如

    tar -zxvf nginx-1.21.6.tar.gz -C /usr/local/nginx

    前提是/usr/local/nginx路径要存在,所以可以提前创建相应文件夹,比如在/usr/local目录下 mkdir nginx ,创建nginx文件夹

  3. 然后进入解压后的安装包中,准备编译安装

    cd /root/nginx-1.21.6

2.2 编译安装

编译安装到指定路径下,此路径不写也是默认安装到这里

./configure --prefix=/usr/local/nginx
make
make install

如果出现警告或报错

(一)提示

checking for OS
Linux 3.10.0-693.el7.x86_64 x86_64
​
checking for C compiler ... not found
​
​
./configure: error: C compiler cc is not found

安装gcc,c语言编译器

yum install -y gcc

-y 表示不提示直接进行安装

(二)提示

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

安装perl库

yum install -y pcre pcre-deve

(三)提示

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

安装zlib库

yum install -y zlib zlib-devel

接下来再执行

make
make install

2.3 启动Nginx

进入安装好的目录 /usr/local/nginx/sbin,然后执行下面对应的方法即可启动、停止等

./nginx 			启动
./nginx -s stop 	快速停止
./nginx -s quit 	优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload   重新加载配置

2.4 关于防火墙

关闭防火墙

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

ok,这样就不用担心访问不到服务了。当然了,如果你不想关闭防火墙,也可以放行80端口,这样也能访问到nginx。 

放行端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙

firewall-cmd --reload

2.5 安装成系统服务

每次重启系统或者停止Nginx后,如果要重启Nginx,需要进入Nginx的安装目录,执行对应的指令。这样做如果你觉得麻烦,也可以将Nginx配置环境变量,然后就可以再任意地方执行它的命令了。

或者还有一种方式,就是将Nginx安装成为Linux的系统服务。这样更简洁了。 

具体方法如下:

创建服务脚本,该路径下都是系统级的服务

vi /usr/lib/systemd/system/nginx.service

服务脚本内容:

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

这样就搞定了,然后我们可以通过systemctl命令来启动停止Nginx了。

启动服务

systemctl start nginx.service

开机自启动

systemctl enable nginx.service

三、Linux版卸载(彻底)

3.1 检查一下Nginx服务是否在运行

ps -ef | grep nginx

3.2 停止Nginx服务

/usr/sbin/nginx -s stop

查看端口占用情况:

netstat -lntp

3.3 查找、删除Nginx相关文件

whereis nginx

  查看Nginx相关文件:

 find查找相关文件

find / -name nginx 

依次删除find查找到的所有目录:

rm -rf /usr/sbin/nginx

3.4 再使用yum清理

yum remove nginx

ok Nginx 卸载完成!

四、Docker安装Nginx

其实学过Docker就很简单了

拉取nginx镜像,具体的版本好可以取dockerhub官网查看。不写版本号默认最新版本

docker pull nginx:1.22.1

运行一个nginx容器:

docker run --name some-nginx -d -p 8080:80 some-content-nginx

ok,这样就启动起来了。

但是,我们需要修改配置文件的话,还得进入容器内部,不太方便,所以我们一般会在运行容器的时候选择将容器内的一些目录挂载到宿主机上。

因为不同的docker容器,它的映射内部端口号、以及内部的结构这些,你不熟悉的话大概率是不知道的,所以最好的方法也是取dockerhub下面查看如何运行。

下面可以先停止掉当前容器并删除,然后我们重新进行挂在运行。

当然你也可以选择不删除(这里不演示此方法的后续操作)。

在运行之前记得先创建一下文件,否则直接生成会生成文件夹

touch /mydata/mynginx/conf/nginx.conf
docker run -d \
--name mynginx \
-p 80:80 \
-v /mydata/mynginx/html:/usr/share/nginx/html \
-v /mydata/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf \
nginx:1.22.1

这个时候你发现根本无法访问,而且你通过docker ps命令发现容器根本没有启动起来。即使再docker start mynginx也无法启动

这是怎么回事呢?

其实这种问题很常见,原因就是:我们不是使用的后台运行命令嘛(-d),而要使用后台运行就必须有一个前台进程。因为没有前台进程,所以就会自动停止。

那为什么会没有前台进程呢?其实就是因为我们选择将容器内部的文件挂载出来,导致了容器内部没有了该文件。

所以我们需要在宿主机的挂在路径上添加上对应的文件。这个文件你可以去官网下载对应的压缩包,然后解压出来,然后上传到服务器对应的挂在目录即可。

然后我们再docker start mynginx即可运行成功。

但是可能报错404,原因是我们一股脑的直接复制过来了。没有修改配置文件。

因为nginx.conf配置文件中80端口下的资源路径root根目录写的是相对位置的html。

由于挂载的原因,导致可能无法识别,所以一定要写容器内部nginx是全路径。

不能写宿主机的挂载路径。因为我们nginx是按照在容器的,这些配置都是在容器中的。server_name为localhost表示的是容器的位置,不上宿主机的位置。

只不过我们启动容器的时候将它映射到宿主机的端口了而已。

 

 

五、如何通过nginx访问我们的项目

其实要懂这部分,最好是系统学习Nginx。

我们还是像之前一样通过docker的方式运行我们的web项目

至于怎么将web项目做成docker镜像可以去看docker镜像相关的讲解笔记。这里不详细阐述。

或者我们直接将打包好的jar包丢到服务器上,然后直接java -jar的方式运行也是可以的。

比如这里我们就生成好了一个springboot项目的docker容器并且启动运行了。对外暴露的端口是3800。

我们通过3800端口即可访问到该项目。实际在公网服务器中,我们是需要开放3800端口才可以访问到的。虚拟机中也一样,这里我们是关闭了防火墙。所以任何端口都能开放。

我们使用了nginx,目的就是希望访问都打到nginx服务器上,通过nginx反向代理到我们的服务器地址3800,以达到更好的访问效果。所以实际开发中,并不会暴露真实的后端接口。

下面开整,核心就在配置文件。我将原本注释的直接删掉了。

worker_processes  2;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
 
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
 
        location / {
             proxy_pass http://192.168.17.110:3800;
        }
    }
}

 

 

 

 

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

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

相关文章

C++11新特性(5):多线程

学习C11&#xff0c;根据网上资料的知识总结。 1. 线程创建 1.1 初始函数 #include <iostream> #include <thread> void myfunc(int &a) {cout << "a in myfunc:" << a << endl; }int main() {int a 1;std::thread mythread(…

Solr框架 02.Solr操作(document操作和query查询)

菜单项目Documents使用办法 其中的document选项&#xff1a; 以XML格式举例 1新增/修改 当id不存在时新增&#xff0c;当id存在修改。 <doc> <field name"id">8</field> <field name"name">明天更大卖</field> <field n…

好处多多的数仓分层是怎么样子的呢?如何创建数仓分层,

一、创建数仓分层 数仓分层是结合对业务场景、实际数据、使用系统的综合分析&#xff0c;对数据模型进行的整体架构设计及层级划分。用于将不同用途的数据&#xff0c;归类划分至不同的分层&#xff0c;便于您更好地组织、管理、维护数据。本文为您介绍如何创建并管理数仓分层…

Nik Dfine 降噪滤镜

Nik Define 是 Nik Collection 中专门用于降噪的滤镜。 Nik Dfine 有三种降噪方式&#xff1a;自动、手动以及精细局部控制。 大部分照片的降噪&#xff0c;用自动模式就可以达到满意效果。 有所侧重的话&#xff0c;可考虑手动降噪或精细局部控制方式降噪。 返回 Ps 后&#x…

JMeter分布式压测,启动执行机器报错: Port already in use: 1099

Problem creating registry: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use (Bind failed) 当压测量大的时候我们有时候会失败&#xff0c;然后再接着压测&#xff0c;这样就容易造成端口…

vue3框架开发uniapp高仿度小满金融App项目

vue3框架开发uniapp高仿度小满金融App项目 心血来潮写了度小满前端项目使用vue3开发地址&#xff1a;度小满金融 下面是实现效果

Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器

Jenkins Docker Maven Windows 一键部署 Spring Boot 程序到远程 Linux 服务器 文章目录 Jenkins Docker Maven Windows 一键部署 Spring Boot 程序到远程 Linux 服务器一、准备1、环境2、基本流程准备步骤基本思路 3、相关命令4、Dockerfile 文件5、配置远程服务器、安装…

外贸网站推广怎么做?英文外贸网站推广的好处

外贸网站推广是在全球范围内宣传和促销公司的产品或服务&#xff0c;以吸引国际客户和拓展海外市场。 以下是一些常见的外贸网站推广策略和方法&#xff1a; 网站优化&#xff1a;确保你的网站在搜索引擎上获得良好的排名。使用关键词研究和优化技术来提高网站的可见性和搜索引…

PostgreSQL中HOT对cluster的作用

PG中cluster的作用是根据表的索引重新构建一张表&#xff0c;并且表根据该索引进行排序&#xff0c;索引必须提前建好。 注意&#xff1a;cluster操作加ACCESS EXCLUSIVE锁&#xff0c;会阻塞其它任何操作。 我们为什么要运行cluster? PG中的表是堆表&#xff0c;表中行的顺…

SpringMvc接收前端发送的api请求参数问题笔记

SpringMvc接收前端发送的api请求参数问题笔记 get请求参数字符串日期转date接收 需要使用DateTimeFormat注解&#xff0c;来接收前端传的 http://xx.xx.xxx/xsdc?start2023-07-01 15:12:13&end2023-07-02 15:00:00 这种日期参数&#xff1b; 这样获取日期数据就能直接取…

启动一个qemu虚拟机

安装qemu&#xff1a; 编译内核&#xff1a; 编译rootfs&#xff1b; 启动&#xff1a; qemu-system-x86_64 -kernel ./linux-4.14.320/arch/x86_64/boot/bzImage -hda ./busybox-1.36.1/rootfs.img -append "root/dev/sda consolettyS0" -nographic 效果图&am…

乐优购物车微服务过滤拦截器

4.1.2.配置公钥 leyou:jwt:pubKeyPath: D:/heima/rsa/rsa.pub # 公钥地址cookieName: LY_TOKEN # cookie的名称 4.1.3.加载公钥 代码&#xff1a; ConfigurationProperties(prefix "leyou.jwt") public class JwtProperties { ​private String pubKeyPath;// 公…

git远程库GitHub

首先&#xff0c;注册一个GitHub&#xff08;github.com&#xff09;帐号&#xff0c;免费获得Git远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的&#xff0c;所以&#xff0c;需要一点设置&#xff1a; 第1步&#xff1a;创建SSH Key。在用户主目录下&…

学习一波Java语言中的优先队列 PriorityQueue

目录 一、什么是优先队列 二、PriorityQueue 如何使用 三、优先队列的使用场景 一、什么是优先队列 优先队列是一种特殊的队列数据结构&#xff0c;它根据元素的优先级来确定元素的顺序。与普通队列不同的是&#xff0c;优先队列中的元素并不按照插入的先后顺序进行排列&am…

SpringBoot整合logback日志框架详解(提供Gitee源码)

前言&#xff1a;本篇博客主要介绍如何把主流的日志框架快速整合到目前的SpringBoot框架中&#xff0c;对六种日志等级进行介绍以及使用方法。 目录 一、日志级别 1、TRACE 2、DEBUG 3、INFO 4、WARN 5、ERROR 6、FATAL 二、导入pom.xml依赖 三、application.yml配置…

seatunnel-2.3.2 doris数据同步到hive(cdh-6.3.2)首次运行踩坑记录

seatunnel-2.3.2 doris数据同步到hive(cdh-6.3.2)首次运行报错解决&#xff0c;解决的报错如下&#xff1a; 1、java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaException 2、java.lang.NoClassDefFoundError: org/apache/thrift/TBase 3、java.la…

arcgis的属性显示bug

arcgis中&#xff0c;右键图层属性可以查看图层的属性信息&#xff0c;比如坐标系、波段数、行列数等。 但是今天实验的时候发现&#xff0c;这个属性中显示的波段最大最小值并非真值。 该图层实际范围为&#xff1a;30~711。 在arcgis属性中&#xff0c;显示范围为0~651。 在…

常用傅里叶变换对 傅里叶变换性质

记录下常用的傅里叶变换对 1. 对称性 2. 尺度变化性 根据上述性质求解&#xff1a; 上述函数可以理解为&#xff0c;cos(wt)的振幅是随着f(t)变化的&#xff0c;这个叫做调幅&#xff08;幅度受到了调制&#xff09;&#xff0c;不过一般发射的时候&#xff0c;还会发个载波&am…

【SQL应知应会】行列转换(二)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 行列转换 • Mysql版 前言一、MySQL行列转换1.数据…

SATA 和 ESATA 数据线针脚定义

esata定义 eSATA provides a variant of SATA for external connectivity. It uses a more robust connector, longer shielded cables, and stricter electrical standards. The protocol and logical signaling are identical to internal SATA. eSATA was standardized in 2…