后端版本服务器部署成功

This commit is contained in:
2025-09-11 15:05:23 +08:00
parent 9b7a0482e1
commit 068b7887a9
15 changed files with 575 additions and 410 deletions

View File

@@ -1,278 +0,0 @@
#!/bin/bash
# 结伴客后端服务启动脚本 - 在CentOS服务器上运行
# 使用PM2管理Node.js应用
# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 配置参数
APP_DIR="$(pwd)"
NODE_ENV=${NODE_ENV:-"production"}
PORT=${PORT:-"3200"}
# 检查Node.js环境
check_node() {
if ! command -v node &> /dev/null; then
echo -e "${RED}错误Node.js环境未安装${NC}"
echo -e "${YELLOW}请先安装Node.js: curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash - && sudo yum install -y nodejs${NC}"
exit 1
fi
echo -e "${GREEN}Node.js版本: $(node -v)${NC}"
}
# 检查PM2是否安装
check_pm2() {
if ! command -v pm2 &> /dev/null; then
echo -e "${YELLOW}PM2未安装正在全局安装...${NC}"
npm install -g pm2
if [ $? -ne 0 ]; then
echo -e "${RED}PM2安装失败${NC}"
exit 1
fi
fi
echo -e "${GREEN}PM2版本: $(pm2 -v)${NC}"
}
# 检查环境变量文件
check_env() {
if [ ! -f "$APP_DIR/.env" ]; then
echo -e "${RED}错误:未找到.env文件${NC}"
echo -e "${YELLOW}请确保.env文件已正确配置包含必要的数据库连接信息和其他配置。${NC}"
exit 1
fi
echo -e "${GREEN}已找到.env文件${NC}"
}
# 检查ecosystem.config.js文件
check_ecosystem() {
if [ ! -f "$APP_DIR/ecosystem.config.js" ]; then
echo -e "${YELLOW}未找到ecosystem.config.js文件正在创建默认配置...${NC}"
cat > "$APP_DIR/ecosystem.config.js" << EOF
module.exports = {
apps: [{
name: 'jiebanke-backend',
script: './src/server.js',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'development',
PORT: $PORT,
WATCH: true
},
env_production: {
NODE_ENV: 'production',
PORT: $PORT,
WATCH: false
},
log_file: '$APP_DIR/logs/combined.log',
out_file: '$APP_DIR/logs/out.log',
error_file: '$APP_DIR/logs/error.log',
max_memory_restart: '1G',
kill_timeout: 3000,
wait_ready: true,
listen_timeout: 3000,
autorestart: true,
max_restarts: 10,
restart_delay: 4000,
ignore_watch: [
'node_modules',
'logs',
'.git',
'uploads'
]
}]
};
EOF
echo -e "${GREEN}ecosystem.config.js文件已创建${NC}"
fi
}
# 安装依赖
install_dependencies() {
echo -e "${BLUE}正在安装生产依赖...${NC}"
cd "$APP_DIR"
npm install --production
if [ $? -ne 0 ]; then
echo -e "${RED}依赖安装失败!${NC}"
exit 1
fi
echo -e "${GREEN}依赖安装完成!${NC}"
}
# 创建日志和上传目录
create_directories() {
echo -e "${BLUE}正在创建必要的目录...${NC}"
mkdir -p "$APP_DIR/logs" "$APP_DIR/uploads"
chmod 755 "$APP_DIR/logs" "$APP_DIR/uploads"
echo -e "${GREEN}目录创建完成!${NC}"
}
# 启动服务
start_service() {
echo -e "${BLUE}正在使用PM2启动结伴客后端服务...${NC}"
cd "$APP_DIR"
# 设置NODE_ENV环境变量
export NODE_ENV=$NODE_ENV
# 使用PM2启动应用
pm2 start ecosystem.config.js --env $NODE_ENV
if [ $? -ne 0 ]; then
echo -e "${RED}服务启动失败!${NC}"
exit 1
fi
echo -e "${GREEN}服务启动成功!${NC}"
echo -e "${BLUE}应用名称: jiebanke-backend${NC}"
echo -e "${BLUE}环境: $NODE_ENV${NC}"
echo -e "${BLUE}端口: $PORT${NC}"
echo -e "${YELLOW}提示:使用 pm2 logs jiebanke-backend 查看日志${NC}"
echo -e "${YELLOW}提示:使用 pm2 monit 监控应用状态${NC}"
}
# 设置PM2开机自启
setup_autostart() {
echo -e "${BLUE}正在配置PM2开机自启...${NC}"
pm2 startup
if [ $? -ne 0 ]; then
echo -e "${RED}PM2开机自启配置失败${NC}"
else
pm2 save
echo -e "${GREEN}PM2开机自启配置完成${NC}"
fi
}
# 显示帮助信息
show_help() {
echo ""
echo "结伴客后端服务管理脚本"
echo ""
echo "用法: $0 [命令] [环境]"
echo ""
echo "命令选项:"
echo " start - 启动服务(默认)"
echo " stop - 停止服务"
echo " restart - 重启服务"
echo " status - 查看服务状态"
echo " logs - 查看服务日志"
echo " install - 仅安装依赖"
echo " setup - 配置PM2开机自启"
echo " help - 显示此帮助信息"
echo ""
echo "环境选项:"
echo " production - 生产环境(默认)"
echo " development - 开发环境"
echo " test - 测试环境"
echo ""
echo "示例:"
echo " $0 start production # 在生产环境启动服务"
echo " $0 restart development # 在开发环境重启服务"
echo " $0 logs # 查看服务日志"
echo ""
}
# 停止服务
stop_service() {
echo -e "${BLUE}正在停止结伴客后端服务...${NC}"
pm2 stop jiebanke-backend
if [ $? -ne 0 ]; then
echo -e "${YELLOW}服务可能未在运行!${NC}"
else
echo -e "${GREEN}服务已停止!${NC}"
fi
}
# 重启服务
restart_service() {
echo -e "${BLUE}正在重启结伴客后端服务...${NC}"
export NODE_ENV=$NODE_ENV
pm2 restart ecosystem.config.js --env $NODE_ENV
if [ $? -ne 0 ]; then
echo -e "${RED}服务重启失败!${NC}"
exit 1
fi
echo -e "${GREEN}服务重启成功!${NC}"
}
# 查看服务状态
status_service() {
echo -e "${BLUE}正在查看结伴客后端服务状态...${NC}"
pm2 status jiebanke-backend
}
# 查看服务日志
logs_service() {
echo -e "${BLUE}正在查看结伴客后端服务日志...${NC}"
pm2 logs jiebanke-backend
}
# 主函数
handle_command() {
# 解析命令和环境参数
COMMAND="start"
if [ $# -ge 1 ]; then
case $1 in
start|stop|restart|status|logs|install|setup|help) COMMAND=$1 ;;
*) echo -e "${RED}未知命令:$1${NC}"; show_help; exit 1 ;;
esac
fi
if [ $# -ge 2 ]; then
case $2 in
production|development|test) NODE_ENV=$2 ;;
*) echo -e "${RED}未知环境:$2${NC}"; show_help; exit 1 ;;
esac
fi
# 执行相应的命令
case $COMMAND in
start)
check_node
check_pm2
check_env
check_ecosystem
install_dependencies
create_directories
start_service
;;
stop)
check_pm2
stop_service
;;
restart)
check_node
check_pm2
check_env
install_dependencies
restart_service
;;
status)
check_pm2
status_service
;;
logs)
check_pm2
logs_service
;;
install)
check_node
install_dependencies
;;
setup)
check_pm2
setup_autostart
;;
help)
show_help
;;
esac
}
# 执行主函数
handle_command "$@"

1
backend/start_server.sh Symbolic link
View File

@@ -0,0 +1 @@
start_server.sh