一鍵腳本:自動安裝 Nginx + Certbot + HTTPS(Let‘s Encrypt)

創建腳本文件?:

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)來描述數據變換方式&…