重装系统 推荐系统:Ubuntu 22.04 LTS 或 CentOS 7/8 Stream 不要保留旧数据!
更新系统 & 设置时区
# Ubuntu
# 自动回答“保留旧配置”或使用默认策略,不卡住
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
# CentOS
sudo yum update -y
sudo timedatectl set-timezone Asia/Shanghai
- 创建非 root 用户(禁用 root 登录)这个使用宝塔的root+密匙也可以。新建用户配置麻烦。
adduser hugo # 按提示设密码
usermod -aG sudo hugo # Ubuntu
# usermod -aG wheel hugo # CentOS
# 切换到新用户
su - hugo
然后记得安装BBR网络加速
wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh
- 安装宝塔(仅 Nginx)这去官网自己去安装,安装完之后,记得禁用 root 登录。
把宝塔的登录安全设置都设置好,
- 安装 Node.js 20.x(用于运行采集脚本)
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install -y nodejs
node -v → 应输出 v20.x.x
npm -v → 应输出 10.x.x
- 安装 Hugo v0.154 Extended(Linux 64位)
wget https://github.com/gohugoio/hugo/releases/download/v0.154.0/hugo_extended_0.154.0_linux-amd64.tar.gz
tar -xzf hugo_extended_0.154.0_linux-amd64.tar.gz
sudo mv hugo /usr/local/bin/
rm hugo_extended_0.154.0_linux-amd64.tar.gz
hugo version → 应输出 hugo v0.154.0-... extended
- 然后创建hugo文件夹,建议在home目录下,根据自己创建你的站点文件夹,然后在宝塔目录指向就 可以了。
# 1. 创建项目目录(在 /home 下)
mkdir -p /home/hugo-drama
# 2. 设置所有权(虽然 root 默认就有权限,显式设置更规范)
chown root:root /home/hugo-drama
# 3. 进入目录
cd /home/hugo-drama
# 4. 上传你的 Hugo 项目(通过 SFTP 或 git clone)
# 包含:config.toml, content/, scripts/, static/ 等
# 5. 安装 Node.js 依赖(如果用了 pinyin 等)
npm install
- 把hugo源码目录上传到新建的目录,删除里面的.user.ini文件,需要执行以下命令删除
# 取消不可变属性
# 1. 进入站点目录
cd /www/wwwroot/你的站点目录
# 2. 查看文件属性(通常有i属性,不可更改)
lsattr .user.ini
# 3. 如果显示有'i'属性,需要先取消
chattr -i .user.ini
# 4. 删除文件
rm -f .user.ini
# 5. 可选:删除其他可能的锁定文件
chattr -i .htaccess 2>/dev/null
批量删除所有站点的.user.ini文件
# 查找并显示所有.user.ini文件
find /www/wwwroot -name ".user.ini" -type f
# 批量取消属性并删除
find /www/wwwroot -name ".user.ini" -exec chattr -i {} \;
find /www/wwwroot -name ".user.ini" -exec rm -f {} \;
- 安装 pypinyin 库以支持采集回来的自动转为拼音这是个python库,如果是node.js采集就需要安装其他依赖。
请立即运行以下命令安装全部依赖:
npm install axios fs-extra date-fns pinyin slugify
虽然 pinyin 已存在,但再装一次也没问题,npm 会自动去重。
验证成功:ls node_modules | grep -E 'axios|fs-extra|date-fns|slugify'
你当前的 package.json 是自动生成的,内容没问题。
后续如果想清理或重装依赖,可以:
# 删除依赖
rm -rf node_modules package-lock.json
# 重新安装
npm install axios fs-extra date-fns pinyin slugify
以下是python库pinyin的安装方法
pip3: command not found,先装 pip:
sudo apt update
sudo apt install -y python3-pip
pip3 install pypinyin
这时候会提示错误,需要安装使用虚拟环境(最推荐)
安装 python3-venv(如果还没装)
sudo apt update
sudo apt install -y python3-venv
cd /home/hugo-yutuq
python3 -m venv .pyenv
这会在 /home/hugo-yutuq/.pyenv/ 下创建独立 Python 环境
激活虚拟环境并安装 pypinyin
source .pyenv/bin/activate
pip install pypinyin
输出应类似:Successfully installed pypinyin-0.50.0 ...
验证安装:python -c "from pypinyin import lazy_pinyin; print(lazy_pinyin('末日逃生'))"
→ 应输出 ['mo', 'ri', 'tao', 'sheng']
- 安装JQ(用于解析 JSON)解决方案:立即安装 jq
# 查看 jq 版本
jq --version
# 在新、旧服务器都运行:
echo '{"list":[]}' | jq empty
如果新服务器报错而旧的不报 → 就是 jq 问题。
安装jq:
sudo apt update
sudo apt install -y jq
验证:jq --version # 应输出 jq-1.6 或类似
再次运行采集脚本就正常了
./sync-from-api.sh --type 6 --limit 5
安装宝塔,配置环境
- 安装完宝塔之后只需要安装nginx即可,其他不需要。
写个采集脚本执行定时任务
# 每天凌晨 2 点同步最近 7 天的新剧
0 2 * * * /home/ubuntu/movie-site/sync-from-api.sh --last-days 7
都按完记得按个插件 实现方案:用 pypinyin 自动生成拼音 slug
第一步:安装 pypinyin(只需一次)
pip3 install pypinyin
如果没有 pip3,先装 Python3:
sudo apt update && sudo apt install -y python3-pip
新服务器记得安装jq
你的采集脚本 sync-from-api.sh 里调用了 Python,所以运行脚本时必须保持虚拟环境激活,或者在脚本内部自动激活。
先取消不可变属性
chattr -i /home/hugo-yutuq/public/.user.ini
再删除
rm -f /home/hugo-yutuq/public/.user.ini