Clouldon Blog
    • 版块
    • 最新
    • 用户
    • 友链
    • 注册
    • 登录
    1. 主页
    2. 四折光曲
    3. 主题
    离线
    • 资料
    • 关注 1
    • 粉丝 1
    • 主题 14
    • 帖子 77
    • 群组 2

    主题

    • 四折光曲四

      Nginx Zstd 自动安装脚本

      关注中 忽略中 已定时 已固定 已锁定 已移动 IE地球
      1
      1 帖子
      149 浏览
      四折光曲四
      [color=#FF4D4D]环境:Debian 13 Nginx1.31.1[/color] nano auto_zstd_nginx.sh #!/usr/bin/env bash # ============================================================================== # 脚本名称: auto_zstd_nginx.sh # 适用系统: Debian 12/13 / Ubuntu # 功能描述: 具备智能缓存检测的全功能 Nginx Zstd 动态模块编译与全自动更新脚本 # ============================================================================== set -e # 遇到致命错误立即停止执行 # 颜色输出定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO] $1${NC}"; } log_warn() { echo -e "${YELLOW}[WARN] $1${NC}"; } log_err() { echo -e "${RED}[ERROR] $1${NC}"; exit 1; } SRC_DIR="/usr/src" CACHE_META="${SRC_DIR}/.nginx_zstd_cache.meta" MODULES_INSTALL_DIR="/usr/lib/nginx/modules" # 1. 权限检查 if [ "$EUID" -ne 0 ]; then log_err "请使用 root 用户或通过 sudo 运行此脚本!" fi # 2. 检测当前运行的 Nginx 状态 if ! command -v nginx &> /dev/null; then log_err "未检测到系统安装了 Nginx,请先安装 Nginx 主程序!" fi # 动态提取当前 Nginx 版本号 (例如: 1.31.0) NGINX_VER=$(nginx -v 2>&1 | awk -F/ '{print $2}' | cut -d' ' -f1) NGINX_ARGS=$(nginx -V 2>&1 | grep "configure arguments:" | sed 's/configure arguments://') log_info "当前系统运行的 Nginx 版本: ${NGINX_VER}" # 自动修正模块安装路径 if [ ! -d "$MODULES_INSTALL_DIR" ]; then MODULES_INSTALL_DIR="/etc/nginx/modules" fi # 3. 智能检测远端 Zstd 库的最新版本(无需提前克隆) log_info "正在检测 Facebook Zstd 官方仓库最新动态..." if ! command -v git &> /dev/null; then # 如果没有 git,临时安装以便检测 apt-get update -y || true apt-get install -y git wget awk fi # 获取远程最新 Commit ID REMOTE_ZSTD_COMMIT=$(git ls-remote https://github.com/facebook/zstd.git HEAD | awk '{print $1}') if [ -z "$REMOTE_ZSTD_COMMIT" ]; then log_err "无法连接到 GitHub 获取 Zstd 版本,请检查网络连接。" fi # 4. 缓存验证:比对版本与文件完整性 NEED_BUILD_ZSTD=true NEED_BUILD_MODULE=true if [ -f "$CACHE_META" ]; then # 读取缓存的元数据 # shellcheck disable=SC1090 source "$CACHE_META" # 检查本地动态库文件是否存在 if [ -f "/usr/local/lib/libzstd.so" ] && [ "$LAST_ZSTD_COMMIT" == "$REMOTE_ZSTD_COMMIT" ]; then NEED_BUILD_ZSTD=false log_info "✨ 检测到本地 Zstd 核心库已是最新版本 (${REMOTE_ZSTD_COMMIT:0:7}),跳过拉取与编译。" fi # 检查 Nginx 动态模块文件是否存在并比对版本 if [ -f "${MODULES_INSTALL_DIR}/ngx_http_zstd_filter_module.so" ] && \ [ -f "${MODULES_INSTALL_DIR}/ngx_http_zstd_static_module.so" ] && \ [ "$LAST_NGINX_VER" == "$NGINX_VER" ] && \ [ "$NEED_BUILD_ZSTD" == "false" ]; then NEED_BUILD_MODULE=false fi fi # 如果一切都未改变,直接退出 if [ "$NEED_BUILD_ZSTD" == "false" ] && [ "$NEED_BUILD_MODULE" == "false" ]; then log_info "🚀 [完美缓存] 当前 Nginx 编译环境与 Zstd 模块均无任何更新,无需重复编译!" exit 0 fi # 5. 解决 APT 签名错误并安装依赖 log_info "正在准备同步系统依赖包..." # 核心容错:使用 || true 允许非关键性源(如 MySQL 签名过期)报错,不中断脚本 apt-get update -y || log_warn "部分第三方软件源同步失败(例如系统的 MySQL 密钥未找到),脚本将忽略并尝试继续..." log_info "正在安装与更新必要的编译工具链..." apt-get install -y build-essential git libpcre3-dev zlib1g-dev libssl-dev debhelper wget # 如果系统残留了旧的发行版自带库,予以清除以防冲突 if dpkg -l | grep -q libzstd-dev; then log_warn "清理系统自带的旧版 libzstd-dev 以防链路冲突..." apt-get remove -y libzstd-dev libzstd1 || true fi # 6. 【按需编译】最新的 Zstd 核心库 cd ${SRC_DIR} if [ "$NEED_BUILD_ZSTD" == "true" ]; then log_info "正在下载/更新 Zstd 官方源码并进行编译..." if [ ! -d "zstd" ]; then git clone --depth 1 https://github.com/facebook/zstd.git fi cd zstd git fetch --depth 1 origin git reset --hard origin/dev || git reset --hard origin/master # 适配官方默认主分支 log_info "开始编译 Zstd 核心库..." make -j$(nproc) make install ldconfig log_info "Zstd 核心库编译并安装成功。" fi # 7. 【按需编译】Nginx Zstd 动态模块 cd ${SRC_DIR} if [ "$NEED_BUILD_MODULE" == "true" ]; then log_info "正在同步 Nginx 源码与动态模块源码..." # 清理旧的 Nginx 源码目录确保干净编译 rm -rf "nginx-${NGINX_VER}" "nginx-${NGINX_VER}.tar.gz" wget -c "http://nginx.org/download/nginx-${NGINX_VER}.tar.gz" tar -zxf "nginx-${NGINX_VER}.tar.gz" if [ ! -d "zstd-nginx-module" ]; then git clone https://github.com/tokers/zstd-nginx-module.git fi cd zstd-nginx-module && git pull && cd .. log_info "配置 Nginx 模块环境,无缝继承原生 Nginx 编译参数..." cd "nginx-${NGINX_VER}" # 注入原生参数与定制的 Zstd include 路径 eval "./configure ${NGINX_ARGS} --add-dynamic-module=${SRC_DIR}/zstd-nginx-module --with-cc-opt='-I/usr/local/include' --with-ld-opt='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'" log_info "并行编译 Nginx Zstd 动态模块..." make modules log_info "将编译产物自动替换至 Nginx 目录..." mkdir -p ${MODULES_INSTALL_DIR} cp objs/ngx_http_zstd_filter_module.so ${MODULES_INSTALL_DIR}/ cp objs/ngx_http_zstd_static_module.so ${MODULES_INSTALL_DIR}/ chmod 644 ${MODULES_INSTALL_DIR}/ngx_http_zstd_*.so # 检查模块语法 if nginx -t &>/dev/null; then log_info "Nginx 配置文件语法检查通过,正在平滑重启服务..." systemctl reload nginx || log_warn "Nginx 重载失败,请手动检查系统服务状态。" else log_warn "检测到 Nginx 配置当前存在异常,未自动重载,请执行 'nginx -t' 排查。" fi fi # 8. 写入/更新本地编译缓存元数据 cat > "$CACHE_META" <<EOF LAST_NGINX_VER="${NGINX_VER}" LAST_ZSTD_COMMIT="${REMOTE_ZSTD_COMMIT}" EOF log_info "==================================================" log_info "🎉 全功能自动 Nginx Zstd 模块部署/更新任务成功完成!" log_info "当前缓存状态:Nginx [${NGINX_VER}] | Zstd [${REMOTE_ZSTD_COMMIT:0:7}]" log_info "==================================================" chmod +x auto_zstd_nginx.sh # 执行两次测试版本缓存 sudo ./auto_zstd_nginx.sh
    • 四折光曲四

      nginx zstd压缩

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      1
      1 帖子
      94 浏览
      四折光曲四
      Zstd(Zstandard), Facebook(Meta)开发的开源无损数据压缩算法,2016 年发布, “高性能+高压缩比”的平衡——既比传统压缩算法(如 Gzip、Deflate)压缩更快、压缩率更高,也比同级别高压缩比算法(如 LZMA)速度更快,同时支持可配置的压缩级别(1-22,级别越高压缩率越高但速度越慢),还提供“快速模式”(级别 -1 到 -13)满足低延迟场景。 测试环境:Debain 13 Nginx1.31.0 I 编译最新的Zstd库 # 安装编译工具 sudo apt install build-essential git libpcre3-dev zlib1g-dev libssl-dev debhelper sudo apt remove libzstd-dev libzstd1 # 1. 进入源码存放目录 cd /usr/src # 2. 克隆 Facebook Zstd 官方主分支源码 sudo git clone --depth 1 https://github.com/facebook/zstd.git cd zstd # 3. 编译并安装(核心库编译非常快) sudo make -j$(nproc) sudo make install # 4. 刷新系统的动态链接库缓存,让系统认出刚刚安装的最新 libzstd.so sudo ldconfig II 编译zstd-nginx模块 # 1. 下载并解压 Nginx 1.31.0 官方源码 sudo wget http://nginx.org/download/nginx-1.31.0.tar.gz sudo tar -zxf nginx-1.31.0.tar.gz # 2. 克隆 zstd-nginx-module 源码 sudo git clone https://github.com/tokers/zstd-nginx-module.git # 3. 进入 Nginx 源码目录 cd nginx-1.31.0 # 4. 配置编译参数:通过包含路径,强行让它关联到我们刚才安装在 /usr/local/include 的最新 Zstd 头文件 sudo ./configure --with-compat \ --add-dynamic-module=/usr/src/zstd-nginx-module \ --with-cc-opt="-I/usr/local/include" \ --with-ld-opt="-L/usr/local/lib -Wl,-rpath,/usr/local/lib" # 5. 仅编译模块 sudo make modules III 载入zstd模块 # 1. 覆盖复制到 Nginx 模块目录 sudo cp objs/ngx_http_zstd_filter_module.so /usr/lib/nginx/modules/ sudo cp objs/ngx_http_zstd_static_module.so /usr/lib/nginx/modules/ 2. 赋予标准权限 sudo chmod 644 /usr/lib/nginx/modules/ngx_http_zstd_*.so 打开 /etc/nginx/nginx.conf,在最顶部添加加载指令: # 引入 Zstd 动态过滤和静态加载模块 load_module modules/ngx_http_zstd_filter_module.so; load_module modules/ngx_http_zstd_static_module.so; user www-data; worker_processes auto; IV 修改网页配置 以Flarum 为例 zstd on; zstd_comp_level 3; # 动态压缩推荐级别 3(1-5 之间性能与压缩率平衡最佳,最大为 22) zstd_min_length 256; # 小于 256 字节的文件不压缩 zstd_buffers 16 8k; # 允许 Nginx 直接读取预先压缩好的 .zst 静态文件(如果存在) zstd_static on; # 精准针对 Flarum 的 API、JS 和各种文本格式进行 Zstd 压缩 zstd_types text/plain text/css text/javascript application/javascript application/json application/xml application/rss+xml application/atom+xml image/svg+xml image/x-icon; #检查配置文件,重启Nginx nginx -t systemctl reload nginx 在线检测:https://zstd.wcode.net 按下 F12 打开开发者工具,前往 Network(网络) 面板。 Content-Encoding: zstd Vary: Accept-Encoding 表明 Nginx 1.31.0 已经成功部署了目前业界公认在动态生成场景下处理效率极高、对 CPU 压迫极小的 Zstd 压缩引擎!
    • 四折光曲四

      Debian 13 自动更新脚本

      关注中 忽略中 已定时 已固定 已锁定 已移动 IE地球
      1
      1 帖子
      197 浏览
      四折光曲四
      每次都手动打好麻烦 创建脚本 #!/bin/bash # 定义颜色 GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # 无颜色 echo -e "${YELLOW}>>> 正在同步软件包索引...${NC}" sudo apt update echo -e "\n${GREEN}>>> 开始执行系统升级 (Full Upgrade)...${NC}" # 移除 -y 参数,这样在升级前会停下来让你确认 [Y/n] # 如果你想完全自动但看过程,可以保留 -y sudo apt full-upgrade echo -e "\n${YELLOW}>>> 正在清理过期的缓存和无用依赖...${NC}" sudo apt autoremove -y sudo apt autoclean echo -e "\n${GREEN}>>> 更新任务已完成!${NC}" 赋予权限 sudo chmod +x /usr/local/bin/auto_update.sh 执行 auto_update.sh
    • 四折光曲四

      MariaDB 安装

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      3
      3 帖子
      183 浏览
      四折光曲四
      轻量化配置 针对 50MB 极小 内存目标 sudo nano /etc/mysql/mariadb.conf.d/99-lightweight.cnf [mysqld] # 核心:关闭性能监控,立省约 40MB+ performance_schema = OFF # 存储引擎:将缓冲池压到最低 (适用于轻量 PHP 项目) innodb_buffer_pool_size = 16M innodb_log_buffer_size = 2M innodb_flush_log_at_trx_commit = 2 innodb_stats_on_metadata = OFF # 连接与线程:降低堆栈消耗 max_connections = 15 thread_stack = 192K thread_cache_size = 0 # 临时表与缓存:防止内存突发占用 tmp_table_size = 2M max_heap_table_size = 2M table_open_cache = 400 table_definition_cache = 400 # 日志:禁用不必要的日志 skip-log-bin sudo systemctl restart mariadb 查看内存情况 ps aux | grep mariadbd | grep -v grep | awk '{print $6/1024 " MB"}' !作为个人博客使用及时不配置其内存占用也较低,实际上配置了之后内存占用并没有降低多少,全站负载500MB!<
    • 四折光曲四

      Postfix 发信配置

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      3
      3 帖子
      136 浏览
      四折光曲四
      SSL 加密 基础 TLS 设置 sudo nano /etc/postfix/main.cf # 可以使用网站域名证书 smtpd_tls_cert_file = /your.pem smtpd_tls_key_file = /your.key smtpd_use_tls = yes # encrypt 强制启用 smtpd_tls_security_level = may smtpd_tls_auth_only = yes smtpd_tls_loglevel = 1 smtp_tls_CAfile = /your.crt smtp_tls_security_level = may smtp_tls_loglevel = 1 开启 465 和 587 端口 sudo nano /etc/postfix/master.cf submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
    • 四折光曲四

      MoeCounterRe

      关注中 忽略中 已定时 已固定 已锁定 已移动 IE地球
      5
      5 帖子
      235 浏览
      四折光曲四
      和AI斗智斗勇,其乐无穷也,额 火狐你崛起吧
    • 四折光曲四

      OPENPPP2 配置示例 与分流

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      3
      3 帖子
      133 浏览
      四折光曲四
      [image: 1778464489356-qq20260511-095410.webp]
    • 四折光曲四

      吉吉 网站推荐

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      2
      2 帖子
      83 浏览
      四折光曲四
      https://www.softwareok.com/ 神秘的小软件 https://www.softwareok.com/?seite=microsoft/autohidedesktopicons
    • 四折光曲四

      神秘 软件推荐

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      3
      3 帖子
      131 浏览
      四折光曲四
      https://www.cgsecurity.org/wiki/TestDisk_Download 免费开源的数据恢复软件
    • 四折光曲四

      四折の股票之路.WEBP

      关注中 忽略中 已定时 已固定 已锁定 已移动 讨论
      2
      2 帖子
      268 浏览
      clouldonC
      貌似长线收益多一些,每日的波动,上下上下,不也是归零了嘛
    • 四折光曲四

      哈基 项目推荐

      关注中 忽略中 已定时 已固定 已锁定 已移动 软件教程
      31
      31 帖子
      1k 浏览
      四折光曲四
      https://github.com/snltty/linker UDP P2P
    • 四折光曲四

      作为人类之物种有限的符号思考

      关注中 忽略中 已定时 已固定 已锁定 已移动 哲学基础
      3
      3 帖子
      346 浏览
      四折光曲四
      抛开符号命题,咱终究是有所求的
    • 四折光曲四

      作为反理性的爱情的体验和思考

      关注中 忽略中 已定时 已固定 已锁定 已移动 哲学基础
      6
      6 帖子
      301 浏览
      四折光曲四
      人类的感情真是黑箱中的黑箱,看不懂,完全看不懂(?
    • 四折光曲四

      作为生活本身的哲学基础的操练

      关注中 忽略中 已定时 已固定 已锁定 已移动 哲学基础
      21
      21 帖子
      1k 浏览
      四折光曲四
      三三水这样问我,我认真的思考了一下:你觉得我们应该相信第一印象不 额我就拿我个人为例吧(?) 我是一个不看第一印象的人,我的习惯就是不带评价的去观察人(至少是与我不相干不会实际上冒犯到我的人) 即使我看到一个人,比如你XXXXXX,我也不会下意识的去给人贴标签 我承认人的多样和复杂这样的客观事实,我承认这些经历会导致一些可能的坏事或者好事 但是额由于我接触到的可以说是纯坏或者不可理喻而且将这种不可理喻(以一种令我不愉快的方式)施加到我身上的人几乎为零 大家对我都挺好的,所有我其实潜意识里认为世界上是好人多的(经历导致) 冒犯到我的人额那就另说了,我对此和希特勒持相同态度() 我觉得这个是否应该相信第一印象,是一个复杂的命题 像我的生活环境,是不怎么需要去判断一个人的好坏的,我接触的人也很少,所以我可以不去看第一印象 但是如果生活动荡,实际上的生活环境接触到的对自己不利的人的可能大的话,应该使用第一印象去进行一些排除 但是我觉得这个根本的命题可能是: 我们该如何避开那些潜在的人际威胁(?) 我们该如何在社交中选择潜在的“好人”(?) 但是这其实很难,正如我所说,人是很复杂的,就像你,无论你是怎么看待自己的,或者你是如何对待别人,你在对待我(某些特定的人的时候)又是不一样的,是好的 所以我的结论是,额 如果自己是一个会被别人以第一印象来评判的人,也就是额第一印象差的人,应该用第一印象去评价别人,因为会造成这样第一印象的环境本身就是不安定的,这时候使用第一印象评价法是可以有效的避开那些风险和威胁的 如果自己是一个不会被人以第一印象评判的人,那也不用去用第一印象去评价别人,因为你的生活环境既然塑造了这样的你,你接触那些风险和威胁的可能本来就是极小的 但是说到底,如果一个人带着敌意,隐藏,不可见人的目的与你接触,该被拐去棉被还是得被拐去棉被,和你是否使用第一印象去规避风险没多大关系我感觉 当然我的社交范围很小啊,这个是前提,如果大家可以在面对冒犯直白的坦言,互相沟通,无法沟通和互相理解就各自保持距离,真心换真心才是最优解吧()保持自我的独立性,不被他人左右(谈何容易()