Files
shell/wp.sh
2024-08-17 10:48:25 +08:00

137 lines
4.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 一键部署WordPress脚本
# 检查是否已经安装 WordPress
if [ -f "/var/www/html/wordpress/wp-config.php" ]; then
echo -e "\033[32mWordPress 已经安装。\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 [[ "${CONFIRM,,}" == "yes" || "${CONFIRM,,}" == "y" ]]; then
echo -e "\033[32m域名确认成功: $DOMAIN\033[0m"
break
else
echo -e "\033[31m请重新输入域名。\033[0m"
fi
done
# 判断操作系统类型
if [ -f /etc/debian_version ]; then
DISTRO=$(lsb_release -is)
if [ "$DISTRO" = "Ubuntu" ]; then
# Ubuntu 系统
echo -e "\033[32m检测到 Ubuntu 系统\033[0m"
# 更新系统包
echo -e "\033[32m更新系统包...首次更新可能较慢...请耐心等待。。。\033[0m"
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update -q
# 安装必要的软件包
echo -e "\033[32m安装必要的软件包...首次安装可能较慢...请耐心等待。。。\033[0m"
sudo apt install -y -q mariadb-server php8.0 php8.0-mysql php8.0-fpm php8.0-curl php8.0-json php8.0-cgi php8.0-mbstring php8.0-xml php8.0-gd php8.0-xmlrpc php8.0-soap php8.0-intl php8.0-zip wget unzip
elif [ "$DISTRO" = "Debian" ]; then
# Debian 系统
echo -e "\033[32m检测到 Debian 系统\033[0m"
# 更新系统包
echo -e "\033[32m更新系统包...首次更新可能较慢...请耐心等待。。。\033[0m"
sudo apt-get install -y gnupg2
curl -fsSL https://packages.sury.org/php/apt.gpg | sudo apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update -q
# 安装必要的软件包
echo -e "\033[32m安装必要的软件包...首次安装可能较慢...请耐心等待。。。\033[0m"
sudo apt install -y -q mariadb-server php8.0 php8.0-mysql php8.0-fpm php8.0-curl php8.0-json php8.0-cgi php8.0-mbstring php8.0-xml php8.0-gd php8.0-xmlrpc php8.0-soap php8.0-intl php8.0-zip wget unzip
else
echo -e "\033[31m不支持的操作系统$DISTRO\033[0m"
exit 1
fi
else
echo -e "\033[31m未能检测到 Debian 或 Ubuntu 系统\033[0m"
exit 1
fi
# 启动并启用MariaDB
sudo systemctl start mariadb
sudo systemctl enable mariadb
# MariaDB安全设置
sudo mysql_secure_installation <<EOF
y
y
y
y
y
EOF
# 创建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 {} \;
# 安装Caddy
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 -q
sudo apt install -y -q caddy
# 配置Caddy
sudo bash -c "cat > /etc/caddy/Caddyfile" <<EOF
$DOMAIN {
root * /var/www/html/wordpress
encode zstd gzip
php_fastcgi unix//run/php/php8.0-fpm.sock
file_server
}
EOF
# 启动Caddy
sudo systemctl restart caddy
# 绿色字体打印数据库信息
echo -e "\033[32m数据库信息: \033[0m"
echo -e "\033[32m数据库名: ${DB_NAME}\033[0m"
echo -e "\033[32m用户名: ${DB_USER}\033[0m"
echo -e "\033[32m密码: ${DB_PASSWORD}\033[0m"
echo -e "\033[32m您的wordpress站点已经部署完成请记录好相关信息。\033[0m"