Files
blog/write-server/scripts/install.sh
T

125 lines
3.0 KiB
Bash
Raw Normal View History

2026-06-21 20:42:44 +08:00
#!/bin/bash
# Write Server 安装脚本
# 用于在 Linux 服务器上安装所有依赖
set -e
echo "==================================="
echo " Write Server 安装脚本"
echo "==================================="
# 检测操作系统
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VER=$VERSION_ID
else
echo "无法检测操作系统类型"
exit 1
fi
echo "检测到操作系统: $OS $VER"
# 更新系统包
echo ""
echo "1. 更新系统包..."
if [ "$OS" = "ubuntu" ] || [ "$OS" = "debian" ]; then
sudo apt-get update
sudo apt-get upgrade -y
elif [ "$OS" = "centos" ] || [ "$OS" = "rhel" ] || [ "$OS" = "fedora" ]; then
sudo yum update -y
fi
# 安装基础依赖
echo ""
echo "2. 安装基础依赖..."
if [ "$OS" = "ubuntu" ] || [ "$OS" = "debian" ]; then
sudo apt-get install -y curl wget git build-essential
elif [ "$OS" = "centos" ] || [ "$OS" = "rhel" ] || [ "$OS" = "fedora" ]; then
sudo yum install -y curl wget git gcc-c++ make
fi
# 安装 Node.js 20
echo ""
echo "3. 安装 Node.js 20..."
if ! command -v node &> /dev/null; then
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
if [ "$OS" = "ubuntu" ] || [ "$OS" = "debian" ]; then
sudo apt-get install -y nodejs
elif [ "$OS" = "centos" ] || [ "$OS" = "rhel" ] || [ "$OS" = "fedora" ]; then
sudo yum install -y nodejs
fi
else
echo "Node.js 已安装: $(node --version)"
fi
# 验证 Node.js 安装
echo "Node.js 版本: $(node --version)"
echo "npm 版本: $(npm --version)"
# 安装 Hugo
echo ""
echo "4. 安装 Hugo..."
if ! command -v hugo &> /dev/null; then
HUGO_VERSION="0.128.2"
HUGO_URL="https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
wget -O /tmp/hugo.tar.gz "$HUGO_URL"
tar -xzf /tmp/hugo.tar.gz -C /tmp
sudo mv /tmp/hugo /usr/local/bin/
rm /tmp/hugo.tar.gz
else
echo "Hugo 已安装: $(hugo version)"
fi
# 验证 Hugo 安装
echo "Hugo 版本: $(hugo version | head -n 1)"
# 安装 PM2(进程管理器)
echo ""
echo "5. 安装 PM2..."
if ! command -v pm2 &> /dev/null; then
sudo npm install -g pm2
else
echo "PM2 已安装: $(pm2 --version)"
fi
# 创建必要的目录
echo ""
echo "6. 创建必要的目录..."
mkdir -p logs backups recycle
# 安装项目依赖
echo ""
echo "7. 安装项目依赖..."
npm install
# 构建项目
echo ""
echo "8. 构建项目..."
npm run build
# 创建日志目录
echo ""
echo "9. 配置日志..."
mkdir -p logs
echo ""
echo "==================================="
echo " 安装完成!"
echo "==================================="
echo ""
echo "下一步操作:"
echo "1. 配置环境变量:"
echo " cp .env.example .env"
echo " nano .env"
echo ""
echo "2. 启动服务:"
echo " ./scripts/start.sh"
echo ""
echo "3. 设置开机自启(可选):"
echo " sudo ./scripts/setup-service.sh"
echo ""
echo "4. 配置 Nginx 反向代理(可选):"
echo " 参考 nginx/nginx.conf"
echo ""