126 lines
3.0 KiB
Bash
126 lines
3.0 KiB
Bash
#!/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 ""
|