From 8d14d8f49b860a92786074d55eb297625e52f8d7 Mon Sep 17 00:00:00 2001 From: NewName Date: Sat, 17 Aug 2024 14:53:17 +0800 Subject: [PATCH] Create acgfaka.sh --- acgfaka.sh | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 acgfaka.sh diff --git a/acgfaka.sh b/acgfaka.sh new file mode 100644 index 0000000..3c9168e --- /dev/null +++ b/acgfaka.sh @@ -0,0 +1,217 @@ +#!/bin/bash +# 一键部署异次元发卡脚本 + +# 检查是否已经安装 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 [[ "${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 -q +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 apache2 socat curl + +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 < /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 {} \; + +# 配置 Apache 虚拟主机 +APACHE_CONF="/etc/apache2/sites-available/acgfaka.conf" +sudo tee $APACHE_CONF > /dev/null < + ServerName $DOMAIN + DocumentRoot /var/www/html/acgfaka + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + +EOL + +sudo systemctl stop apache2 + +generate_random_email() { + local prefix=$(tr -dc A-Za-z0-9 /dev/null; then + echo -e "\033[0;32macme.sh 未安装,正在安装...\033[0m" + curl https://get.acme.sh | sh + source ~/.bashrc + else + echo -e "\033[0;32macme.sh 已安装\033[0m" + fi + + local email=$(generate_random_email) + echo -e "\033[0;32m使用随机生成的邮箱地址 $email 进行账户注册...\033[0m" + + # 注册账户并设置电子邮件地址 + ~/.acme.sh/acme.sh --register-account -m "$email" + + ~/.acme.sh/acme.sh --issue --force --standalone -d "$DOMAIN" + + if [ $? -ne 0 ]; then + echo -e "\033[0;31mSSL 证书生成失败\033[0m" + exit 1 + fi + + local cert_path="/root/.acme.sh/${DOMAIN}_ecc/fullchain.cer" + local key_path="/root/.acme.sh/${DOMAIN}_ecc/${DOMAIN}.key" + + ~/.acme.sh/acme.sh --install-cert -d "$DOMAIN" \ + --key-file "$key_path" \ + --fullchain-file "$cert_path" + + # 配置 Apache 使用 SSL 证书 + APACHE_SSL_CONF="/etc/apache2/sites-available/acgfaka-ssl.conf" + sudo tee $APACHE_SSL_CONF > /dev/null < + ServerName $DOMAIN + DocumentRoot /var/www/html/acgfaka + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + SSLEngine on + SSLCertificateFile $cert_path + SSLCertificateKeyFile $key_path + +EOL + + # 启用 Apache 的 mod_rewrite 模块 + sudo a2enmod rewrite + + # 启用 SSL 模块 + sudo a2enmod ssl + + # 启用 HTTP 站点配置 + sudo a2ensite acgfaka.conf + + # 启用 HTTPS 站点配置 + sudo a2ensite acgfaka-ssl.conf + + # 重启 Apache 配置 + sudo systemctl restart apache2 + + echo -e "\033[0;32m证书路径: $cert_path\033[0m" + echo -e "\033[0;32m密钥路径: $key_path\033[0m" +} + +generate_ssl_certificate + +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"