在 Ubuntu 上安装 Nginx 的详细指南
在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块,以满足特定需求。以下是详细的步骤指南:
前提条件
-
更新系统包列表
sudo apt update sudo apt upgrade -y
-
安装必要的依赖包
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev wget
- build-essential: 包含编译工具如gcc、make等。
- libpcre3 & libpcre3-dev: 用于正则表达式支持。
- zlib1g & zlib1g-dev: 用于压缩功能。
- libssl-dev: 提供SSL支持。
- wget: 用于下载源码。
步骤一:下载Nginx源码
-
访问Nginx官方主页,获取最新的稳定版本下载链接。
-
使用wget下载源码包(以Nginx 1.24.0为例,请根据最新版本替换):
cd /usr/local/src sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
-
解压源码包
sudo tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0
步骤二:配置编译选项
配置编译选项可以自定义Nginx的功能和模块。以下是一个常用的配置示例:
sudo ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-stream --with-stream_ssl_module
说明:
--sbin-path
: 指定Nginx可执行文件的安装路径。--conf-path
: 指定Nginx配置文件的位置。--error-log-path
&--http-log-path
: 指定日志文件的位置。--with-pcre
: 启用PCRE支持(正则表达式)。--with-http_ssl_module
: 启用SSL模块。--with-http_v2_module
: 启用HTTP/2支持。--with-http_gzip_static_module
: 启用Gzip静态压缩模块。--with-stream
&--with-stream_ssl_module
: 启用TCP/UDP流支持及其SSL模块。
您可以根据需求添加或删除配置选项。运行./configure --help
可以查看所有可用的配置选项。
步骤三:编译和安装
-
编译源码
sudo make
编译过程可能需要几分钟,具体时间取决于系统性能。
-
安装Nginx
sudo make install
默认情况下,Nginx将被安装到之前指定的路径(如
/usr/local/nginx/
)。
步骤四:创建Nginx用户和目录
-
创建一个专用用户运行Nginx
sudo useradd -r -s /sbin/nologin nginx
-
设置正确的权限
sudo chown -R nginx:nginx /usr/local/nginx
步骤五:配置Nginx为系统服务
为了方便管理Nginx,建议将其配置为systemd服务。
-
创建Systemd服务文件
sudo nano /etc/systemd/system/nginx.service
-
在文件中添加以下内容
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target[Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit User=nginx Group=nginx[Install] WantedBy=multi-user.target
-
重新加载Systemd守护进程
sudo systemctl daemon-reload
-
启动Nginx服务
sudo systemctl start nginx
-
设置开机自启动
sudo systemctl enable nginx
-
检查Nginx状态
sudo systemctl status nginx
您应该看到Nginx正在运行的状态。
步骤六:配置防火墙
确保防火墙允许HTTP和HTTPS流量。
-
如果使用UFW防火墙
sudo ufw allow 'Nginx Full'
-
重新加载防火墙规则
sudo ufw reload
步骤七:验证安装
-
访问Nginx默认页面
打开浏览器,访问服务器的IP地址(例如
http://your_server_ip/
),您应该看到Nginx的默认欢迎页面。 -
检查Nginx版本
/usr/local/nginx/sbin/nginx -v
输出类似于:
nginx version: nginx/1.24.0
步骤八:管理Nginx
-
启动Nginx
sudo systemctl start nginx
-
停止Nginx
sudo systemctl stop nginx
-
重启Nginx
sudo systemctl restart nginx
-
重新加载配置
sudo systemctl reload nginx
附加步骤:配置Nginx
Nginx的主配置文件位于 /usr/local/nginx/conf/nginx.conf
。您可以根据需要编辑该文件进行进一步配置。
sudo nano /usr/local/nginx/conf/nginx.conf
编辑完成后,重新加载Nginx以应用更改:
sudo systemctl reload nginx
注意事项
-
更新Nginx
由于是源码安装,Nginx不会自动更新。要更新Nginx,需要手动下载新版本源码,编译并安装,或使用包管理工具。
-
卸载Nginx
源码安装的Nginx通常位于
/usr/local/nginx/
。要卸载,只需删除该目录:sudo rm -rf /usr/local/nginx/
以及删除Systemd服务文件:
sudo rm /etc/systemd/system/nginx.service sudo systemctl daemon-reload
-
日志管理
确保定期轮转Nginx日志以防止日志文件过大。可以使用
logrotate
工具进行配置。
总结
通过以上步骤,您已经成功在Ubuntu系统中从源码编译并安装了Nginx。源码安装提供了更高的灵活性,使您能够根据具体需求自定义Nginx的功能。请确保在生产环境中仔细测试配置,并定期维护Nginx以保持系统安全和稳定。
相关文章:
在 Ubuntu 上安装 Nginx 的详细指南
在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块,以满足特定需求。以下是详细的步骤指南: 前提条件 更新系统包列表 sudo apt update sudo apt upgrade -y安装必要的依赖包 sudo apt install -y build-essential libpcre3 libpcre3-…...

58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1
进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压,发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分,下面是PHP部分代码(HTML太长了,先放一…...
2.1 三个世界”与“图灵测试”:人工智能与人类智能的深度探索
“三个世界”与“图灵测试”:人工智能与人类智能的深度探索 人工智能的研究和发展,尤其是对其认知能力和智能表现的探索,早在20世纪中期就已成为科学家的热议话题。随着技术的进步,学者们提出了许多思想框架来理解人工智能的运作及其与人类智能的关系。其中,“三个世界”…...

基于微信小程序的优购电商系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

JS宏进阶: 工厂函数与构造函数
一、构造函数 在JavaScript中,构造函数是一种用于创建和初始化对象的特殊函数。构造函数的名字通常以大写字母开头,以区分于普通函数。通过new关键字调用构造函数,可以创建一个新的实例对象,并自动执行构造函数内部的代码来初始化…...

【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、线程概念 📖 回顾进程 📖 引入线程 📖 总结 &a…...
关于ubuntu命令行连接github失败解决办法
如果发现ping github.com有问题 使用sudo gedit /ect/hosts 打开host文件 添加 140.82.114.4 github.com 发现使用git 克隆失败,出现 aliaubuntu:~/文档/ctest$ git clone https://github.com/LearningInfiniTensor/learning-cxx.git 正克隆到 ‘learning-cxx’… …...
# [游戏开发] [Unity游戏开发]3D滚球游戏设计与实现教程
在这篇文章中,我们将通过一个简单的3D滚球游戏的设计与实现,讲解游戏开发中的一些关键概念和技术。游戏的核心目标是让玩家控制一个小球在跑道上左右移动,躲避障碍物并尽量向前跑,直到成功或失败。通过这一过程,我们会涉及到功能点分析、场景搭建、主体控制、游戏机制等多…...

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法,工艺参数优化、工程设计优化!(Matlab完整源码和数据) Transformer-LSTM模型的架构:输入层:多个变量作…...
Flutter中的事件冒泡处理
在 Flutter 中,GestureDetector 的点击事件默认是冒泡的,即如果嵌套了多个 GestureDetector,点击事件会从最内层的 GestureDetector 开始触发,然后依次向外层传递。如果你希望控制事件的优先级或阻止事件冒泡,可以使用…...
昇腾环境ppstreuct部署问题记录
测试代码 我是在华为昇腾910B3上测试的PPStructure。 import os import cv2 from PIL import Image #from paddleocr import PPStructure,draw_structure_result,save_structure_res from paddleocr_asyncio import PPStructuretable_engine PPStructure(show_logTrue, imag…...
基于 Python 的财经数据接口库:AKShare
AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 安装 安装手册见…...

电力场景红外测温图像绝缘套管分割数据集labelme格式2436张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2436 标注数量(json文件个数):2436 标注类别数:1 标注类别名称:["arrester"] 每个类别标注的框数&am…...

数字艺术类专业人才供需数据获取和分析研究
本文章所用数据集:数据集 本文章所用源代码:源代码和训练好的模型 第1章 绪论 1.1研究背景及意义 随着社会经济的迅速发展和科技的飞速进步,数字艺术类专业正逐渐崛起,并呈现出蓬勃发展的势头。数字艺术作为创作、设计和表现形式的…...

Java中json的一点理解
一、Java中json字符串与json对象 1、json本质 json是一种数据交换格式。 常说的json格式的字符串 > 发送和接收时都只是一个字符串,它遵循json这种格式。 2、前后端交互传输的json是什么? 前后端交互传输的json都是json字符串 比如:…...

Vue项目搭建教程超详细
目录 一. 环境准备 1. 安装node.js 2. 安装Vue cli 二. 创建 Vue 2 项目 1. 命令行方式 2. vue ui方式 一. 环境准备 1. 安装node.js 可参考node.js卸载与安装超详细教程-CSDN博客 2. 安装Vue cli npm install -g vue/cli检查是否安装成功 vue --version Vue CLI …...

2025年01月蓝桥杯Scratch1月stema选拔赛真题—美丽的图形
美丽的图形 编程实现美丽的图形具体要求: 1)点击绿旗,角色在舞台中心,如图所示; 2)1秒后,绘制一个边长为 140的红色大正方形,线条粗细为 3,正方形的中心为舞台中心,如图所示; 完整题目可点击下…...

【React】插槽渲染机制
目录 通过 children 属性结合条件渲染通过 children 和 slot 属性实现具名插槽通过 props 实现具名插槽 在 React 中,并没有直接类似于 Vue 中的“插槽”机制(slot)。但是,React 可以通过 props和 children 来实现类似插槽的功能…...
计算机网络 | 什么是公网、私网、NAT?
关注:CodingTechWork 引言 计算机网络是现代信息社会的基石,而网络通信的顺畅性和安全性依赖于有效的IP地址管理和网络转换机制。在网络中,IP地址起到了标识设备和进行数据传输的核心作用。本文将详细讨论公网IP、私网IP以及NAT转换等网络技…...
如何解决Outlook无法连接到服务器的问题
Microsoft Outlook 是一款广泛使用的电子邮件客户端,它能够帮助用户高效地管理邮箱、日历和任务。然而,尽管其功能强大,用户有时会遇到“Outlook无法连接到服务器”的问题。这种问题通常会让用户无法接收或发送电子邮件,甚至可能导…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...