当前位置: 首页 > news >正文

nginx安装详解含 自动化编译安装 Debian/Ubuntu/CentOS/RHEL/ROCKY

1. 准备工作

1.1 选择操作系统
  • 推荐操作系统:Ubuntu、CentOS、Debian等Linux发行版。
  • 系统要求:确保服务器有足够的CPU、内存和磁盘空间。
1.2 更新系统
  • 更新包列表
    sudo apt update  # 对于Debian/Ubuntu
    sudo yum update  # 对于CentOS/RHEL
    解释:更新系统包列表,确保安装最新版本的软件包。

2. 安装Nginx

2.1 使用包管理器安装
  • Debian/Ubuntu

    sudo apt install nginx

    解释:使用apt包管理器安装Nginx。

  • CentOS/RHEL

    sudo yum install epel-release
    sudo yum install nginx

    解释:首先安装EPEL仓库,然后使用yum包管理器安装Nginx。

2.2 从源码安装(生产首选)

直接放脚本,就不手动了,手动太low了

#!/bin/bash# 定义变量
NGINX_VERSION="1.26.2"  # Nginx版本号
INSTALL_PREFIX="/usr/local/nginx"  # Nginx安装路径
NGINX_USER="www"         # Nginx运行用户
NGINX_GROUP="www"        # Nginx运行组
TEMP_DIR="/tmp/nginx-install"  # 临时目录
SYSTEMD_SERVICE_FILE="/etc/systemd/system/nginx.service"  # systemd服务文件路径# 函数:显示错误信息并退出
error_exit() {echo "Error: $1"exit 1
}# 创建临时目录
mkdir -p $TEMP_DIR || error_exit "Failed to create temporary directory $TEMP_DIR"
cd $TEMP_DIR || error_exit "Failed to change directory to $TEMP_DIR"# 检查并安装必要的依赖项
if [ -f /etc/redhat-release ] || [ -f /etc/rocky-release ]; then# CentOS/RHEL/Rockysudo yum update -y || error_exit "Failed to update packages"sudo yum install -y gcc make pcre pcre-devel zlib zlib-devel openssl openssl-devel || error_exit "Failed to install dependencies"
elif [ -f /etc/debian_version ]; then# Debian/Ubuntuif sudo fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; thenecho "Another process is using dpkg. Please wait or terminate the process."ps aux | grep `sudo lsof -t /var/lib/dpkg/lock-frontend`exit 1fisudo apt-get update -y || error_exit "Failed to update package list"sudo apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev || error_exit "Failed to install dependencies"
elseerror_exit "Unsupported distribution."
fi# 检查并创建 www 用户和组
if ! getent group $NGINX_GROUP > /dev/null; thensudo groupadd -r $NGINX_GROUP || error_exit "Failed to create group $NGINX_GROUP"
fiif ! id -u $NGINX_USER > /dev/null 2>&1; thensudo useradd -s /sbin/nologin -r -g $NGINX_GROUP $NGINX_USER || error_exit "Failed to create user $NGINX_USER"
fi# 下载 Nginx 源代码包
wget --no-check-certificate https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz || error_exit "Failed to download Nginx source"# 解压文件
tar -zxvf nginx-$NGINX_VERSION.tar.gz || error_exit "Failed to extract Nginx source"# 进入Nginx源代码目录
cd nginx-$NGINX_VERSION || error_exit "Failed to change directory to nginx-$NGINX_VERSION"# 配置Nginx
./configure --prefix=$INSTALL_PREFIX \--with-http_ssl_module \--with-http_v2_module \--with-http_gzip_static_module \--with-http_stub_status_module \--user=$NGINX_USER \--group=$NGINX_GROUP || error_exit "Failed to configure Nginx"# 编译并安装
make || error_exit "Failed to compile Nginx"
sudo make install || error_exit "Failed to install Nginx"# 检查安装是否成功
if [ -f $INSTALL_PREFIX/sbin/nginx ]; thenecho "Nginx installed successfully!"
elseerror_exit "Nginx installation failed."
fi# 生产环境优化
# 设置Nginx运行目录的所有者和组
sudo chown -R $NGINX_USER:$NGINX_GROUP $INSTALL_PREFIX || error_exit "Failed to set ownership for $INSTALL_PREFIX"# 创建Nginx服务文件
cat <<EOF | sudo tee $SYSTEMD_SERVICE_FILE > /dev/null || error_exit "Failed to create systemd service file"
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target[Service]
Type=forking
PIDFile=$INSTALL_PREFIX/logs/nginx.pid
ExecStartPre=$INSTALL_PREFIX/sbin/nginx -t
ExecStart=$INSTALL_PREFIX/sbin/nginx
ExecReload=$INSTALL_PREFIX/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOF# 重新加载systemd配置
sudo systemctl daemon-reload || error_exit "Failed to reload systemd configuration"# 启动Nginx服务
sudo systemctl start nginx || error_exit "Failed to start Nginx service"# 设置Nginx开机自启
sudo systemctl enable nginx || error_exit "Failed to enable Nginx service on boot"# 创建符号链接
sudo ln -s $INSTALL_PREFIX/sbin/nginx /usr/local/bin/nginx# 手动测试配置文件
nginx -t
if [ $? -ne 0 ]; thenecho "Nginx configuration test failed. Check the error log for more details."sudo tail -n 20 $INSTALL_PREFIX/logs/error.logexit 1
elseecho "Nginx configuration test passed."
fi# 清理临时文件
rm -rf $TEMP_DIR || error_exit "Failed to clean up temporary files"# 输出启动命令
echo "Nginx installed and configured successfully!"
echo "To manage Nginx, use the following commands:"
echo "  Start: sudo systemctl start nginx"
echo "  Stop: sudo systemctl stop nginx"
echo "  Restart: sudo systemctl restart nginx"
echo "  Status: sudo systemctl status nginx"

使用说明:
将上述脚本保存为文件,例如 install_nginx.sh。
给脚本执行权限:chmod +x install_nginx.sh。
执行脚本:./install_nginx.sh

相关文章:

nginx安装详解含 自动化编译安装 Debian/Ubuntu/CentOS/RHEL/ROCKY

1. 准备工作 1.1 选择操作系统 推荐操作系统&#xff1a;Ubuntu、CentOS、Debian等Linux发行版。系统要求&#xff1a;确保服务器有足够的CPU、内存和磁盘空间。 1.2 更新系统 更新包列表&#xff1a; sudo apt update # 对于Debian/Ubuntu sudo yum update # 对于CentOS…...

Go编程语言介绍及项目案例

Go(又称 Golang)是一种开源的编程语言,具有高效、简洁、并发性能强等特点。 一、主要特点 简洁高效: Go 语言的语法简洁明了,代码风格清晰易读。它摒弃了一些传统编程语言中的复杂特性,如继承、泛型等,使得代码更加简洁高效。例如,在 Go 语言中,函数的定义非常简洁,…...

刷爆leetcode Day11 DFS

DFS 1. 汉诺塔&#xff08;easy)2. 合并两个有序链表&#xff08;easy&#xff09;3. 反转链表&#xff08;easy&#xff09;4. 两两交换链表中的节点&#xff08;medium&#xff09;5. Pow&#xff08;x,n&#xff09;-快速幂&#xff08;medium&#xff09; 1. 汉诺塔&#x…...

虚拟机不同网络模式的区别

网络模式 NAT模式 &#xff08;可以上网&#xff09; 使用NAT模式的虚拟机都和物理机VMnet8处于同一个网段 桥接模式 &#xff08;可以上网&#xff09; 使用桥接模式的虚拟机都和物理机网卡处于同一网段 仅主机模式 &#xff08;不能上网&#xff0c;完全隔离&#xff0…...

嵌入式软件 Bug 排查与调试技巧

目录 1、准备工作 2、打印调试 实现步骤 注意事项 3、断点调试 4、观察点调试 5、远程调试 6、内存分析 内存泄漏检测 栈溢出检测 7、异常处理 8、性能分析 9、逻辑分析仪 10、示波器 11、常见bug类型 12、调试策略 1、准备工作 硬件工具准备 调试器:例如 J - …...

阿里云环境下用docker搭建redis主从复制

redis主从复制可将主redis中的数据同步到从redis中&#xff0c;具有读写分离、容灾恢复、数据备份、支持高并发等特性。 本文演示在阿里云环境下&#xff0c;用 docker 搭建 redis 主从复制&#xff08;一主二从&#xff09;的操作过程。 一、环境准备 阿里云安装CentOS7.9 6…...

STM32 从0开始系统学习 1

笔者最近打算使用STM32系统的做一点东西。大二的时候就开始慢慢接触了STM32&#xff0c;拿他来做过一些事情&#xff0c;但是始终是葫芦吞枣&#xff0c;有点不扎实。笔者这里打算重新开始好好整理一下STM32的内容。 在这一笔记中很简单&#xff0c;就是解答一下啥是STM32&…...

python-numpy-笔记1

numpy官网NumPy User Guide 启动终端jupyter notebook 1.进入CMD输入jupyter notebook --enter--等待结束&#xff0c;使用Edge打开后出现jupyter的网页...

云+AI 时代的 OceanBase

2024 年 10 月 23 日&#xff0c;OceanBase 年度发布会在北京成功举办。会上&#xff0c;CEO 杨冰表示&#xff0c;OceanBase将继续践行一体化产品战略&#xff0c;不断演进产品能力&#xff0c;从支撑关键业务负载的OLTP能力&#xff0c;到实时分析的AP能力&#xff0c;再到应…...

【C++】vector使用详解

本篇我们来介绍STL的vector的内容。vector其实就是顺序表&#xff0c;vector的学习还是分为接口使用和模拟实现两大部分&#xff0c;本片就是介绍一下vector的使用。 1.vector的介绍及使用 vector文档介绍&#xff1a;vector - C Reference 在使用时需要加头文件#include <…...

.NET Core WebApi第5讲:接口传参实现、数据获取流程、204状态码问题

一、接口传参实现 1、引入&#xff1a;通过网址上两个参数mod...和FID....&#xff0c;区分开要的是哪个板块里面的数据​​​​​ 2、传参实现&#xff1a;在方法的参数处定义STRING字符串 &#xff08;1&#xff09;传1个参数 2>运行代码&#xff0c;在网页上输入以“点…...

运维面试汇总

Linux grep sed awk cut组合使用☆ http错误码和原因 长连接、短连接、WebSocket区别和使用场景 nginx性能优化有哪些方式☆ lvs、nginx、haproxy区别和使用场景☆ 僵尸进程是什么 进程、线程、协程区别☆ 什么是nginx的异步非阻塞 linux网络丢包怎么排查☆ 常用的性能…...

学习封装Flutter组件,看这篇就够了

Flutter 的自定义组件 一、添加 UI 组件 在进行自定义组件的封装之前&#xff0c;应该先掌握如何在 Flutter 应用页面中添加内置组件&#xff0c;如按钮和文本等&#xff0c;以下面的页面定义为例&#xff1a; import package:flutter/material.dart;class SecondPage exten…...

无线麦克风方案芯片DSH32F3024

直播跑道狂飙后&#xff0c;与其相配套的产品链也逐渐成形。其中麦克风的发展更是随着直播的火热而直线上升。无线麦克风以其便捷性、灵活性和高质量的音频传输能力&#xff0c;更受大家的青睐。今天我们就来说一下无线麦克风及对它起着至关重要的主控芯片的技术特点和性能解析…...

谷粒商城の秒杀服务

文章目录 前言一、秒杀系统的设计二、缓存预热1.缓存结构设计2、上架 三、秒杀业务实现 前言 本篇基于谷粒商城的秒杀服务&#xff0c;介绍设计一个秒杀系统的要素&#xff0c;包括缓存预热、商品随机码、动静分离、消息队列削峰等。对应视频P311-P325&#xff08;只介绍系统设…...

庆祝程序员节:聊一聊编程语言的演变

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…...

大模型技术在网络安全领域的应用与发展

一、概述 大模型技术&#xff0c;尤其是深度学习和自然语言处理领域的大型预训练模型&#xff0c;近年来在网络安全领域得到了广泛应用。这些模型通过其强大的数据处理能力和泛化能力&#xff0c;为网络安全带来了新的机遇和挑战。本文将对大模型技术在网络安全领域的应用进行…...

基于vite和vue3、 eslint、prettier、stylelint、husky规范

前言 在现代的前端开发中&#xff0c;代码规范非常重要。它可以提高团队的协作效率&#xff0c;减少代码错误&#xff0c;使代码更易于维护。为了实现代码规范化&#xff0c;我们可以使用一些工具来辅助我们的开发流程&#xff0c;包括eslint、prettier、stylelint、husky&am…...

git push到远程怎么回退

git push到远程服务器想继续修改&#xff0c;你必须要回退然后在此提交。而且需要保留本地的修改文件。 下面给你一些git命令&#xff0c;回退很简单。 按照下面的流程操作就行&#xff1a; 1.查看提交历史 首先&#xff0c;使用git log命令查看提交历史。可以使用以下命令显…...

Web保存状态的手段(Application的使用)

Application 在Java Web开发中&#xff0c;ServletContext&#xff08;通常称为application&#xff09;是一个非常重要的接口&#xff0c;它代表了Web应用程序的上下文。每个Web应用都有其自己的ServletContext&#xff0c;当Web应用被加载到Servlet容器时创建&#xff0c;并…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

FOPLP vs CoWoS

以下是 FOPLP&#xff08;Fan-out panel-level packaging 扇出型面板级封装&#xff09;与 CoWoS&#xff08;Chip on Wafer on Substrate&#xff09;两种先进封装技术的详细对比分析&#xff0c;涵盖技术原理、性能、成本、应用场景及市场趋势等维度&#xff1a; 一、技术原…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

使用python进行图像处理—图像变换(6)

图像变换是指改变图像的几何形状或空间位置的操作。常见的几何变换包括平移、旋转、缩放、剪切&#xff08;shear&#xff09;以及更复杂的仿射变换和透视变换。这些变换在图像配准、图像校正、创建特效等场景中非常有用。 6.1仿射变换(Affine Transformation) 仿射变换是一种…...

Ansible+Zabbix-agent2快速实现对多主机监控

ansible Ansible 是一款开源的自动化工具&#xff0c;用于配置管理&#xff08;Configuration Management&#xff09;、应用部署&#xff08;Application Deployment&#xff09;、任务自动化&#xff08;Task Automation&#xff09;和编排&#xff08;Orchestration&#xf…...

win11部署suna

参考链接 项目链接 沙盒链接 数据库链接 本文介绍 本文只为项目的辅助&#xff0c;手把手太麻烦 执行步骤 1.下载代码 git clone https://github.com/kortix-ai/suna.git cd suna2.配置环境&#xff08;在Anaconda Prompt上执行&#xff09; python setup.py3.运行代码 …...