This commit is contained in:
starry
2025-07-16 12:35:21 +00:00
commit 1f7b4314c3
49 changed files with 18341 additions and 0 deletions

25
web/README.md Normal file
View File

@@ -0,0 +1,25 @@
### 完全卸载删除站点及环境
- 删除站点文件
```
sudo rm -r /var/www/
```
- 停止相关服务
```
sudo systemctl stop caddy apache2 mariadb
```
- 禁用开机自启
```
sudo systemctl disable caddy apache2 mariadb
```
- 卸载软件包
```
sudo apt remove --purge caddy apache2 php* mariadb-server mariadb-client -y
```
- 清理残留配置和依赖
```
sudo apt autoremove -y
```

196
web/acgfaka.sh Normal file
View File

@@ -0,0 +1,196 @@
#!/bin/bash
# 一键部署异次元发卡脚本
# 项目地址https://github.com/sky22333/shell
# 检查是否已经安装 acgfaka
if [ -d "/var/www/html/acgfaka" ]; then
echo -e "\033[32m检测到 acgfaka 已经安装。\033[0m"
echo -e "\033[33m如需重新安装请删除站点文件/var/www/html/acgfaka 并做好相关备份。\033[0m"
exit 0
fi
while true; do
echo -e "\033[33m请输入您的域名(确保已经解析到本机): \033[0m"
read DOMAIN
echo -e "\033[32m您输入的域名是: $DOMAIN\033[0m"
echo -e "\033[33m请确认这个域名是否正确 (yes/no, 默认回车确认): \033[0m"
read CONFIRM
# 如果用户按回车,则默认为确认
if [[ -z "${CONFIRM// }" ]]; then
CONFIRM="yes"
fi
if [[ "${CONFIRM,,}" == "yes" || "${CONFIRM,,}" == "y" ]]; then
echo -e "\033[32m域名确认成功: $DOMAIN\033[0m"
break
else
echo -e "\033[31m请重新输入域名。\033[0m"
fi
done
# 安装必要的软件包
echo -e "\033[32m安装必要的软件包...首次安装可能较慢...请耐心等待。。。\033[0m"
# 创建 sources.list.d 目录(如果不存在的话)
if [ ! -d /etc/apt/sources.list.d/ ]; then
mkdir -p /etc/apt/sources.list.d/
fi
# 添加 Caddy 源和密钥
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update -q
# 检查操作系统
if grep -Eqi "debian" /etc/issue || grep -Eqi "debian" /proc/version; then
OS="debian"
# Debian 系统设置 PHP 仓库
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
elif grep -Eqi "ubuntu" /etc/issue || grep -Eqi "ubuntu" /proc/version; then
OS="ubuntu"
# Ubuntu 系统设置 PHP PPA
sudo apt update -q
sudo apt install -yq software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
else
echo "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。"
exit 1
fi
# 项目地址https://github.com/sky22333/shell
# 更新源列表
sudo apt update -q
# 安装必要的软件包
sudo apt install -yq mariadb-server php8.1 php8.1-mysql php8.1-fpm php8.1-curl php8.1-cgi php8.1-mbstring php8.1-xml php8.1-gd php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-opcache php8.1-zip wget unzip socat curl caddy
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
PHP_INI_FILE="/etc/php/${PHP_VERSION}/fpm/php.ini"
OPCACHE_FILE_CACHE_DIR="/var/cache/opcache"
# 确保缓存目录存在并设置权限
if [ ! -d "$OPCACHE_FILE_CACHE_DIR" ]; then
echo -e "\033[32m创建 OPcache 缓存目录...\033[0m"
sudo mkdir -p "$OPCACHE_FILE_CACHE_DIR"
sudo chown -R www-data:www-data "$OPCACHE_FILE_CACHE_DIR"
fi
# 确保 OPcache 配置存在
if ! grep -q "^opcache.enable=1" "$PHP_INI_FILE"; then
echo -e "\033[32m启用 OPcache 扩展...请稍等...\033[0m"
# 写入 OPcache 配置
sudo tee -a "$PHP_INI_FILE" > /dev/null <<EOL
[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=5000
opcache.revalidate_freq=5
opcache.save_comments=1
opcache.file_cache=${OPCACHE_FILE_CACHE_DIR}
opcache.file_cache_size=128
opcache.file_cache_only=0
opcache.file_cache_consistency_checks=1
EOL
fi
# 设置时区
TIMEZONE="Asia/Shanghai"
# 检查并设置 date.timezone
if grep -q "^date.timezone" "$PHP_INI_FILE"; then
# 如果存在 date.timezone 配置但不是 Asia/Shanghai则更新
if ! grep -q "^date.timezone = $TIMEZONE" "$PHP_INI_FILE"; then
echo -e "\033[32m更新 date.timezone 为 $TIMEZONE...\033[0m"
sudo sed -i "s#^date.timezone.*#date.timezone = $TIMEZONE#g" "$PHP_INI_FILE"
fi
else
# 如果 date.timezone 配置不存在,则添加
echo -e "\033[32m设置 date.timezone 为 $TIMEZONE...\033[0m"
sudo tee -a "$PHP_INI_FILE" > /dev/null <<EOL
date.timezone = $TIMEZONE
EOL
fi
# 重启 PHP-FPM 服务
sudo systemctl restart php${PHP_VERSION}-fpm
if systemctl is-active --quiet apache2; then
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo apt remove --purge apache2 -y
else
echo -e "环境检查通过。"
fi
# 启动并启用 Caddy 服务
sudo systemctl start caddy
sudo systemctl enable caddy
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation <<EOF
y
y
y
y
y
EOF
# 创建acgfaka数据库和用户
DB_NAME="acgfaka"
DB_USER="acguser"
DB_PASSWORD=$(openssl rand -base64 12)
sudo mysql -u root -e "DROP USER IF EXISTS '${DB_USER}'@'localhost';"
sudo mysql -u root -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -u root -e "CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';"
sudo mysql -u root -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';"
sudo mysql -u root -e "FLUSH PRIVILEGES;"
# 下载并配置acgfaka
mkdir -p /var/www/html
cd /var/www/html
wget https://github.com/lizhipay/acg-faka/archive/refs/heads/main.zip
unzip main.zip > /dev/null 2>&1
rm main.zip
mv acg-faka-main acgfaka
sudo chown -R www-data:www-data /var/www/html/acgfaka
sudo find /var/www/html/acgfaka/ -type d -exec chmod 750 {} \;
sudo find /var/www/html/acgfaka/ -type f -exec chmod 640 {} \;
# 配置 Caddyfile
CADDY_CONF="/etc/caddy/Caddyfile"
sudo tee $CADDY_CONF > /dev/null <<EOL
$DOMAIN {
root * /var/www/html/acgfaka
encode zstd gzip
file_server
# PHP 处理
php_fastcgi unix//run/php/php${PHP_VERSION}-fpm.sock
# 伪静态
try_files {path} {path}/ /index.php?s={path}&{query}
}
EOL
# 重新加载 Caddy 配置
sudo systemctl reload caddy
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[32m 数据库信息: \033[0m"
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[33m数据库名: \033[36m${DB_NAME}\033[0m"
echo -e "\033[33m数据库账号: \033[36m${DB_USER}\033[0m"
echo -e "\033[33m数据库密码: \033[36m${DB_PASSWORD}\033[0m"
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[32m站点域名: \033[36m${DOMAIN}\033[0m"
echo -e "\033[32m站点已经部署完成请记录好相关信息。\033[0m"
echo -e "\033[32m============================================================\033[0m"

77
web/mariadb.sh Normal file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
# MariaDB安装脚本
_info() {
echo -e "\e[32m$1\e[0m"
}
_error() {
echo -e "\e[31m错误: $1\e[0m"
exit 1
}
_error_detect() {
if ! eval "$1"; then
_error "执行命令 ($1) 失败"
fi
}
generate_random_password() {
# 生成一个随机密码
tr -dc 'A-Za-z0-9_@%+~#!' </dev/urandom | head -c 16
}
install_mariadb() {
_info "开始安装MariaDB"
_error_detect "apt update"
_error_detect "apt install -yq mariadb-server"
_error_detect "systemctl start mariadb"
_error_detect "systemctl enable mariadb"
_info "MariaDB安装完成"
}
configure_database() {
database_name="mymariadb"
mysql_password=$(generate_random_password)
db_root_password="${mysql_password}"
# 设置 root 密码
_error_detect "mysql -e \"ALTER USER 'root'@'localhost' IDENTIFIED BY '${db_root_password}';\""
cat >/tmp/.add_mysql.sql<<EOF
CREATE USER '${database_name}'@'localhost' IDENTIFIED BY '${mysql_password}';
CREATE USER '${database_name}'@'127.0.0.1' IDENTIFIED BY '${mysql_password}';
GRANT USAGE ON *.* TO '${database_name}'@'localhost' IDENTIFIED BY '${mysql_password}';
GRANT USAGE ON *.* TO '${database_name}'@'127.0.0.1' IDENTIFIED BY '${mysql_password}';
CREATE DATABASE IF NOT EXISTS ${database_name};
GRANT ALL PRIVILEGES ON ${database_name}.* TO '${database_name}'@'localhost';
GRANT ALL PRIVILEGES ON ${database_name}.* TO '${database_name}'@'127.0.0.1';
FLUSH PRIVILEGES;
EOF
if mysql -uroot -p"${db_root_password}" < /tmp/.add_mysql.sql; then
_info "数据库 ${database_name} 创建成功"
else
_error "数据库 ${database_name} 创建失败"
fi
rm -f /tmp/.add_mysql.sql
}
print_db_info() {
_info "数据库信息:"
_info "数据库名称:${database_name}"
_info "数据库用户:${database_name}"
_info "数据库密码:${mysql_password}"
_info "MariaDB root 密码:${db_root_password}"
_info "请妥善保管以上信息"
}
_info "MariaDB 安装脚本开始执行"
install_mariadb
configure_database
print_db_info
_info "MariaDB安装、配置和数据库创建已完成"

74
web/php.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
# 检查apt源配置目录
if [ ! -d /etc/apt/sources.list.d/ ]; then
mkdir -p /etc/apt/sources.list.d/
fi
# 检查操作系统并设置 PHP 仓库
if grep -Eqi "debian" /etc/issue || grep -Eqi "debian" /proc/version; then
OS="debian"
# Debian 系统设置 PHP 仓库
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
elif grep -Eqi "ubuntu" /etc/issue || grep -Eqi "ubuntu" /proc/version; then
OS="ubuntu"
# Ubuntu 系统设置 PHP PPA
sudo apt update -q
sudo apt install -yq software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
else
echo "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。"
exit 1
fi
# 更新源列表并安装必要的软件包
sudo apt update -q
sudo apt install -yq mariadb-server php8.1 php8.1-mysql php8.1-fpm php8.1-curl php8.1-cgi php8.1-mbstring \
php8.1-xml php8.1-gd php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-opcache php8.1-zip unzip socat
# 获取 PHP 版本信息
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
PHP_INI_FILE="/etc/php/${PHP_VERSION}/fpm/php.ini"
OPCACHE_FILE_CACHE_DIR="/var/cache/opcache"
# 创建 OPcache 缓存目录并设置权限
if [ ! -d "$OPCACHE_FILE_CACHE_DIR" ]; then
echo -e "\033[32m创建 OPcache 缓存目录...\033[0m"
sudo mkdir -p "$OPCACHE_FILE_CACHE_DIR"
sudo chown -R www-data:www-data "$OPCACHE_FILE_CACHE_DIR"
fi
# 配置 OPcache
if ! grep -q "^opcache.enable=1" "$PHP_INI_FILE"; then
echo -e "\033[32m启用 OPcache 扩展...请稍等...\033[0m"
sudo tee -a "$PHP_INI_FILE" > /dev/null <<EOL
[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=5000
opcache.revalidate_freq=5
opcache.save_comments=1
opcache.file_cache=${OPCACHE_FILE_CACHE_DIR}
opcache.file_cache_size=128
opcache.file_cache_only=0
opcache.file_cache_consistency_checks=1
EOL
fi
# 设置时区
TIMEZONE="Asia/Shanghai"
# 更新或添加 date.timezone 配置
if grep -q "^date.timezone" "$PHP_INI_FILE"; then
sudo sed -i "s#^date.timezone.*#date.timezone = $TIMEZONE#g" "$PHP_INI_FILE"
else
echo -e "\033[32m设置 date.timezone 为 $TIMEZONE...\033[0m"
echo "date.timezone = $TIMEZONE" | sudo tee -a "$PHP_INI_FILE" > /dev/null
fi
# 重启 PHP-FPM 服务
sudo systemctl restart php${PHP_VERSION}-fpm
echo -e "\033[32mPHP 配置已更新并重启 PHP-FPM 服务。\033[0m"

136
web/wp.sh Normal file
View File

@@ -0,0 +1,136 @@
#!/bin/bash
# 一键部署WordPress脚本
# 项目地址https://github.com/sky22333/shell
# 检查是否已经安装 WordPress
if [ -d "/var/www/html/wordpress" ]; then
echo -e "\033[32m检测到 WordPress 已经安装。\033[0m"
echo -e "\033[33m如需重新安装请删除站点文件/var/www/html/wordpress 并做好相关备份。\033[0m"
exit 0
fi
while true; do
echo -e "\033[33m请输入您的域名(确保已经解析到本机): \033[0m"
read DOMAIN
echo -e "\033[32m您输入的域名是: $DOMAIN\033[0m"
echo -e "\033[33m为防止输错请核对域名是否正确 (yes/no直接回车代表正确): \033[0m"
read CONFIRM
# 如果用户按回车,则默认为确认
if [[ -z "${CONFIRM// }" ]]; then
CONFIRM="yes"
fi
if [[ "${CONFIRM,,}" == "yes" || "${CONFIRM,,}" == "y" ]]; then
echo -e "\033[32m域名确认成功: $DOMAIN\033[0m"
break
else
echo -e "\033[31m请重新输入域名。\033[0m"
fi
done
echo -e "\033[32m更新系统包...首次更新可能较慢...请耐心等待。。。\033[0m"
sudo apt-get update -yq
echo -e "\033[32m安装必要的软件包...首次安装可能较慢...请耐心等待。。。\033[0m"
sudo apt-get install -y -q mariadb-server php php-mysql php-fpm php-curl php-json php-cgi php-mbstring php-xml php-gd php-xmlrpc php-soap php-intl php-opcache php-zip wget unzip
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation <<EOF
y
y
y
y
y
EOF
# 项目地址https://github.com/sky22333/shell
# 创建WordPress数据库和用户
DB_NAME="wordpress"
DB_USER="wpuser"
DB_PASSWORD=$(openssl rand -base64 12)
sudo mysql -u root -e "DROP USER IF EXISTS '${DB_USER}'@'localhost';"
sudo mysql -u root -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -u root -e "CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';"
sudo mysql -u root -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';"
sudo mysql -u root -e "FLUSH PRIVILEGES;"
# 下载并配置WordPress
mkdir -p /var/www/html
cd /var/www/html
wget https://zh-cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzvf latest-zh_CN.tar.gz > /dev/null 2>&1
rm latest-zh_CN.tar.gz
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 640 {} \;
if [ ! -d /etc/apt/sources.list.d/ ]; then
sudo mkdir -p /etc/apt/sources.list.d/
fi
sudo apt install -y -q debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update -yq
sudo apt install -y -q caddy
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
OPCACHE_FILE_CACHE_DIR="/var/www/html/wordpress/wp-content/opcache"
sudo mkdir -p $OPCACHE_FILE_CACHE_DIR
sudo chown www-data:www-data $OPCACHE_FILE_CACHE_DIR
# 配置OPcache
sudo bash -c "cat > /etc/php/${PHP_VERSION}/fpm/conf.d/10-opcache.ini" <<EOF
[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=9000
opcache.revalidate_freq=5
opcache.save_comments=1
opcache.file_cache=${OPCACHE_FILE_CACHE_DIR}
opcache.file_cache_size=128
opcache.file_cache_only=0
opcache.file_cache_consistency_checks=1
EOF
# 重启PHP-FPM服务
sudo systemctl restart php${PHP_VERSION}-fpm
if systemctl is-active --quiet apache2; then
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo apt remove --purge apache2 -y
else
echo -e "当前环境是正常状态。"
fi
sudo bash -c "cat > /etc/caddy/Caddyfile" <<EOF
$DOMAIN {
root * /var/www/html/wordpress
encode zstd gzip
php_fastcgi unix//run/php/php${PHP_VERSION}-fpm.sock
file_server
}
EOF
sudo systemctl restart caddy
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[32m 数据库信息: \033[0m"
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[33m数据库名: \033[36m${DB_NAME}\033[0m"
echo -e "\033[33m用户名: \033[36m${DB_USER}\033[0m"
echo -e "\033[33m密码: \033[36m${DB_PASSWORD}\033[0m"
echo -e "\033[32m============================================================\033[0m"
echo -e "\033[32m站点域名: \033[36m${DOMAIN}\033[0m"
echo -e "\033[32m网站后台: \033[36m${DOMAIN}/wp-admin\033[0m"
echo -e "\033[32m您的 WordPress 站点已经部署完成,请记录好相关信息。\033[0m"
echo -e "\033[32m============================================================\033[0m"