#!/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 ""