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就可以访问了.

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

5 访问首页

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

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就可以访问了。

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就可以访问了。

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

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

相关文章

Keil5下C程序编译错误排查:深度剖析常见问题

Keil5下C程序编译错误排查:从“红字满屏”到一键构建成功的实战指南你有没有过这样的经历?写完一段自认为逻辑完美的代码,信心满满地点击Build,结果“Build Output”窗口瞬间弹出十几条红色错误信息——identifier not defined、f…

Windows 11 26H1 已发布,但并非所有平台都能升级

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…

在Arduino中实现SSD1306动画效果:操作指南

在Arduino上玩转SSD1306动画:从内存困局到丝滑播放的实战全解析你有没有试过在一块小小的OLED屏上放“视频”?不是开玩笑——用Arduino驱动一块12864的SSD1306屏幕,确实能实现接近动画的效果。虽然它没有操作系统、没有GPU,RAM还不…

nginx-静态资源部署

目录 静态资源概述 静态资源配置指令 listen指令 server_name指令 精确匹配 ?编辑 ?编辑 使用通配符匹配 使用正则表达式匹配 匹配执行顺序 default_server属性 location指令 root指令 alias指令 root与alisa指令的区别 index指令 error_page指令 直接使用…

Keil5安装教程之STC芯片添加:实战案例解析

Keil5添加STC芯片全攻略:从环境配置到一键下载的实战路径你有没有遇到过这样的场景?刚建好一个Keil工程,写完LED闪烁代码,信心满满点击“编译”——没问题;接着点“下载”,结果弹出提示:“Targe…

基于keil5编译器5.06下载的开发环境搭建手把手教程

搭建稳定可靠的嵌入式开发环境:从Keil5编译器5.06下载到实战调试 在嵌入式系统的世界里,一个高效、稳定的开发工具链往往决定了项目的成败。尤其当我们面对工业控制、汽车电子或长期维护的量产产品时,选择一款经过时间验证的编译器和IDE组合…

TPM 2.0 到底是啥?微软为啥非得让它成 Windows 11 的“硬门槛”[特殊字符](一篇讲透)

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…

USB Serial Controller驱动与RS485模块协同工作实战解析

从“插上就用”到稳定通信:USB转RS485实战全解析你有没有遇到过这样的场景?一台工控机没有串口,但现场一堆温湿度传感器、电表、阀门控制器全是RS485接口。怎么办?最简单的方案就是——插个USB转RS485模块。听起来很简单&#xff…

基于Java+SpringBoot+SSM高校志愿活动管理系统(源码+LW+调试文档+讲解等)/高校志愿服务管理系统/高校志愿者活动平台/大学志愿活动管理软件/高校志愿活动管理平台

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

51单片机蜂鸣器项目入门:制作简易音乐播放器

用51单片机“弹”一首《小星星》:从蜂鸣器发声到音乐播放的完整实现你有没有想过,一块几块钱的51单片机,加上一个小小的蜂鸣器,也能“演奏”出旋律?不是单调的“嘀嘀”提示音,而是真正能听出调子的《小星星…

基于Java+SpringBoot+SSM共享单车管理系统(源码+LW+调试文档+讲解等)/共享单车管理平台/共享单车运营系统/单车管理系统/共享车辆管理系统/共享单车智能系统/共享单车服务系统

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

arduino寻迹小车小白指南:轻松融入机器人课堂

从零开始做一辆“会思考”的小车:Arduino寻迹项目实战教学你有没有试过,写几行代码,就能让一个小车自己沿着黑线跑起来?不是遥控,也不是预设轨道——它真的能“看”路、“判断”方向,甚至在转弯时微微调整速…

工业网关开发中的CubeMX安装避坑指南

工业网关开发实战:STM32CubeMX安装避坑全记录 在我们最近的一个工业边缘计算项目中,团队刚拿到新设计的STM32H743核心板,准备着手开发支持Modbus、CAN和以太网协议转换的智能网关。一切就绪,却卡在了最基础的一环—— STM32Cube…

AI 领域中的 Prompt(提示词/提示)是什么?

AI 领域中的 Prompt(提示词/提示)是什么?一、核心定义 Prompt,在人工智能领域,特指用户输入给大语言模型或其他生成式AI模型的指令、问题、上下文或信息片段,旨在引导模型产生符合期望的输出。 简单比喻&am…

minicom与ARM开发板通信实战项目演示

用 minicom 玩转 ARM 开发板串口调试:从连线到自动化实战你有没有遇到过这样的场景?新拿到一块 ARM 开发板,烧录完镜像,通电后屏幕黑着、网络没反应——系统到底启动了没有?U-Boot 跑起来了吗?内核卡在哪一…

计算机毕业设计springboot基于vue的网上订餐系统 SpringBoot+Vue智慧餐饮在线点餐平台 Vue与SpringBoot融合的云餐厅即时订餐系统

计算机毕业设计springboot基于vue的网上订餐系统ly71oso3 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。快节奏的都市生活把“吃饭”这件小事也推上了数字化快车道:…

计算机毕业设计springboot大学四六级英语考试自主学习平台 基于Spring Boot的高校英语四六级在线自学系统 Spring Boot驱动的大学英语等级考试个性化学习平台

计算机毕业设计springboot大学四六级英语考试自主学习平台p0b96y2o (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 大学英语四六级是衡量大学生英语能力的“硬通货”&#xff0…

Java贪心算法详解:从入门到实战

一、什么是贪心算法? 1.1 通俗解释 贪心算法(Greedy Algorithm) 是一种非常直观的算法思想。它的核心理念可以用一句话概括: 在每一步决策时,都选择当前看起来最好的选项,不考虑未来,也不回头修改之前的选择。 这就像一个"目光短浅"但"行动果断"的…

[特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260110164857]

作为一名经历过多次系统架构演进的老兵,我深知可扩展性对Web应用的重要性。从单体架构到微服务,我见证了无数系统在扩展性上的成败。今天我要分享的是基于真实项目经验的Web框架可扩展性设计实战。 💡 可扩展性的核心挑战 在系统架构演进过…