109 lines
2.6 KiB
Bash
109 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# Write Server systemd 服务配置脚本
|
|
# 将 Write Server 设置为系统服务,支持开机自启
|
|
|
|
set -e
|
|
|
|
echo "==================================="
|
|
echo " Write Server 服务配置脚本"
|
|
echo "==================================="
|
|
|
|
# 检查是否为 root 用户
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "错误: 请使用 sudo 运行此脚本"
|
|
exit 1
|
|
fi
|
|
|
|
# 获取当前用户和目录
|
|
CURRENT_USER=$(whoami)
|
|
CURRENT_DIR=$(pwd)
|
|
SERVICE_FILE="/etc/systemd/system/write-server.service"
|
|
|
|
echo "当前用户: $CURRENT_USER"
|
|
echo "项目目录: $CURRENT_DIR"
|
|
|
|
# 检查 .env 文件
|
|
if [ ! -f .env ]; then
|
|
echo "错误: 未找到 .env 文件"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建 systemd 服务文件
|
|
echo "创建 systemd 服务文件..."
|
|
cat > "$SERVICE_FILE" << EOF
|
|
[Unit]
|
|
Description=Write Server - Hugo Blog Admin
|
|
Documentation=https://github.com/your-repo/write-server
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$CURRENT_USER
|
|
Group=$CURRENT_USER
|
|
WorkingDirectory=$CURRENT_DIR
|
|
Environment=NODE_ENV=production
|
|
Environment=PORT=8016
|
|
EnvironmentFile=$CURRENT_DIR/.env
|
|
ExecStart=/usr/bin/node $CURRENT_DIR/.next/standalone/server.js
|
|
ExecReload=/bin/kill -HUP \$MAINPID
|
|
Restart=always
|
|
RestartSec=10
|
|
StandardOutput=append:$CURRENT_DIR/logs/app.log
|
|
StandardError=append:$CURRENT_DIR/logs/app.log
|
|
|
|
# 安全限制
|
|
NoNewPrivileges=true
|
|
ProtectSystem=strict
|
|
ProtectHome=true
|
|
ReadWritePaths=$CURRENT_DIR
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# 设置权限
|
|
chmod 644 "$SERVICE_FILE"
|
|
|
|
# 重新加载 systemd 配置
|
|
echo "重新加载 systemd 配置..."
|
|
systemctl daemon-reload
|
|
|
|
# 启用服务
|
|
echo "启用服务..."
|
|
systemctl enable write-server
|
|
|
|
# 启动服务
|
|
echo "启动服务..."
|
|
systemctl start write-server
|
|
|
|
# 等待服务启动
|
|
sleep 3
|
|
|
|
# 检查服务状态
|
|
if systemctl is-active --quiet write-server; then
|
|
echo ""
|
|
echo "==================================="
|
|
echo " 服务配置成功!"
|
|
echo "==================================="
|
|
echo ""
|
|
echo "服务已启动并设置为开机自启"
|
|
echo ""
|
|
echo "管理命令:"
|
|
echo " 查看状态: sudo systemctl status write-server"
|
|
echo " 查看日志: sudo journalctl -u write-server -f"
|
|
echo " 重启服务: sudo systemctl restart write-server"
|
|
echo " 停止服务: sudo systemctl stop write-server"
|
|
echo " 禁用自启: sudo systemctl disable write-server"
|
|
echo ""
|
|
else
|
|
echo ""
|
|
echo "==================================="
|
|
echo " 服务启动失败!"
|
|
echo "==================================="
|
|
echo ""
|
|
echo "请查看日志:"
|
|
echo " sudo journalctl -u write-server -n 50"
|
|
echo ""
|
|
exit 1
|
|
fi
|