Nginx三种安装方式

Nginx安装

可以登录 Nginx 的官方网站:https://www.nginx.com/ 找到安装方式。

查看如何安装开源的版本:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/

通过官方的说明,也可以知道安装,我这里简单列几种安装方式。

2.1 Ubuntu使用apt安装

这种方式安装的 nginx 版本一般不是最新的,主要是安装简单。

1 获取最新的软件包列表

sudo apt update

2 安装Nginx

sudo apt install nginx

3 验证安装

查看nginx版本

nginx -v

4 访问首页

现在通过浏览器访问http://IP 就可以访问了.

image-20241202150120438

2.2 CentOS使用yum安装

这种方式安装的 nginx 版本一般也不是最新的,但是也够用了,主要是安装简单。

1 安装 EPEL 存储库

yum install -y epel-release

2 更新存储库

yum update

3 安装Nginx

yum install -y nginx

4 验证安装

查看nginx版本

nginx -v

image-20241202150319938

5 访问首页

现在通过浏览器访问 http://IP 就可以访问了。

image-20241202150120438

2.3 源码安装

如果要使用最新版本,可以使用源码进行编译安装。

在从源代码编译之前,需要安装一些依赖项。

1 安装编译环境

用于编译C和C++程序

# CentOS中yum安装
yum update
yum install gcc-c++

# Ubuntu中apt安装
sudo apt update
sudo apt install build-essential

2 安装PCRE

PCRE 是为了支持正则表达式,Nginx 的 Core 和 Rewrite 模块需要。

# CentOS中yum安装
yum install -y pcre pcre-devel

# Ubuntu中apt安装
sudo apt install libpcre3 libpcre3-dev

# 使用源码安装
wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
tar -zxf pcre2-10.42.tar.gz
cd pcre2-10.42
./configure
make
sudo make install

3 安装zlib

zlib 用来支持标头压缩,Nginx 的 Gzip 模块需要。

# CentOS中yum安装
yum install -y zlib zlib-devel

# Ubuntu中apt安装
sudo apt install zlib1g zlib1g-dev

# 使用源码安装
wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install

4 安装OpenSSL

OpenSSL 用来支持https 协议, Nginx 的 SSL 模块和其他模块需要。

# CentOS中yum安装
yum install -y openssl openssl-devel

# Ubuntu中apt安装
sudo apt install openssl libssl-dev

# 使用源码安装
wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -zxf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
./Configure darwin64-x86_64-cc --prefix=/usr
make
sudo make install

5 下载源代码

从nginx.org (opens new window)可以下载最新版或稳定版本,建议使用稳定版本。

版本地址:https://nginx.org/en/download.html?_ga=2.197110824.562665189.1714921677-1619311149.1714730622

下载并解压最新版本的源代码:

wget https://nginx.org/download/nginx-1.25.1.tar.gz
tar zxf nginx-1.25.1.tar.gz
cd nginx-1.25.1

下载并解压最新稳定版本的源文件:

wget https://nginx.org/download/nginx-1.26.0.tar.gz
tar zxf nginx-1.26.0.tar.gz
cd nginx-1.26.0

6 配置构建选项

构建之前,先创建 Nginx 临时目录,用来存储 Nginx 的临时文件。

mkdir -p /var/temp/nginx

在 Nginx 目录下,输入如下命令进行配置,目的是为了创建makefile文件。

./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-stream \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

上面是一条命令,每行的末尾 \ 表示对命令进行换行,\ 之后不能有空格。

上面的 --prefix=/usr/local/nginx 就是 Nginx 的安装路径。

--error-log-path--http-log-path 指定的是日志目录。

7 编译

编译和安装:

# 编译
make

# 安装
make install

8 启动

# nginx命令程序在该路径下
cd /usr/local/nginx/sbin

# 启动nginx
./nginx

如果指定的文件没有权限,则使用 sudo 执行

9 验证安装

查看nginx版本

./nginx -v

10 访问首页

现在通过浏览器访问http://IP 就可以访问了。

image-20241202150120438

11 设置开机自启

源码的安装方式,需要手动设置开机自启。

创建一个 systemd 服务文件 /etc/systemd/system/nginx.service

[Unit]  
Description=The NGINX HTTP and reverse proxy server  
After=network.target remote-fs.target nss-lookup.target  
  
[Service]  
Type=forking  
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 quit  
PrivateTmp=true  
  
[Install]  
WantedBy=multi-user.target

上面 nginx 的路径和配置文件的路径要对应。

然后运行命令重载一下 systemd 的配置文件:

sudo systemctl daemon-reload

然后就可以使用如下命令进行操作了:

# 设置开机自启动
sudo systemctl enable nginx

# 取消开机自启动
sudo systemctl disable nginx

# 启动
sudo systemctl start nginx

 # 停止
sudo systemctl stop nginx

# 重启
sudo systemctl relaod nginx

2.4 Docker方式安装

Docker方式安装要比其他的安装方式简单多了。

下面介绍在 Docker 中部署 Nginx,并通过挂载方式将 Nginx 的配置文件和站点目录挂载到宿主机上。

1 下载镜像

docker pull nginx

默认下载的就是最新的镜像文件。

2 创建挂载目录

在宿主机上创建挂载目录,自己自定义放在哪里。

# 配置文件目录
mkdir -p /home/nginx/docker_dir/nginx/conf
# 站点目录
mkdir -p /home/nginx/docker_dir/nginx/html
# nginx日志目录
mkdir -p /home/nginx/docker_dir/nginx/log

# 递归赋予文件夹读写执行权限
chmod -R 777 /home/nginx/docker_dir/nginx

3 复制配置文件

如果我们此时使用如下指令直接运行容器会存在一个问题。

docker run -d -p 8080:80 --name nginx-1 --restart=always \
  -v /home/nginx/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v /home/nginx/docker_dir/nginx/log:/var/log/nginx \
  -v /home/nginx/docker_dir/nginx/html:/usr/share/nginx/html \
  nginx

宿主机不存在不存在 nginx.conf 文件,会把 /home/nginx/docker_dir/nginx/conf/nginx.conf 当成文件夹来处理,那么把宿主机的 /home/nginx/docker_dir/nginx/conf/nginx.conf 文件夹映射到容器的 /etc/nginx/nginx.conf 就会报错。

怎么处理呢?

我们首先通过 nginx 镜像运行一个简单的容器,将简单的容器中的配置文件复制到宿主机中,然后删除简单的容器,重新使用上面的命令运行我们的容器。

运行一个简单的容器

# 启动容器
docker run --name nginx -p 8080:80 -d nginx

复制配置文件到宿主机

# 将容器中nginx.conf文件复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/docker_dir/nginx/conf/nginx.conf
# 将容器中conf.d文件夹下内容复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/conf.d /home/nginx/docker_dir/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机的挂载目录中,后面没有html
docker cp nginx:/usr/share/nginx/html /home/nginx/docker_dir/nginx

删除简单的容器

docker rm -f nginx

4 运行容器

现在有配置文件了,可以运行容器,并进行挂载了:

docker run -d -p 8080:80 --name nginx --restart=always \
  -v /home/nginx/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  -v /home/nginx/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
  -v /home/nginx/docker_dir/nginx/log:/var/log/nginx \
  -v /home/nginx/docker_dir/nginx/html:/usr/share/nginx/html \
  nginx

参数说明:

  • -d:后台运行
  • -p: 端口映射(宿主机端口:容器端口),nginx配置文件中默认使用的是80端口,所以容器的端口使用的是80,除非修改配置文件。
  • –name 创建容器的名称
  • –restart=always 容器停止后自动重启
  • -v 目录挂载(宿主机目录:容器目录)
  • 最后的nginx表示镜像的名称

5 访问首页

现在通过浏览器访问http://IP 就可以访问了。

image-20241202150120438

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 10 Launcher3 删除谷歌搜索

命令行获取页面 手机处于launcher首页 adb shell dumpsys window | findstr mCurrentFocus 输出 mCurrentFocusWindow{9afb34d u0 com.android.launcher3/com.android.launcher3.Launcher} 找到源码路径 packages/apps/Launcher3/ Android10源码 搜索控件 grep -r -n Apps…

自动驾驶AVM环视算法--python版本的俯视TOP投影模式

c语言版本和算法原理的可以查看本人的其他文档。《自动驾驶AVM环视算法--全景的俯视图像和原图》本文档进用于展示部分代码的视线,获取方式网盘自行获取(非免费介意勿下载):链接: https://pan.baidu.com/s/1MJa8ZCEfNyLc5x0uVegto…

前端OpenAPI根据后端Swagger自动生成前端接口报错

测试之后发现是因为Map<Long,List<CommentVO>>的返回值类型的锅&#xff0c;改成Page<List<CommentVO>>即可解决。 前端使用的umiMAX的openapi&#xff0c;报错如下&#xff1a; originalRef: BaseResponseboolean\n "401&q…

java开发入门学习五-流程控制

流程控制语句 if&#xff0c; if...else&#xff0c; if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式&#xff0c;使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…

.NET 技术 | 调用系统API创建Windows服务

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

《PCI密码卡技术规范》题目

单选1 在《PCI密码卡技术规范》中&#xff0c;下列哪项不属于PCI密码卡的功能&#xff08;&#xff09;。 A.密码运算功能 B.密钥管理功能 C.物理随机数产生功能 D.随主计算机可信检测功能 正确答案&#xff1a;D. <font style"color:#DF2A3F;">解析&…

Java操作Redis-Jedis

介绍 前面我们讲解了Redis的常用命令&#xff0c;这些命令是我们操作Redis的基础&#xff0c;那么我们在 java程序中应该如何操作Redis呢&#xff1f;这就需要使用Redis的Java客户端&#xff0c;就如同我们使 用JDBC操作MySQL数据库一样。 Redis 的 Java 客户端很多&#xff0…

QT网络(二):TCP通信

传输层概念 传输控制协议&#xff08;transmission control protocol&#xff0c;TCP&#xff09;是一种被大多数 Internet 网络协议用于数据传输的底层网络协议&#xff0c;它是可靠的、面向流和连接的传输协议&#xff0c;特别适合用于连续数据传输。 应用层在网络模型中的…

Cherno C++学习笔记 P43 对象生存周期

这篇文章我们讲一下对象的生存周期。这个也是一个很重要的问题&#xff0c;因为我们总说&#xff0c;编程其实就是在操纵内存&#xff0c;而知道了变量如何在栈上生存&#xff0c;以及我们如何利用这些特性来让我们的编程更加简单&#xff0c;我们才是真的理解了编程。我们都知…

02、10个富士胶片模拟的设置

二色彩 1、色彩的加减控制全局的饱和度增减&#xff1b; 2、色彩效果只提升暖色系饱和度&#xff1b; 3、FX蓝色大幅度提升蓝色系饱和度&#xff1b; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…

【Unity3D】ILRuntime学习记录一

Unity 2019.4.0f1 导入ILRuntime 2.1.0版本 项目目录/Packages/manifest.json添加如下代码&#xff1a; {"scopedRegistries":[{"name":"ILRuntime","url":"https://registry.npmjs.org","scopes":["com.ou…

ECharts柱状图-柱图38,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

2024年12月19日Github流行趋势

项目名称&#xff1a;ByteByteGoHq / system-design-101 项目维护者&#xff1a;slam, LombardiDaniel, Stephanvs, alastairp, lucasberti 等项目介绍&#xff1a;使用视觉和简单术语解释复杂的系统。帮助你准备系统设计面试。项目star数&#xff1a;66,527项目fork数&#xf…

Elasticsearch:什么是信息检索?

信息检索定义 信息检索 (IR) 是一种有助于从大量非结构化或半结构化数据中有效、高效地检索相关信息的过程。信息&#xff08;IR&#xff09;检索系统有助于搜索、定位和呈现与用户的搜索查询或信息需求相匹配的信息。 作为信息访问的主要形式&#xff0c;信息检索是每天使用…

机械鹦鹉与真正的智能:大语言模型推理能力的迷思

编者按&#xff1a; 大语言模型真的具备推理能力吗&#xff1f;我们是否误解了"智能"的本质&#xff0c;将模式匹配误认为是真正的推理&#xff1f; 本文深入探讨了大语言模型&#xff08;LLMs&#xff09;是否真正具备推理能力这一前沿科学问题&#xff0c;作者的核…

day-21 内核链表以及栈

1.昨日作业 1.删除指定节点 找到删除就完事了&#xff0c;双向可以停在删除处。 /***************************** 功能&#xff1a;删除指定结点&#xff08;通过姓名&#xff09;* 参数&#xff1a;phead&#xff1b;oldname; * 返回&#xff1a;成功0&#xff0c;失-1&…

深入剖析MyBatis的架构原理

架构设计 简要画出 MyBatis 的架构图 >> ​​ Mybatis 的功能架构分为哪三层&#xff1f; API 接口层 提供给外部使用的接口 API&#xff0c;开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis 和数据库的…

Figma插件:提高设计工作效率

Figma作为一款当前流行的设计工具&#xff0c;其受欢迎程度的飙升与2020年疫情后的远程工作趋势密切相关。许多设计团队开始转向线上办公模式&#xff0c;这时&#xff0c;Figma的协作功能就显得尤为重要&#xff0c;促使众多设计师从Sketch等传统设计软件转向Figma。 Figma是…

Hive其一,简介、体系结构和内嵌模式、本地模式的安装

目录 一、Hive简介 二、体系结构 三、安装 1、内嵌模式 2、测试内嵌模式 3、本地模式--最常使用的模式 一、Hive简介 Hive 是一个框架&#xff0c;可以通过编写sql的方式&#xff0c;自动的编译为MR任务的一个工具。 在这个世界上&#xff0c;会写SQL的人远远大于会写ja…

Qt之自定义标题栏拓展(十)

Qt开发 系列文章 - user-defined-titlebars&#xff08;十&#xff09; 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 1.初始化函数 2.功能函数 3.窗口关…