图片文件
图片文件
wb.xlhyqq.com/x/
docker run -d -p 8080:8080 --name xianyu-auto-reply --privileged=true registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0
shell:startup
159.138.142.169
pre[class*="language-"] {
      background: #2d2d2d !important;
      color: #f8f8f2 !important;
      padding: 10px;
      border-radius: 10px;
      overflow-x: auto;
      margin-top: 8px;
      font-size: 13px;
      white-space: pre-wrap;
      word-wrap: break-word;
      max-height: 400px;
    }
pk8kKC4abUsTueuqEzQqxX6IF8aG0OsfOBNbzrYSEWo=
173 446 354 服务器
MC60H-DWHD5-H80U9-6V85M-8280D
173 446 356 服务器
gpedit.msc
ipconfig/all
# 创建数据目录
mkdir -p xianyu-auto-reply

# 一键启动容器
docker run -d \
  -p 8080:8080 \
  -v $PWD/xianyu-auto-reply/:/app/data/ \
  --name xianyu-auto-reply \
  --privileged=true \
  registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0

# 访问系统
# http://localhost:8080
# 1. 克隆项目
git clone https://github.com/zhinianboke/xianyu-auto-reply.git
cd xianyu-auto-reply

# 2. 一键部署
./docker-deploy.sh

# 3. 访问系统
# http://localhost:8080
# 1. 克隆项目
git clone https://github.com/zhinianboke/xianyu-auto-reply.git
cd xianyu-auto-reply

# 2. 安装依赖
pip install -r requirements.txt

# 3. 安装Playwright浏览器(商品搜索功能需要)
playwright install chromium

# 4. 启动系统
python Start.py

# 5. 访问系统
# http://localhost:8080
ssh Timx@192.168.0.123 5666
version: '3.8'

services:
xianyu-auto-reply:
image: registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0
container_name: xianyu-auto-reply
restart: always
ports:
- "8080:8080"
volumes:
- ./xianyu-auto-reply:/app/data
privileged: true
environment:
- TZ=Asia/Shanghai
network_mode: bridge
version: '3.8'

services:
xianyu-auto-reply:
image: registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0
container_name: xianyu-auto-reply
restart: always
ports:
- "8080:8080"
volumes:
- ./xianyu-auto-reply:/app/data
privileged: true
environment:
- TZ=Asia/Shanghai
network_mode: bridge


飞牛nas成功
version: '3.8'

services:
xianyu-auto-reply:
image: registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0
container_name: xianyu-auto-reply
restart: always
ports:
- "8080:8080"
volumes:
- ./xianyu-auto-reply:/app/data
privileged: true
environment:
- TZ=Asia/Shanghai
network_mode: bridge
version: '3.8'

services:
  xianyu-auto-reply:
    image: registry.cn-shanghai.aliyuncs.com/zhinian-software/xianyu-auto-reply:1.0
    container_name: xianyu-auto-reply
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - ./xianyu-auto-reply:/app/data
    privileged: true
    environment:
      - TZ=Asia/Shanghai
    network_mode: bridge
    
p04y
sunpanel 导航
13552031584
AutoCAD
```
11111
基于飞牛os用docker compose部署一个存储切片m3u8的可视化页面,上传的切片支持返回直连,让外界内网穿透访问并播放视频
基于飞牛os用docker compose部署一个存储切片m3u8的可视化页面,上传的切片支持返回直连,让外界内网穿透访问并播放视频,token支持外部对接上传,所有功能需要登入账号密码其他我没想到的问题你可自主搜索发挥
在飞牛os上,用docker compose部署一个存储切片m3u8的可视化页面,上传的切片支持返回直连,让外界内网穿透访问并播放视频,项目支持生成token让外部对接上传,所有功能需要登入账号密码其他我没想到的问题你可自主搜索发挥
在飞牛os上,用docker compose部署一个存储切片m3u8的可视化页面,上传的切片返回直连m3u8,让外界内网穿透访问并播放视频,项目支持生成token让外部对接上传,所有功能需要登入账号密码
用php部署一个存储切片m3u8的可视化页面,上传的切片返回直连m3u8,让外部访问并播放视频,项目支持生成token让外部对接上传,所有功能需要登入账号密码
图片文件
图片文件
Timx@192.168.36.130
sudo -i
ssh Timx@192.168.36.130
cd /vol1/1000/ts
Timx@.
Access denied.
# 查看 www 目录及文件权限
ls -la www/

# 修复权限(允许读取和执行)
sudo chmod -R 755 www/  # 递归设置权限
sudo chown -R $USER:$USER www/  # 确保当前用户拥有所有权
ssh Timx@192.168.0.116
方法 2:如果方法 1 失败(可能是纯 Debian 系统)
bash
# 添加Debian专用的PHP源
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

# 添加源的GPG密钥
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

# 更新源列表
sudo apt-get update
三、重新安装 PHP 8.0 及 FPM
bash
# 安装PHP 8.0核心组件和FPM
sudo apt-get install -y php8.0 php8.0-fpm

# 安装必要的扩展(视频上传代码需要)
sudo apt-get install -y php8.0-cli php8.0-common php8.0-zip php8.0-curl

# 验证安装
php -v # 应显示PHP 8.0.x版本信息
# 安装PHP 8.0核心组件和FPM
sudo apt-get install -y php8.0 php8.0-fpm

# 安装必要的扩展(视频上传代码需要)
sudo apt-get install -y php8.0-cli php8.0-common php8.0-zip php8.0-curl

# 验证安装
php -v # 应显示PHP 8.0.x版本信息
四、启动并设置 PHP-FPM 开机自启
bash
# 启动服务
sudo systemctl start php8.0-fpm

# 设置开机自启
sudo systemctl enable php8.0-fpm

# 检查服务状态
sudo systemctl status php8.0-fpm
/vol1/1000/www
#!/bin/bash

# 脚本名称: nginx.sh
# 作者: Brian
# 版本: 1.2
# 描述: 此脚本用于在飞牛系统上快速配置Nginx网站服务,支持PHP和MySQL。
# 使用方法:将脚本文件放在网站根目录,运行bash nginx.sh,根据提示设置网站名称和端口即可

# 网站配置模块
configure_website() {
    # 配置网站 #
    WebLocal=$PWD  # 网站根目录

    # 请求用户输入
    read -p "请输入网站名称(建议英文,例如:test):" WebName
	while true; do
		read -p "请输入网站端口(例如:8091):" Web_PORT

		# 检查端口是否为数字
		if ! [[ "$Web_PORT" =~ ^[0-9]+$ ]]; then
			echo "错误:端口号必须为数字,请重新输入。"
			continue
		fi

		# 检查端口范围
		if [ "$Web_PORT" -lt 1 ] || [ "$Web_PORT" -gt 65535 ]; then
			echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
			continue
		fi

		# 检查端口是否被占用
		if ss -tuln | grep -q ":$Web_PORT"; then
			echo "错误:端口 $Web_PORT 已被占用,请选择其他端口。"
			continue
		fi

		# 如果所有检查通过,退出循环
		break
	done

    # 修改权限
    sudo chown -R www-data:www-data $WebLocal
    sudo chmod -R 755 $WebLocal

    # 创建Nginx配置文件
    cat > /etc/nginx/sites-available/$WebName <<EOF
server {
    listen $Web_PORT default_server;
    listen [::]:$Web_PORT default_server;

    root $WebLocal;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files \$uri \$uri/ =404;
    }
	
	# 配置 PHP 支持
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问 .htaccess 文件
    location ~ /\.ht {
        deny all;
    }
}
EOF

    # 创建符号链接
    sudo rm -f /etc/nginx/sites-enabled/$WebName  # 删除已存在的符号链接
    sudo ln -s /etc/nginx/sites-available/$WebName /etc/nginx/sites-enabled/

    # 检查Nginx配置
    sudo nginx -t
    if [ $? -ne 0 ]; then
        echo "错误:Nginx 配置检查失败,请检查配置文件。"
        exit 1
    fi

    # 重启Nginx
    sudo systemctl restart nginx

    # 创建网站信息文件
    INFO_FILE="${WebLocal}/website_info"
    echo "网站名称: $WebName" > "$INFO_FILE"
    echo "网站端口: $Web_PORT" >> "$INFO_FILE"
    echo "网站根目录: $WebLocal" >> "$INFO_FILE"
    echo "创建时间: $(date)" >> "$INFO_FILE"
    chmod 644 "$INFO_FILE"

    echo "配置完成,网站已启动。"
    echo "访问地址:http://<服务器IP>:$Web_PORT"
    echo "网站信息已保存到: $INFO_FILE"
}

# 检查 Nginx 是否已经在运行
if systemctl is-active --quiet nginx; then
    echo "Nginx 已经在运行,跳过更新和升级步骤,直接配置网站。"
    configure_website
    exit 0
else
    echo "Nginx 未运行,开始检查和安装..."
    # 更新系统包列表
    echo "正在更新系统包列表..."
    sudo apt update

    # 升级已安装的包
    echo "正在升级已安装的包..."
    sudo apt upgrade -y

    # 检查是否已安装 nginx
    if ! command -v nginx &> /dev/null; then
        echo "Nginx 未安装,正在安装 Nginx..."
		
		while true; do
			read -p "请输入 Nginx 监听端口(例如:8090):" Nginx_PORT

			# 检查端口是否为数字
			if ! [[ "$Nginx_PORT" =~ ^[0-9]+$ ]]; then
				echo "错误:端口号必须为数字,请重新输入。"
				continue
			fi

			# 检查端口范围
			if [ "$Nginx_PORT" -lt 1 ] || [ "$Nginx_PORT" -gt 65535 ]; then
				echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
				continue
			fi

			# 检查端口是否被占用
			if ss -tuln | grep -q ":$Nginx_PORT"; then
				echo "错误:端口 $Nginx_PORT 已被占用,请选择其他端口。"
				continue
			fi

			# 如果所有检查通过,退出循环
			break
		done

echo "端口 $Nginx_PORT 可用,继续配置 Nginx..."
	
        sudo apt install nginx -y
	
	# 修改 Nginx 配置文件监听端口
		NGINX_CONF="/etc/nginx/sites-available/default"
		if [ -f "$NGINX_CONF" ]; then
			echo "修改 Nginx 配置文件以监听 $Nginx_PORT 端口..."
			sudo sed -i "s/80 default_server/$Nginx_PORT default_server/g" "$NGINX_CONF"
		else
			echo "Nginx 配置文件 $NGINX_CONF 不存在,请检查路径。"
			exit 1
		fi
    else
        echo "Nginx 已安装,跳过安装。"
    fi

    # 检查是否已安装 php-fpm
    if ! dpkg -l | grep -q php8.2-fpm; then
        echo "php8.2-fpm 未安装,正在安装 php8.2-fpm..."
        sudo apt install php8.2-fpm -y
    else
        echo "php8.2-fpm 已安装,跳过安装。"
    fi

    # 检查是否已安装 php-mysql
    if ! dpkg -l | grep -q php-mysql; then
        echo "php-mysql 未安装,正在安装 php-mysql..."
        sudo apt install php-mysql -y
    else
        echo "php-mysql 已安装,跳过安装。"
    fi

    # 启动 Nginx 和 php8.2-fpm
    sudo systemctl start nginx
    sudo systemctl start php8.2-fpm

    # 设置 Nginx 和 php8.2-fpm 开机自启
    sudo systemctl enable nginx
    sudo systemctl enable php8.2-fpm

    # 查询 Nginx 和 php8.2-fpm 状态
    echo "Nginx 状态:"
    sudo systemctl status nginx --no-pager

    echo "php8.2-fpm 状态:"
    sudo systemctl status php8.2-fpm --no-pager

    # 配置网站
    configure_website
fi
b8c189eaf1675aed179977de394863c8
方案 2:修改站点专属配置(更推荐,不影响全局)
如果你的项目在 /etc/nginx/sites-available/ 下有单独配置(比如默认的 default 文件),优先修改这个,避免影响其他站点:

进入站点配置文件夹(这一步 cd 是对的):
bash
cd /etc/nginx/sites-available/

查看文件夹内的配置文件(确认你的站点配置名,通常是 default):
bash
ls  # 列出所有文件,会看到类似 default、your-site 等文件名

编辑站点配置文件(以 default 为例,若你的文件名不同,替换成实际名称):
bash
sudo vim default  # 或 sudo nano default

添加参数到 server { ... } 块内:
找到 server { ... } 块(每个站点配置的核心),在里面添加大文件限制参数:
nginx
server {
    listen 80;
    server_name 你的域名或IP;  # 原有配置
    root /var/www/你的项目目录;  # 原有配置
    
    # 新增:大文件上传限制(放在 server 块内任意位置,推荐开头)
    client_max_body_size 500M;
    client_body_timeout 1800s;
    client_header_timeout 1800s;
    
    # 其他原有配置(如 location / { ... } 等,不要删除)
}

保存并退出(同方案 1 的保存步骤)。
第三步:验证配置并重启 Nginx
检查配置是否有误(关键步骤,避免修改错误导致 Nginx 启动失败):
bash
sudo nginx -t

若提示 nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置正确;
若提示错误,按错误信息修改(比如括号不匹配、参数拼写错误)。
重启 Nginx 使配置生效:
bash
sudo systemctl restart nginx


确认 Nginx 启动正常:
bash
sudo systemctl status nginx


看到 active (running) 说明重启成功。
ssh Timx@192.168.1.4
hndh2025
/vol1/1000/www/ts
Timx@.
ssh Timx@192.168.1.5
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
#
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}
sudo nano /etc/nginx/sites-available/ts
/etc/nginx/nginx.conf
sudo nano /etc/nginx/nginx.conf
curl -fsSL https://vd.xlhyqq.com/x/install.sh -o install.sh
bash install.sh
系统版本 发布时间 硬件支持范围 主要新功能 支持状态
macOS Catalina 10.15.7 (19H15) 2019 年 MacBook (2015+),iMac (2012+),Mac Pro (2013+) - 彻底淘汰 32 位应用
- iTunes 拆分为 Music/TV/Podcasts
- Sidecar(iPad 当副屏) 已停止更新
macOS Big Sur 11.7.10 (20G1427) 2020 年 MacBook (2015+),MacBook Air (2013+),MacBook Pro (2013+),iMac (2014+),Mac mini (2014+),Mac Pro (2013+) - 全新 UI 风格(类似 iOS)
- 首个支持 Apple Silicon (M1)
- 控制中心 仅安全更新
macOS Monterey 12.7.4 (21H1123) 2021 年 MacBook (2016+),MacBook Air (2015+),MacBook Pro (2015+),iMac (2015+),Mac mini (2014+),Mac Pro (2013+) - 通用控制 (Universal Control)
- 快捷指令 (Shortcuts)
- AirPlay to Mac 仅安全更新
macOS Ventura 13.7.5 (22H527) 2022 年 MacBook (2017+),MacBook Air (2018+),MacBook Pro (2017+),iMac (2017+),Mac mini (2018+),Mac Pro (2019+),iMac Pro (2017) - 舞台管理器 (Stage Manager)
- 连续互通相机 (iPhone 当 Mac 摄像头)
- 系统设置 UI 改版 最新安全更新中
macOS Sonoma 14.7.5 (23H527) 2023 年 MacBook Air (2018+),MacBook Pro (2018+),iMac (2019+),Mac mini (2018+),Mac Pro (2019+),Mac Studio (2022+) - 桌面小组件 (Widget)
- 游戏模式 (Game Mode)
- Safari 用户配置文件
- 改进视频会议效果 最新正式版
macOS Sequoia 15.4 (24E248) 2024 年 预计仅支持 2019+ Intel 和所有 Apple Silicon(M 系列) - iPhone 镜像 (iPhone Mirroring)
- Apple Intelligence (AI 功能, 限新设备)
- 多屏幕小组件优化
🔹 1. 发布时间 &amp; 支持周期

macOS Catalina (10.15, 2019年发布)

最后一个支持 Intel 仅64位 的系统,不再支持 32 位应用。

目前已停止官方安全更新(除非特例)。

macOS Big Sur (11, 2020年发布)

首次大改 UI(类似 iOS/iPadOS 风格)。

支持 Apple Silicon (M1 芯片) 的首个系统。

macOS Monterey (12, 2021年发布)

引入 通用控制 (Universal Control)、快捷指令 (Shortcuts)。

加强 M1 支持。

macOS Ventura (13, 2022年发布)

新功能:舞台管理器 (Stage Manager)、连续互通相机 (Continuity Camera)。

停止对 Intel 一些老机型支持。

macOS Sonoma (14, 2023年发布)

新功能:桌面小组件(Widget)、游戏模式 (Game Mode)。

Safari 用户配置文件、多项安全增强。

macOS Sequoia (15, 2024年发布)

新功能:iPhone 镜像 (iPhone Mirroring)、AI 辅助功能 (Apple Intelligence,部分机型)。

多屏幕小组件支持更完善。

🔹 2. 硬件支持

Catalina:支持 2012-2013 年的 Mac。

Big Sur:最低支持到 2013/2014 款 Mac。

Monterey:最低支持到 2014/2015 款 Mac。

Ventura:砍掉了 2014–2016 部分 Intel Mac,要求至少 2017。

Sonoma:只支持 2018 年后的 Mac。

Sequoia:预计继续砍 Intel,主要面向 Apple Silicon。

🔹 3. 功能差异

Catalina:32 位彻底淘汰;iTunes 被拆成 Apple Music、Apple TV、Apple Podcasts。

Big Sur:UI 重新设计,首个 M1 芯片支持。

Monterey:通用控制、快捷指令。

Ventura:舞台管理器、连续互通相机。

Sonoma:桌面小组件、游戏模式。

Sequoia:iPhone 镜像、AI 功能(仅限新设备)。

🔹 4. 安全 &amp; 更新

新系统(Ventura 及以后) 有更快的 快速安全响应更新 (Rapid Security Response)。

老系统(Catalina/Big Sur) 基本只收最后的安全补丁,不再新增功能。
#!/bin/bash

# 脚本名称: nginx.sh
# 作者: Brian
# 版本: 1.5
# 描述: 飞牛系统快速配置Nginx网站,支持PHP、MySQL和HLS跨域,增加上传大小限制
# 使用方法:放在网站根目录,运行 bash nginx.sh

configure_website() {
    WebLocal=$PWD  # 网站根目录

    read -p "请输入网站名称(建议英文,例如:test):" WebName
    while true; do
        read -p "请输入网站端口(例如:8091):" Web_PORT
        if ! [[ "$Web_PORT" =~ ^[0-9]+$ ]]; then
            echo "错误:端口号必须为数字,请重新输入。"
            continue
        fi
        if [ "$Web_PORT" -lt 1 ] || [ "$Web_PORT" -gt 65535 ]; then
            echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
            continue
        fi
        if ss -tuln | grep -q ":$Web_PORT"; then
            echo "错误:端口 $Web_PORT 已被占用,请选择其他端口。"
            continue
        fi
        break
    done

    # 设置上传大小限制(可根据需要修改这些值)
    UPLOAD_MAX_SIZE="100M"
    POST_MAX_SIZE="100M"
    MEMORY_LIMIT="256M"

    sudo chown -R www-data:www-data $WebLocal
    sudo chmod -R 755 $WebLocal

    # 删除默认站点,避免端口冲突
    sudo rm -f /etc/nginx/sites-enabled/default

    # 创建Nginx配置文件
    cat > /etc/nginx/sites-available/$WebName <<EOF
server {
    listen $Web_PORT default_server;
    listen [::]:$Web_PORT default_server;

    root $WebLocal;
    index index.php index.html index.htm;

    server_name _;

    # Nginx 上传限制
    client_max_body_size $UPLOAD_MAX_SIZE;
    client_body_buffer_size 16M;

    location / {
        try_files \$uri \$uri/ =404;
    }

    # PHP 支持
    location ~ \.php\$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
        
        # PHP 上传参数
        fastcgi_param PHP_VALUE "upload_max_filesize=$UPLOAD_MAX_SIZE
        post_max_size=$POST_MAX_SIZE
        memory_limit=$MEMORY_LIMIT";
    }

    # 禁止访问 .ht 文件
    location ~ /\.ht {
        deny all;
    }

    # HLS 跨域配置
    location ~* \.(m3u8|ts)$ {
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods 'GET, OPTIONS' always;
        add_header Access-Control-Allow-Headers 'Range' always;
        add_header Access-Control-Expose-Headers 'Content-Length, Content-Range' always;

        if (\$request_method = OPTIONS) {
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }

        try_files \$uri =404;
    }
}
EOF

    # 配置PHP上传限制
    PHP_INI_FILE="/etc/php/8.2/fpm/php.ini"
    if [ -f "$PHP_INI_FILE" ]; then
        sudo sed -i "s/^upload_max_filesize.*/upload_max_filesize = $UPLOAD_MAX_SIZE/" "$PHP_INI_FILE"
        sudo sed -i "s/^post_max_size.*/post_max_size = $POST_MAX_SIZE/" "$PHP_INI_FILE"
        sudo sed -i "s/^memory_limit.*/memory_limit = $MEMORY_LIMIT/" "$PHP_INI_FILE"
        echo "已更新PHP上传限制配置"
    else
        echo "警告:未找到PHP配置文件 $PHP_INI_FILE,PHP上传限制可能未生效"
    fi

    # 创建符号链接
    sudo ln -sf /etc/nginx/sites-available/$WebName /etc/nginx/sites-enabled/

    # 检查配置并重启服务
    sudo nginx -t && sudo systemctl restart nginx
    sudo systemctl restart php8.2-fpm

    # 保存网站信息
    INFO_FILE="${WebLocal}/website_info"
    echo "网站名称: $WebName" > "$INFO_FILE"
    echo "网站端口: $Web_PORT" >> "$INFO_FILE"
    echo "网站根目录: $WebLocal" >> "$INFO_FILE"
    echo "最大上传大小: $UPLOAD_MAX_SIZE" >> "$INFO_FILE"
    echo "创建时间: $(date)" >> "$INFO_FILE"
    chmod 644 "$INFO_FILE"

    echo "配置完成,网站已启动。"
    echo "访问地址:http://<服务器IP>:$Web_PORT"
    echo "最大上传限制:$UPLOAD_MAX_SIZE"
    echo "网站信息已保存到: $INFO_FILE"
}

# 安装和启动环境
install_env() {
    sudo apt update
    sudo apt upgrade -y

    # 安装 Nginx
    if ! command -v nginx &> /dev/null; then
        sudo apt install nginx -y
    fi

    # 安装 PHP-FPM
    if ! dpkg -l | grep -q php8.2-fpm; then
        sudo apt install php8.2-fpm -y
    fi

    # 安装 PHP MySQL 扩展
    if ! dpkg -l | grep -q php-mysql; then
        sudo apt install php-mysql -y
    fi

    # 启动并设置开机自启
    sudo systemctl enable nginx php8.2-fpm
    sudo systemctl start nginx php8.2-fpm
}

# 主逻辑
if systemctl is-active --quiet nginx; then
    echo "Nginx 已运行,直接配置网站。"
    configure_website
else
    echo "Nginx 未运行,开始安装和配置..."
    install_env
    configure_website
fi
<!DOCTYPE html>
<!-- saved from url=(0044)https://blog.twofei.com/1603/standalone.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
.live-photo {
  position: relative;
  overflow: hidden;
  border-radius: var(--border-radius);
  max-width: min(400px, 100%);
  height: auto !important;
  margin: 1em auto;
  container-type: inline-size;
}
.live-photo .container {
  position: absolute;
  width: 100%;
  height: 100%;
}
.live-photo .container img, .live-photo .container video {
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.live-photo .container img {
  transition: opacity 1s ease, transform 1s ease;
}
.live-photo .container video {
  transition: transform 1s ease;
}
.live-photo.zoom .container img, .live-photo.zoom .container video {
  transform: scale(1.1);
}
.live-photo.zoom .container img {
  opacity: 0;
}
.live-photo.zoom .icon img {
  animation: spin 5s linear infinite;
}
.live-photo .icon {
  display: inline-flex;
  align-items: center;
  padding: 2px;
  border-radius: var(--border-radius);
  position: relative;
  left: 10px;
  top: 10px;
  height: 22px;
  background-color: rgba(240, 255, 255, 0.6705882353);
  cursor: pointer;
  user-select: none;
}
.live-photo .icon img {
  width: 22px;
  height: 22px;
}
.live-photo .icon span {
  padding: 3px;
  color: #606060;
  font-size: 80%;
}
@container (max-width: 200px) {
  .live-photo .icon span {
    display: none;
  }
}
.live-photo .warning {
  padding: 4px 6px;
  margin: 10px;
  color: #9a6700;
  border-radius: var(--border-radius);
  position: absolute;
  left: 0;
  top: 40px;
  background-color: rgba(240, 255, 255, 0.6705882353);
  transition: opacity 0.5s linear;
}
.live-photo .warning.show {
  opacity: 1 !important;
  display: inline-block !important;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', () => {
	document.querySelectorAll('.live-photo').forEach(livePhoto => {
		const container = livePhoto.querySelector('.container');
		const icon = livePhoto.querySelector('.icon');
		const video = container.querySelector('video');
		const image = container.querySelector('img');
		const warning = livePhoto.querySelector('.warning');

		// TODO 优化:等图片可用的时候再把视频显示出来,测试出现
		// 过视频比图片先加载完成,导致 flicker。

		// 尽可能修复 Safari 无法播放的问题
		// if (/WebKit/.test(navigator.userAgent)) {
		// NOTE: 为了避免预加载,不应该提前 load。
		// video.load();
		// }

		// fix: 鼠标进入 → 开始加载 → 鼠标离开(加载成功前) → 加载失败。
		let within = false;

		const start = async (e) => {
			e.stopPropagation();
			e.preventDefault();

			within = true;

			try {
				video.currentTime = 0;
				await video.play();
				livePhoto.classList.add('zoom');
			}
			catch(e) {
				console.log(e);
				if (within && e instanceof DOMException) {
					if (['NotAllowedError','AbortError'].includes(e.name)) {
						warning.innerText = '浏览器未允许视频自动播放权限,无法播放实况照片。';
					} else if (['NotSupportedError'].includes(e.name)) {
						warning.innerText = '视频未加载完成或浏览器不支持播放此视频格式。';
					} else {
						warning.innerText = `其它错误:${e}`;
					}
					warning.classList.add('show');
				}
			}
		};

		const leave = (e) => {
			livePhoto.classList.remove('zoom');
			warning.classList.remove('show');

			// await play() 可能一直卡住不返回。
			// 在 pause 之前设置,如果  await play() 还没
			// 成功返回,就会进入异常处理。
			within = false;

			video.pause();
		};

		icon.addEventListener('mouseenter',   start);
		icon.addEventListener('mouseleave',   leave);

		image.addEventListener('touchstart',  start);
		image.addEventListener('touchend',    leave);
		image.addEventListener('touchcancel', leave);

		video.addEventListener('ended', () => {
			livePhoto.classList.remove('zoom');
		});
	});
});
</script>
</head>
<body>
<div class="live-photo" style="width: 302px; height: 403px; aspect-ratio: 0.74937963;">
	<div class="container">
		<video src="1.mp4" playsinline="" preload="metadata"></video>
		<img src="./standalone_files/1.avif" alt="" width="302" height="403" loading="lazy">
	</div>
	<div class="icon">
		<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGvklEQVR4nO2ce4gVVRzHP7vr3dp1JfOFWWGvzXLLtXzTm95qURQVltrDIJI0LaKEkiAjDLW0gsRqe2FrEhT0R2gvFSmxNR/rHybbw0pLrXyUq1YbB74Dh8X2njMzd+7cdT4wMLN7zsyZ35zH73UuZGRkZGRkZGRkZBSH3kBPnZcD7wHzdF0JNAPv6LoMeBy4gaOcSuv8e+AnnXcBtgFrrHJbgLd13Qf4F1il625AI3ATRxGvAr8BfXX9FPC89f9qoKqD+pcC/XVeL4G+ouuuEuaxdCKqgHusYWqG4Hqge0z3P9sS+GNAG3AvnYg79FJPJ/CsU4HZGuqGW3WUHKcAV1vz1Axr2CXJPmAnJcjH6nWnF7kdFwIjdd4DGEqJcCXwBFBBeliqj1pHSnkBWCZVJI2MBl7Ks8IXleXS50pBhbhOi1qaRgim5+UoDZZLfzSLXVF5GPgTGExpcTJwESlgEvAtcBaliRkxs4Cr6ATUA9OBJbJUjLl3SIc5/1r/mwYMiumZA7Qyf0jCNAALY7hPNwlts17E52iWMGsituEyoB8JYlxKP+gFoiw45uV3WwL5GVgEjAfOl+2c09ELGAJMkONgu1VvFzA1BvXpzCStpaoI+tQAoMkSwKfAGE+VwghrLPC5dZ+vgNqQbSqX2fcdBWaQZRqF1b/26oW3xDR5Xwts1T336mOEYYZ6ckHZLrXFDOMwXpnDetEG+e7iwsyDb+re5hnjSCkTpbqE6XmH9YLGH1goZuoZh2S6+dJTHm7Tq1PDAM0vhRZeeyHuCTEnDpOF8nLcjeqvIWJ0NTwn+yZr2CbFW3rm2hD27jkKK8TKBDXoIc9606wFI845z2VODBaWB0gB5Vp9c55K8m69ROCdTpLRevZOz49nFsjVwAcUmemWnudDneLCm4D9Ojbpb77O0BVqw4OeAvxCXvVYOE92qPEy+7BZjXfVy0wMeAHwdwfmm/nf/HZx5Xyrv6m3kSJyvRpxt0edess8czGxKuXNNnUOAM8BwzX0zDFCseNWlVnmKETz7B0hXflVIfXdI3J8yOG7yLH8ApU3Nva5eT7MNpU1PdGF11Tex8o4A/jLSjFJnCVqtHEM5KNOQ/NAHuHZQmxVnYGOyn+blV/jqlCvjcu0MzrVJ57deb0abbwq+Zinsj5fe77qzHUoO1Rl11EkVmoV9FFId6nRQTpHRzSrrLECXBnhsTj0ttQZH6rjUqjLQ2jzB9Vol4k+8M7UeOqYgfclH8eorBn2Pnyjoygc7AQCXCk9MjKN0sxNTyzkEB7ucf+RCQzh2HhftmxFiEVkiMciYucIuqo9cxzKDiv2IkKIObBRjTZOCFc1ptXR2zNYU4SrGnOn2rIYv7jx78CzFIlpanSQOeqqlmzLI0QjvB9V1lgrLjSo/BTcOUGjziQOROZiufGNQuoTO2lTCMDFlMtZplyrBDpSC4s5RmnYBovTMkfPkCnzi+q49NaCMEQ27W2e9ZrVcBM9c6FSguvImXBYPS/nacdv8Gx7dcL+yw6HsQk9+lAnC2OjQgH7dD4nRC9aFcIORsPXHLFykqc5V2OpM8UI0gSurF9D9KY3lEsYG2PVmEc8601Vva0xpGDgqWi36NmTSQEm1/kz4ArPel2UMdCmoFRSLNYz14RQwS4HTiRF1Frmmgk5Fpon9aw/QiS5B45gk09dEEwm040h6o2xAuszExCeCaxfE6K+sZufUXZ/QTDeiX9CunnG6cXa5GOsiXnOC4btoRAqV2KYL3NzxFDjHmthCZN+caTVtsUatmF6Hko6N8p66qmVuzxQjldICD75fTkpyYGeFywYUTb2tMhgSITVsjTKQtavUMbATksAOxQAmig3fC9ZJ5U6HybHQINlngV63uQYtiz0cHS/xcJSBZ7LIt6nq4LeG0Ok+G6QnhnV5LrF0e2WeuokkEb57nbLeXBQFs06RdamxOgY6KuP8SVFYoycpy7hyLQyqZh7RqZKrSlG8lAUTpNaFVvmQRSOo/R4V0PXhEdTw0KtpGY1SzsmYerRtO0snS0fWlp75Gjl/AU/dpFq6vUDEK5paEkwV8P2AkqAxWpswYxyRy6xnB+VKfgJAq+k9NuttJD7IuwiisIWaQmp3aXu6gIzvfF1Ck8/ueIHWhHFKM6PVJCTrVpr7VhaF+PGvjrZyki3a9MPXnRaZsk8C/b83q+fgwqcAdXy7/0fo6xUuD5y1AaRv3Ltv4t9n0eaKGvnAFipTPxA/WmSW6nC+n+TVXe/9M1AYCZOfBdHMd0VMg14sd2upo8kxIDxjjk3GRkZGRkZGRkZGRSK/wDiCstGS04B5wAAAABJRU5ErkJggg==" class="no-zoom static" loading="lazy">
		<span>实况</span>
	</div>
	<div class="warning" style="opacity: 0;"></div>
</div>


</body></html>
#!/bin/bash

# 脚本名称: nginx.sh
# 作者: Brian
# 版本: 2.0
# 描述: 飞牛系统快速配置Nginx网站,支持PHP、MySQL和HLS跨域
#       新增停止/启动/删除/查看网站功能,新增MySQL和phpMyAdmin支持
# 使用方法:放在网站根目录,运行 bash nginx.sh

configure_website() {
    WebLocal=$PWD
    read -p "请输入网站名称(建议英文,例如:test):" WebName
    while true; do
        read -p "请输入网站端口(例如:8091):" Web_PORT
        if ! [[ "$Web_PORT" =~ ^[0-9]+$ ]]; then
            echo "错误:端口号必须为数字,请重新输入。"
            continue
        fi
        if [ "$Web_PORT" -lt 1 ] || [ "$Web_PORT" -gt 65535 ]; then
            echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
            continue
        fi
        if ss -tuln | grep -q ":$Web_PORT"; then
            echo "错误:端口 $Web_PORT 已被占用,请选择其他端口。"
            continue
        fi
        break
    done

    # 询问是否需要为该网站创建数据库
    read -p "是否需要为该网站创建MySQL数据库? [y/n] " create_db
    if [ "$create_db" = "y" ] || [ "$create_db" = "Y" ]; then
        create_database $WebName
    fi

    sudo chown -R www-data:www-data $WebLocal
    sudo chmod -R 755 $WebLocal

    sudo rm -f /etc/nginx/sites-enabled/default

    cat > /etc/nginx/sites-available/$WebName <<EOF
server {
    listen $Web_PORT default_server;
    listen [::]:$Web_PORT default_server;

    root $WebLocal;
    index index.php index.html index.htm;

    server_name _;

    client_max_body_size 1024M;

    location / {
        try_files \$uri \$uri/ =404;
    }

    location ~ \.php\$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(m3u8|ts)$ {
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods 'GET, OPTIONS' always;
        add_header Access-Control-Allow-Headers 'Range' always;
        add_header Access-Control-Expose-Headers 'Content-Length, Content-Range' always;

        if (\$request_method = OPTIONS) {
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }

        try_files \$uri =404;
    }
}
EOF

    sudo ln -sf /etc/nginx/sites-available/$WebName /etc/nginx/sites-enabled/
    sudo nginx -t && sudo systemctl restart nginx

    INFO_FILE="${WebLocal}/website_info"
    echo "网站名称: $WebName" > "$INFO_FILE"
    echo "网站端口: $Web_PORT" >> "$INFO_FILE"
    echo "网站根目录: $WebLocal" >> "$INFO_FILE"
    echo "创建时间: $(date)" >> "$INFO_FILE"
    chmod 644 "$INFO_FILE"

    echo "配置完成,网站已启动。"
    echo "访问地址:http://<服务器IP>:$Web_PORT"
    echo "网站信息已保存到: $INFO_FILE"
}

install_env() {
    sudo apt update
    sudo apt upgrade -y

    # 安装Nginx
    if ! command -v nginx &> /dev/null; then
        sudo apt install nginx -y
    fi

    # 安装PHP
    if ! dpkg -l | grep -q php8.2-fpm; then
        sudo apt install php8.2-fpm -y
    fi

    if ! dpkg -l | grep -q php-mysql; then
        sudo apt install php-mysql -y
    fi

    # 安装MySQL
    install_mysql

    # 安装phpMyAdmin
    install_phpmyadmin

    # 配置PHP
    PHP_INI="/etc/php/8.2/fpm/php.ini"
    sudo sed -i 's/^upload_max_filesize.*/upload_max_filesize = 1024M/' $PHP_INI
    sudo sed -i 's/^post_max_size.*/post_max_size = 1024M/' $PHP_INI
    sudo sed -i 's/^memory_limit.*/memory_limit = 1024M/' $PHP_INI

    sudo systemctl enable nginx php8.2-fpm mysql
    sudo systemctl restart nginx php8.2-fpm mysql
}

install_mysql() {
    if ! command -v mysql &> /dev/null; then
        echo "正在安装MySQL..."
        # 设置非交互式安装,设置root密码
        read -p "请设置MySQL root用户密码: " mysql_root_pass
        read -p "请再次输入MySQL root用户密码: " mysql_root_pass_confirm
        
        while [ "$mysql_root_pass" != "$mysql_root_pass_confirm" ]; do
            echo "两次输入的密码不一致,请重新输入"
            read -p "请设置MySQL root用户密码: " mysql_root_pass
            read -p "请再次输入MySQL root用户密码: " mysql_root_pass_confirm
        done

        # 保存MySQL密码到临时文件
        echo "mysql-server mysql-server/root_password password $mysql_root_pass" | sudo debconf-set-selections
        echo "mysql-server mysql-server/root_password_again password $mysql_root_pass" | sudo debconf-set-selections
        
        # 安装MySQL服务器
        sudo apt install mysql-server -y
        
        # 执行安全配置
        echo "正在进行MySQL安全配置..."
        mysql -u root -p"$mysql_root_pass" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$mysql_root_pass';"
        mysql -u root -p"$mysql_root_pass" -e "DELETE FROM mysql.user WHERE User='';"
        mysql -u root -p"$mysql_root_pass" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
        mysql -u root -p"$mysql_root_pass" -e "DROP DATABASE IF EXISTS test;"
        mysql -u root -p"$mysql_root_pass" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
        mysql -u root -p"$mysql_root_pass" -e "FLUSH PRIVILEGES;"
        
        echo "MySQL安装和安全配置完成"
    else
        echo "MySQL已安装,跳过安装步骤"
    fi
}

install_phpmyadmin() {
    if [ ! -f /usr/share/phpmyadmin/index.php ]; then
        echo "正在安装phpMyAdmin..."
        
        # 非交互式配置phpMyAdmin
        sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/dbconfig-install boolean true"
        sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/app-password-confirm password "
        sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/admin-pass password "
        sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/app-pass password "
        sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/reconfigure-webserver multiselect nginx"
        
        sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl -y
        
        # 配置Nginx支持phpMyAdmin
        if [ ! -f /etc/nginx/conf-available/phpmyadmin.conf ]; then
            sudo tee /etc/nginx/conf-available/phpmyadmin.conf <<EOF
location /phpmyadmin {
    root /usr/share/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files \$uri =404;
        root /usr/share/;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
    }
}
EOF
            sudo ln -s /etc/nginx/conf-available/phpmyadmin.conf /etc/nginx/conf-enabled/
            sudo systemctl restart nginx
        fi
        
        echo "phpMyAdmin安装完成"
    else
        echo "phpMyAdmin已安装,跳过安装步骤"
    fi
}

create_database() {
    local db_prefix=$1
    local db_name="${db_prefix}_db"
    local db_user="${db_prefix}_user"
    
    # 生成随机密码
    local db_pass=$(openssl rand -base64 12)
    
    read -p "请输入MySQL root密码: " mysql_root_pass
    
    # 创建数据库和用户
    echo "正在为网站创建数据库..."
    mysql -u root -p"$mysql_root_pass" -e "CREATE DATABASE IF NOT EXISTS $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
    mysql -u root -p"$mysql_root_pass" -e "CREATE USER IF NOT EXISTS '$db_user'@'localhost' IDENTIFIED BY '$db_pass';"
    mysql -u root -p"$mysql_root_pass" -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost';"
    mysql -u root -p"$mysql_root_pass" -e "FLUSH PRIVILEGES;"
    
    # 保存数据库信息到网站信息文件
    INFO_FILE="${WebLocal}/website_info"
    echo "数据库名称: $db_name" >> "$INFO_FILE"
    echo "数据库用户: $db_user" >> "$INFO_FILE"
    echo "数据库密码: $db_pass" >> "$INFO_FILE"
    echo "数据库主机: localhost" >> "$INFO_FILE"
    
    echo "数据库创建完成,信息已保存到网站信息文件"
    echo "数据库名称: $db_name"
    echo "数据库用户: $db_user"
    echo "数据库密码: $db_pass"
    echo "请妥善保存以上数据库信息!"
}

stop_website() {
    echo "正在停止网站服务..."
    sudo systemctl stop nginx
    sudo systemctl stop php8.2-fpm
    sudo systemctl stop mysql
    echo "网站服务已停止。"
}

start_website() {
    echo "正在启动网站服务..."
    sudo systemctl start nginx
    sudo systemctl start php8.2-fpm
    sudo systemctl start mysql
    echo "网站服务已启动。"
}

delete_website() {
    read -p "请输入要删除的网站名称:" WebName
    if [ -f /etc/nginx/sites-available/$WebName ]; then
        # 询问是否删除关联的数据库
        read -p "是否同时删除与该网站关联的数据库? [y/n] " delete_db
        if [ "$delete_db" = "y" ] || [ "$delete_db" = "Y" ]; then
            read -p "请输入MySQL root密码: " mysql_root_pass
            db_name="${WebName}_db"
            db_user="${WebName}_user"
            
            mysql -u root -p"$mysql_root_pass" -e "DROP DATABASE IF EXISTS $db_name;"
            mysql -u root -p"$mysql_root_pass" -e "DROP USER IF EXISTS '$db_user'@'localhost';"
            mysql -u root -p"$mysql_root_pass" -e "FLUSH PRIVILEGES;"
            echo "数据库 $db_name 及用户 $db_user 已删除"
        fi
        
        sudo rm -f /etc/nginx/sites-available/$WebName
        sudo rm -f /etc/nginx/sites-enabled/$WebName
        sudo nginx -t && sudo systemctl reload nginx
        echo "网站 $WebName 已删除(其他网站不受影响)。"
    else
        echo "未找到网站 $WebName 配置文件。"
    fi
}

list_websites() {
    echo "已配置的网站列表:"
    if [ -d /etc/nginx/sites-available ]; then
        ls -1 /etc/nginx/sites-available
    else
        echo "未找到 /etc/nginx/sites-available 目录。"
    fi
    
    # 显示数据库列表
    echo -e "\n已创建的数据库:"
    read -p "请输入MySQL root密码查看数据库列表: " mysql_root_pass
    mysql -u root -p"$mysql_root_pass" -e "SHOW DATABASES;" | grep -vE 'Database|information_schema|performance_schema|mysql|sys'
}

# 主菜单
echo "=========================="
echo "  Nginx 网站管理脚本"
echo "=========================="
echo "1) 配置网站"
echo "2) 安装环境并配置网站"
echo "3) 停止网站服务"
echo "4) 删除网站配置"
echo "5) 启动网站服务"
echo "6) 查看已配置网站列表"
echo "7) 单独安装MySQL数据库"
echo "8) 单独安装phpMyAdmin"
echo "=========================="
read -p "请选择操作 [1-8]: " choice

case $choice in
    1) configure_website ;;
    2) install_env; configure_website ;;
    3) stop_website ;;
    4) delete_website ;;
    5) start_website ;;
    6) list_websites ;;
    7) install_mysql ;;
    8) install_phpmyadmin ;;
    *) echo "无效选择" ;;
esac
/vol1/1000/www/hj
@旁人: -novid -nojoy -high -freq 240 +fps_max 0
/vol1/1000/www/sql
cd /vol1/1000/www/mysql
436 394 946
#!/bin/bash

# 获取用户输入的服务器备份名称
read -p "请输入服务器备份名称: " server_backup_name

# 确保用户输入了至少一个备份路径
while :; do
    echo "请输入要备份的文件目录(绝对路径),一行一个,回车结束:"
    while IFS= read -r line; do
        [[ -z "$line" ]] && break # 如果是空行则结束循环
        source_dirs+=("$line") # 将输入的路径添加到数组中
    done
    if [ ${#source_dirs[@]} -eq 0 ]; then
        echo "错误:必须设置至少一个备份路径。"
    else
        break
    fi
done

# 确保用户输入了定时时间
while :; do
    read -p "请输入自定义的cron时间格式(例如,每天凌晨2点为 0 2 * * *): " custom_cron_time
    if [[ -z "$custom_cron_time" ]]; then
        echo "错误:必须设置定时时间。"
    else
        break
    fi
done

# 设置WebDAV相关变量
WEBDAV_URL="http://127.0.0.1:5244/dav/阿里云盘/${server_backup_name}/"  #我自己的地址是  http://127.0.0.1:5244/dav/阿里云盘/
WEBDAV_USER="Alist账户"
WEBDAV_PASSWORD="Alist密码"

# 创建备份脚本
backup_script="/root/${server_backup_name}备份到webdav.sh"
cat << 'EOF' > "$backup_script"
#!/bin/bash

# 定义WebDAV相关变量
WEBDAV_URL="${WEBDAV_URL}"
WEBDAV_USER="${WEBDAV_USER}"
WEBDAV_PASSWORD="${WEBDAV_PASSWORD}"

EOF

# 为每个目录追加备份命令到脚本
for source_dir in "${source_dirs[@]}"; do
    DIR_NAME=$(basename "$source_dir")
    cat << EOF >> "$backup_script"
# 动态生成备份文件名,包含当前日期和时间
BACKUP_NAME="${DIR_NAME}-\$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
BACKUP_PATH="/tmp/\$BACKUP_NAME"

# 压缩指定目录
tar -czf "\$BACKUP_PATH" "$source_dir"

# 上传到WebDAV
curl -T "\$BACKUP_PATH" -u \$WEBDAV_USER:\$WEBDAV_PASSWORD \$WEBDAV_URL

# 清理本地备份文件
rm "\$BACKUP_PATH"

EOF
done

# 替换变量占位符
sed -i "s|\${WEBDAV_URL}|$WEBDAV_URL|g" "$backup_script"
sed -i "s|\${WEBDAV_USER}|$WEBDAV_USER|g" "$backup_script"
sed -i "s|\${WEBDAV_PASSWORD}|$WEBDAV_PASSWORD|g" "$backup_script"

# 赋予执行权限
chmod +x "$backup_script"

# 设置cron作业
(crontab -l 2>/dev/null; echo "$custom_cron_time $backup_script") | crontab -

# 输出信息
echo "备份任务已设置,以下是所有信息。"
echo "需要备份路径: ${source_dirs[*]}"
echo "备份脚本路径: $backup_script"
echo "定时规则: $custom_cron_time"
{
    "code": "0",
    "isBlindBox": 0,
    "memberid": 0,
    "msg": "成功",
    "orderId": "dbe6c53ce06143deb7da04402d4e81da",
    "provinceid": "4057",
    "url": "https://unipayphone.wostore.cn/sitepay/member_pay.html?torder=bf33d5b4389d4a70837afdcbd1d28ae6&sign=bc0564d6e9d59f982f2268403227c2a8"
}
图片文件
梵想SP510512G的颗粒
因此,9950X3D的总三级缓存容量为原生L3缓存和3D V-Cache的总和,即 64MB + 64MB = 128MB。加上它自带的16MB二级缓存,总共是144MB的缓存容量
图片文件
图片文件
shadowrocket://add/sub://aHR0cHM6Ly9wb2tlbGluay54bi0tNGdzdm1oNzRjd3hpLmNuL2FwaS92MS9jbGllbnQvc3Vic2NyaWJlP3Rva2VuPTQ1YjJjYmMyNWE2YjYyYWZiZDI5ZTgxYWJhNWFkMDMw?remark=%E5%AE%9D%E5%8F%AF%E6%A2%A6%E6%98%9F%E4%BA%91
杏雨梨云启动维护系统2025乙巳版之仲夏更新.rar
图片文件
图片文件
图片文件
图片文件
图片文件
图片文件
图片文件
chenyaokeji1
embfrkdcfzsnecgc
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
#   - "templates/web.ssl.template.yml"
#   - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "52000:80"   # http
#   - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  #db_shared_buffers: "256MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: latest)
  #version: latest

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  #UNICORN_WORKERS: 3

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: 'b.xsv.me'

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '2506317561@qq.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS is required
  # WARNING: SMTP password should be wrapped in quotes to avoid problems
  DISCOURSE_SMTP_ADDRESS: smtp.qq.com
  #DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: 2506317561@qq.com
  DISCOURSE_SMTP_PASSWORD: "embfrkdcfzsnecgc"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default: true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (required by some providers)
  #DISCOURSE_NOTIFICATION_EMAIL: 2506317561@qq.com    # (address to send notifications from)
  #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer        # (optional, default: peer, valid values: none, peer, client_once, fail_if_no_peer_cert)
  #DISCOURSE_SMTP_AUTHENTICATION: plain            # (default: plain, valid values: plain, login, cram_md5)

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## The maxmind geolocation IP account ID and license key for IP address lookups
  ## see https://meta.discourse.org/t/-/173941 for details
  #DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"
/var/discourse/shared/standalone/backups/default
noreply@xsv.me
352271427
force_https
false
30 2 10
knng jzva ivjf xbau
【京东】https://3.cn/-2vlWhfO?jkl=@NE6jpEFaqAXv@ CA8680 「HKC 2K 220Hz高刷电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2v-lYNmh?jkl=@I1HEd39IJfxL@ ZH1997 「HKC 24.5英寸2K 250Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2v-lYNmh?jkl=@I1HEd39IJfxL@ ZH1997 「HKC 24.5英寸2K 250Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/-2vm0sCT?jkl=@F6J9nA1DHfZx@ ZH1997 「HKC 27英寸240Hz高刷电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2v-m0VKo?jkl=@M3HO4A0NuBSm@ MF8335 「AOC 27英寸2K 180Hz电竞屏」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2vm1r-YW?jkl=@T6HfN9eLpBdp@ ZH1997 「AOC 2K260Hz FastIPS电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2v-m1QWo?jkl=@T4Vo80YKeKdo@ ZH1997 「AOC 23.8英寸 240Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/-2vm2EmO?jkl=@Y2B7R1ucupGa@ MU5104 「AOC 23.8英寸 2K180Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2vm7-jZi?jkl=@W36rWFuYzIvF@ CA1393 「AOC 23.8英寸 260Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2-vm8fam?jkl=@VFY0Y405nDtF@ CA3576 「HKC 24.5英寸320Hz电竞显示器」
点击链接直接打开 或者复制文案打开京东
【京东】https://3.cn/2vma-fAp?jkl=@ADp6B8HcbqHE@ MU5104 「AOC 27英寸180Hz电竞小金刚」
点击链接直接打开 或者复制文案打开京东
1080x1920
livoke7677@moondyal.com
个人云盘系统
一个简单、美观、安全的PHP云盘系统,支持文件上传、下载、管理和直链分享。

✨ 特性
📤 简单上传 - 支持点击上传或拖拽上传,自动生成直链
🔗 直链分享 - 每个文件自动生成唯一直链,可直接访问下载
🔐 管理员系统 - 安全的登录认证,保护文件管理功能
⬇️ 快速下载 - 一键下载文件或通过直链直接下载
🗑️ 安全删除 - 通过删除码验证,防止误删
📊 文件管理 - 显示文件大小、上传时间、下载次数、直链
🎨 现代UI - 采用渐变色彩,简洁美观
📱 响应式设计 - 支持手机和桌面设备
🔒 安全防护 - CSRF保护、密码加密、安全验证

蓝奏云
https://xyz111.lanzoue.com/iaRUZ3c5i1uf

系统要求
• PHP 7.0 或更高版本
• MySQL 5.6 或更高版本

上传解压配置信息,点击安装即可使用

关键信息打码 求审核放过[泪]
佬友你好。
直接用Win11Debloat这个项目吧,专门用于卸载win10或win11的预装应用。
https://github.com/Raphire/Win11Debloat

这个项目默认卸载(或不卸载)的软件列表在这里:
https://github.com/Raphire/Win11Debloat/wiki/App-Removal

使用前一定要先看项目说明,确定好需要卸载的预装应用。
除此之外,也可以关闭遥测和一些用不上的功能。