创建脚本文件​:

vi setup_nginx_https.sh

脚本内容:

#!/bin/bash# =============================
# 一键安装 Nginx + Certbot + HTTPS (CentOS 7)
# 功能:自动安装 Nginx、Certbot,配置 HTTPS,自动续期
# 使用方法:./setup_nginx_https.sh yourdomain.com [www.yourdomain.com]
# =============================set -e# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; thenecho "请使用 root 用户或通过 sudo 运行此脚本"exit 1
fi# 检查参数
if [ -z "$1" ]; thenecho "使用方法: $0 yourdomain.com [www.yourdomain.com]"echo "示例: $0 example.com www.example.com"exit 1
fiDOMAIN=$1
WWW_DOMAIN=""
if [ -n "$2" ]; thenWWW_DOMAIN=$2
fiecho "🔧 开始自动部署 Nginx + HTTPS (Let's Encrypt SSL) ..."# -------------------------------
# 1. 更新系统
echo "🔄 更新系统软件包..."
yum update -y# -------------------------------
# 2. 安装 EPEL(推荐)
echo "📦 安装 EPEL 仓库..."
yum install -y epel-release# -------------------------------
# 3. 安装 Snapd & Certbot(官方推荐方式)
echo "🔐 安装 Snapd 和 Certbot..."yum install -y snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
export PATH=$PATH:/snap/bin# 安装 certbot
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot# 安装 Nginx 插件
snap set certbot trust-plugin-with-root=ok
snap install certbot-nginx# -------------------------------
# 4. 安装 Nginx(官方源)
echo "🌐 安装 Nginx(官方源)..."cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOFyum install -y nginx# -------------------------------
# 5. 配置防火墙
echo "🔥 配置防火墙放行 HTTP (80) 和 HTTPS (443)..."
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload# -------------------------------
# 6. 创建默认 Nginx Server 配置(HTTP 80,用于验证)
NGINX_CONF_DIR="/etc/nginx/conf.d"
DOMAIN_CONF="$NGINX_CONF_DIR/${DOMAIN}.conf"echo "📄 创建 Nginx 配置文件:$DOMAIN_CONF"cat > $DOMAIN_CONF <<EOF
server {listen 80;server_name $DOMAIN $WWW_DOMAIN;# 用于 Certbot 验证域名所有权location /.well-known/acme-challenge/ {root /var/www/certbot;}location / {return 301 https://\$host\$request_uri;}
}# 可选:如果你想先手动配置 HTTPS,可取消注释以下部分
# server {
#     listen 443 ssl;
#     server_name $DOMAIN $WWW_DOMAIN;
#
#     ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
#     ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
#
#     root /usr/share/nginx/html;
#     index index.html;
#
#     location / {
#         try_files \$uri \$uri/ =404;
#     }
# }
EOF# 创建 .well-known 目录
mkdir -p /var/www/certbot
chmod -R 755 /var/www/certbot# -------------------------------
# 7. 启动 Nginx
echo "🚀 启动 Nginx 服务..."
systemctl start nginx
systemctl enable nginx# -------------------------------
# 8. 运行 Certbot 自动获取 SSL 证书并配置 HTTPS
echo "🛡️ 正在使用 Certbot 为 $DOMAIN 申请 SSL 证书并配置 HTTPS..."if [ -z "$WWW_DOMAIN" ]; thencertbot --nginx -d $DOMAIN
elsecertbot --nginx -d $DOMAIN -d $WWW_DOMAIN
fi# -------------------------------
# 9. 测试自动续期
echo "🔄 测试证书自动续期功能..."
certbot renew --dry-run# -------------------------------
# 10. 完成
echo ""
echo "🎉 恭喜!Nginx + HTTPS 配置完成!"
echo ""
echo "🔒 HTTPS 已自动为域名配置:https://$DOMAIN"
if [ -n "$WWW_DOMAIN" ]; thenecho "🔒 以及:https://$WWW_DOMAIN"
fi
echo ""
echo "📂 Nginx 配置文件:$DOMAIN_CONF"
echo "🔒 SSL 证书位置:/etc/letsencrypt/live/$DOMAIN/"
echo ""
echo "🔄 证书将自动续期,你可以通过以下命令测试续期:"
echo "    sudo certbot renew --dry-run"
echo ""
echo "🌐 请在浏览器访问:https://$DOMAIN"
echo ""

赋予执行权限​:

chmod +x setup_nginx_https.sh

​​运行脚本(带你的域名参数):

sudo ./setup_nginx_https.sh xzhshyh123.icu

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

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

相关文章

SpringAI与MCP

MCP是什么&#xff1f;MCP 服务 代理服务&#xff08;Proxy&#xff09; 标准化接口 自动化适配MCP 的目的&#xff0c;就是让 AI 应用不再“为每个工具定制对接 ”&#xff0c;而是像使用 USB-C 一样&#xff0c;“插上即用”任何外部工具。没mcp之前不同的工具入参和出参千…

Coze用户退出登录流程分析-后端源码

前言 本文将深入分析Coze Studio项目的用户退出登录功能后端实现&#xff0c;通过源码解读来理解整个退出登录流程的架构设计和技术实现。退出登录作为用户认证系统的重要组成部分&#xff0c;主要负责清理用户会话状态&#xff0c;确保用户账户安全。 退出登录功能虽然相对简单…

【应急响应工具教程】Unix/Linux 轻量级工具集Busybox

1、工具简介BusyBox 是一个将常用 Unix/Linux 工具打包在单一可执行文件中的轻量级工具集&#xff0c;被称为 “嵌入式 Linux 的瑞士军刀”。 它将多个精简版的命令行工具&#xff08;如 ls、cat、cp、mv、grep 等&#xff09;集成到一个二进制文件中&#xff0c;并通过不同的调…

【React】案例:B站评论

目录 一、核心功能实现 二、id处理和时间处理 三、清空内容并重新聚焦 一、核心功能实现 1.获取评论内容&#xff1a;表单受控绑定 2.点击发布按钮发布评论 二、id处理和时间处理 1.rpid要求一个唯一的随机数id -uuid库 npm install uuid 使用方法&#xff1a;import {v4 as…

sqlite创建数据库,创建表,插入数据,查询数据的C++ demo

sqlite的API可参考&#xff1a;SQLite – C/C | 菜鸟教程 sqlite的官网API可参考&#xff1a;Introduction #include <iostream> #include <sqlite3.h> #include <string>// 回调函数&#xff0c;用于查询结果的输出 static int callback(void* data, int …

部分CSS笔试题讲解

1. box-sizing: border-box 的作用问题&#xff1a; 默认的 CSS 盒模型 (content-box) 中&#xff0c;元素的 width 和 height 属性只指定了内容区域的尺寸。如果你给元素添加了 padding 或 border&#xff0c;这些值会被加在 width/height 之上&#xff0c;导致元素的实际占用…

雅菲奥朗SRE知识墙分享(二):『SRE对智能运维的升级模型』

SRE深度结合AI创新&#xff0c;雅菲奥朗专家刘峰老师总结了近期人工智能运维领域的突破&#xff0c;合计以下15个关键点:一、领域1&#xff1a;Dev&Ops 深度融合• 关键点1. 组织&#xff1a;Google “SREScale” 最新论文提出「单一故障域 单一 SRE 小组」原则&#xff0…

前端 Promise 全面深入解析

一、Promise基础概念 1、什么是Promise? Promise是一个表示异步操作最终完成或失败的对象。它允许你为异步操作的成功结果和失败原因分别绑定相应的处理方法。 2、Promise的三种状态 pending(等待中): 初始状态,既不是成功,也不是失败 fulfilled(已成功): 操作成功完…

【LIN】2.LIN总线通信机制深度解析:主从架构、五种帧类型与动态调度策略

参考文章&#xff1a; Lin总线通信在STM32作为主机代码以及从机程序 基于STM32的LIN总线的实现 STM32F0-LIN总线通讯程序代码 主从调试OK LIN协议通信DEMO及源码剖析 前文已讲解关于LIN帧代码如何实现&#xff1a;【LIN】1.LIN通信实战&#xff1a;帧收发全流程代码实现 帧类型…

Maven的概念与Maven项目的创建

MavenMaven的概念依赖管理项目构建Maven安装Maven项目的创建Maven的第一个项目Maven的第二个项目Maven的概念 Maven 是 Apache 基金会推出的跨平台的项目管理工具&#xff0c;主要服务于基于Java平台的项目构建、依赖管理和项目信息管理&#xff0c;目前是 Java 生态中最主流的…

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一、初步了解binlog MySQL的二进制日志…

windows安装Elasticsearch,ik分词器,kibana可视化工具

安装地址 elasticsearch安装地址: Past Releases of Elastic Stack Software | Elastic 分词器下载地址: https://github.com/infinilabs/analysis-ik?tabreadme-ov-file kibana下载地址: Past Releases of Elastic Stack Software | Elastic 注意&#xff1a;版本一定要统…

GaussDB 数据库架构师修炼(十八)SQL引擎-SQL执行流程

1 SQL执行流程查询解析&#xff1a;词法分析、语法分析、 语义分析 查询重写&#xff1a;视图和规则展开、基于规则的查询优化 计划生成&#xff1a;路径搜索和枚举、选出最优执行计划 查询执行&#xff1a;基于优化器生成的物理执行计划对数据进行获取和计算2 解析器和优化器S…

能源管理系统中的物联网数据采集:深度探索与操作指南

一、引言物联网&#xff08;Internet of Things, IoT&#xff09;作为数字化时代的核心基础设施&#xff0c;通过将物理世界的设备、物体与网络连接&#xff0c;实现数据的实时感知与交互。而数据采集作为物联网系统的 “神经末梢”&#xff0c;是整个体系运行的基础。本文将从…

Java实现一个简单的LRU缓存对象

LRU&#xff08;Least Recently Used&#xff09;算法的核心思想是&#xff1a;最近使用的数据将被保留&#xff0c;最久未使用的数据将被淘汰。这种策略适用于内存有限、但又需要高频访问的数据场景&#xff0c;比如缓存系统、页面置换算法等。mysql的缓冲池就是使用的LUR Inn…

整体设计 之定稿 “凝聚式中心点”原型 --整除:智能合约和DBMS的在表层挂接 能/所 依据的深层套接 之2

摘要三“式”三“心”三“物” 整数原型三段式表达 的 凝聚式中心点dot 、组织式核心元素位element和分析式内核基因座locus 三者分别以**“等号线&#xff08;Arc&#xff09;”**&#xff08;动态关联&#xff09;、**“边界线&#xff08;Transition&#xff09;”**&#…

vue.根据url生成二维码

文章目录概要QR码步骤1. 引入库2. 生成二维码3. 将二维码加入页面中用javascript库简化二维码生成1. 引入库2. 使用库生成二维码二维码美化和定制1. 调整大小2. 调整颜色3. 添加自定义形状和图案4. 添加logo性能优化与错误处理1. 减少不必要的计算2. 异步处理概要 生成 URL 二…

WPF+MVVM入门学习

最近在学WPF的MVVM&#xff0c;有两种方式实现&#xff0c;一种是自己实现&#xff0c;一种是借助MVVM框架&#xff0c;接下来通过一个医院自助打印报告机键盘输入界面来演示自己实现、框架CommunityToolkit和Prism的区别。 项目源码&#xff1a;https://gitee.com/cplmlm/Sel…

[e3nn] docs | 不可约表示(Irreps)

链接&#xff1a;https://docs.e3nn.org/en/latest/examples/examples.html docs&#xff1a;e3nn e3nn是一个用于构建欧几里得(E(3))等变神经网络的Python库&#xff0c;这意味着它们能自动保持三维旋转和反射的对称性。 该库使用不可约表示(Irreps)来描述数据变换方式&…