Loading... # 使用方式 > **注意前提:本脚本需要你对于服务器有 shell 登录权限。使用云空间(仅能修改 php 文件)、Serverless 等无法使用** 1. 将后文脚本保存到一个 shell 文件内。例如复制代码,运行 `cat > install_handsome.sh`,之后粘贴,回车换行,Ctrl+D 输入终止符。(或者使用任何一个熟悉的编辑器如 `vim`, `emacs`, `nano` 都可以) 2. 运行 `chmod +x install_handsome.sh` 为脚本添加执行权限 3. 通过任意方式将 handsome 主题上传到服务器内([官方下载地址(需登录)](https://auth.ihewro.com/support/index.html)) 4. 运行例如 `./install_theme.sh /tmp/handsome-va.b.c.zip` ```shell 使用的临时目录: /tmp/tmp.XApzDjJjOQ 文件解压完成,日志记录在 /tmp/tmp.XApzDjJjOQ/unzip.log 插件备份成功 主题备份成功 插件移动成功 主题移动成功 文件所有权更改为 www:www 请验证网站是否正常运行。 网站是否正常运行? (yes/no): ``` 所有的临时文件都在第一行写的临时目录 `/tmp/tmp.XXXXXXXXX` 内。具体来说 `backup/ handsome-va.b.c.zip* unzip.log 主题/ 插件/ 浏览器插件/` - `handsome-va.b.c.zip`:主题上传的压缩包 - `主题/`, `插件/`, `浏览器插件` :压缩包解压后的内容 - `backup`:在将 主题、插件 两个目录移动到 Typecho 目录之前,备份的原来的主题和插件目录。里面的 `Handsome` 是插件,`handsome` 是主题(因为本来就按大小写区分了,就没建子目录) 提示 `网站是否正常运行? (yes/no):` 后 - **选择 `yes`** ```shell `网站是否正常运行? (yes/no): yes 临时目录已删除。 请删除上传的主题 zip 文件:rm /tmp/handsome-va.b.c.zip ``` 会自动将临时目录删除,然后你可以自行决定是否删除上传的 `zip` 文件是否保留。(比如有多个站点,需要调试脚本等。正常情况下,更新完就可以删掉上传的压缩包了) 脚本不需要删除,一次配置好之后随时能用 - **选择 `no`** ```shell 网站是否正常运行? (yes/no): no 插件回滚成功 主题回滚成功 网站运行不正常,已尝试回滚。 ``` 将会把临时目录里面 `backup` 目录备份的主题和插件进行还原 # 脚本内容 ```shell #!/bin/bash SITE_PATH="/www/wwwroot/b.zsh.dev" # 网站的根路径,即 typecho index.php 所在的位置 # 定义变量 USER_GROUP="www:www" # web 服务器使用的用户和用户组 TEMP_DIR="/tmp" # 解压、备份等使用的临时目录 # 检查是否提供了文件名参数 if [ -z "$1" ]; then echo "Usage: $0 ZIP_FILENAME" exit 1 fi # 接受文件名参数 FILENAME="$1" RAND_DIR=$(mktemp -d -p $TEMP_DIR) # 打印随机目录 echo "使用的临时目录: $RAND_DIR" # 创建备份目录 BACKUP_DIR="$RAND_DIR/backup" mkdir -p $BACKUP_DIR # 复制文件到临时目录 cp "$FILENAME" "$RAND_DIR" # 解压缩文件 cd "$RAND_DIR" || exit unzip "$FILENAME" > "$RAND_DIR/unzip.log" echo "文件解压完成,日志记录在 $RAND_DIR/unzip.log" # 备份现有的插件和主题,允许失败并继续执行 mv -f "$SITE_PATH/usr/plugins/Handsome" "$BACKUP_DIR/" && echo "插件备份成功" || echo "备份插件失败,继续执行..." mv -f "$SITE_PATH/usr/themes/handsome" "$BACKUP_DIR/" && echo "主题备份成功" || echo "备份主题失败,继续执行..." # 移动新的插件和主题到目标路径 mv "插件/Handsome" "$SITE_PATH/usr/plugins" && echo "插件移动成功" || echo "插件移动失败" mv "主题/handsome" "$SITE_PATH/usr/themes" && echo "主题移动成功" || echo "主题移动失败" # 更改所有权 chown -R "$USER_GROUP" "$SITE_PATH/usr/plugins" chown -R "$USER_GROUP" "$SITE_PATH/usr/themes" echo "文件所有权更改为 $USER_GROUP" # 提醒用户验证 echo "请验证网站是否正常运行。" read -p "网站是否正常运行? (yes/no): " response if [ "$response" = "yes" ]; then # 删除临时目录并提醒删除上传的主题 zip rm -rf "$RAND_DIR" echo "临时目录已删除。" ZIP_PATH=$(realpath $FILENAME) echo "请删除上传的主题 zip 文件:rm $ZIP_PATH" else # 清空目标目录内容 rm -rf "$SITE_PATH/usr/plugins/Handsome" rm -rf "$SITE_PATH/usr/themes/handsome" # 回滚操作 mv -f "$BACKUP_DIR/Handsome" "$SITE_PATH/usr/plugins/" && echo "插件回滚成功" || echo "回滚插件失败..." mv -f "$BACKUP_DIR/handsome" "$SITE_PATH/usr/themes/" && echo "主题回滚成功" || echo "回滚主题失败..." echo "网站运行不正常,已尝试回滚。" fi ``` 最后修改:2024 年 07 月 21 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏