1、检查是否已安装Java
java -version
javac -version
2、 安装JDK 8(如果未安装)
# Ubuntu/Debian:
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
#CentOS/RHEL:
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
3、配置JAVA环境变量
# 编辑配置文件
sudo vi /etc/profile
# 添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
# 使配置生效
source /etc/profile
4、项目打包在开发机器上执行
# 进入项目根目录
cd D:\work\vendor_systest_szpt_backend
# 整体打包(跳过测试)
mvn clean package -Dmaven.test.skip=true
# 或者单独打包某个模块
cd robestec-business/user-center
mvn clean package -Dmaven.test.skip=true
5、上传JAR包到Linux服务器
# 使用scp上传
scp target/*.jar username@server_ip:/opt/robestec/apps/
# 或使用rsync
rsync -avz target/*.jar username@server_ip:/opt/robestec/apps/
6、创建服务启动脚本创建目录结构
# 在服务器上创建目录
sudo mkdir -p /opt/robestec/{apps,logs,config}
sudo chown -R $USER:$USER /opt/robestec
7、创建通用启动脚本
#!/bin/bash
# 服务启动脚本
# 用法: ./start-service.sh <module-name> <port> <profile>
MODULE_NAME=$1
PORT=$2
PROFILE=${3:-dev} # 默认使用dev环境
if [ -z "$MODULE_NAME" ] || [ -z "$PORT" ]; then
echo "用法: $0 <模块名> <端口> [环境profile]"
echo "示例: $0 user-center 8080 prod"
exit 1
fi
APP_DIR="/opt/robestec/apps"
LOG_DIR="/opt/robestec/logs"
JAR_FILE="${APP_DIR}/${MODULE_NAME}.jar"
# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
echo "错误: JAR文件不存在: $JAR_FILE"
exit 1
fi
# 检查端口是否已被占用
if netstat -tuln | grep -q ":${PORT} "; then
echo "错误: 端口 ${PORT} 已被占用"
exit 1
fi
# JVM参数
JAVA_OPTS="-Xms256m -Xmx512m \
-XX:MaxMetaspaceSize=256m \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=${LOG_DIR}/${MODULE_NAME}-heapdump.hprof"
# 日志文件
LOG_FILE="${LOG_DIR}/${MODULE_NAME}.log"
echo "启动服务: ${MODULE_NAME}"
echo "端口: ${PORT}"
echo "环境: ${PROFILE}"
echo "日志: ${LOG_FILE}"
# 启动应用
nohup java ${JAVA_OPTS} \
-Dserver.port=${PORT} \
-Dspring.profiles.active=${PROFILE} \
-Djava.security.egd=file:/dev/./urandom \
-jar ${JAR_FILE} \
> ${LOG_FILE} 2>&1 &
# 记录PID
echo $! > "${LOG_DIR}/${MODULE_NAME}.pid"
echo "服务 ${MODULE_NAME} 已启动,PID: $!"
echo "查看日志: tail -f ${LOG_FILE}"
-
创建停止脚本
#!/bin/bash
服务停止脚本
用法: ./stop-service.sh <module-name>
MODULE_NAME=$1
if [ -z "MODULE_NAME" ]; then echo "用法: 0 <模块名>"
exit 1
fiPID_FILE="/opt/robestec/logs/${MODULE_NAME}.pid"
if [ -f "PID_FILE" ]; then PID=(cat PID_FILE) if ps -p PID > /dev/null; then
echo "停止服务: {MODULE_NAME} (PID: {PID})"
kill $PID# 等待进程结束 for i in {1..30}; do if ! ps -p $PID > /dev/null; then echo "服务已停止" rm -f $PID_FILE exit 0 fi sleep 1 done # 强制杀死 echo "强制停止服务" kill -9 $PID rm -f $PID_FILE else echo "服务未运行,清理PID文件" rm -f $PID_FILE fielse
echo "未找到PID文件,尝试通过进程名停止"
pkill -f "${MODULE_NAME}.jar"
echo "已发送停止信号"
fi -
创建重启脚本
#!/bin/bash
MODULE_NAME=1 PORT=2
PROFILE=${3:-dev}echo "重启服务: ${MODULE_NAME}"
停止服务
/opt/robestec/stop-service.sh $MODULE_NAME
等待2秒
sleep 2
启动服务
/opt/robestec/start-service.sh MODULE_NAME PORT $PROFILE
赋予执行权限 chmod +x /opt/robestec/*.sh
10、各模块启动命令参考
根据项目结构,以下是主要模块的建议端口配置:
# 1. 认证中心 (robestec-uaa)
./start-service.sh robestec-uaa 8090 dev
# 2. 网关 (sc-gateway)
./start-service.sh sc-gateway 8080 dev
# 3. 配置中心 (如果需要独立运行)
./start-service.sh robestec-config 8888 dev
# 4. 用户中心
./start-service.sh user-center 8081 dev
# 5. 系统管理
./start-service.sh system-management 8082 dev
# 6. 交易管理
./start-service.sh transaction-management 8083 dev
# 7. AI预警
./start-service.sh aiearly-warning 8084 dev
# 8. 日常生产
./start-service.sh daily-produce 8085 dev
# 9. 虚拟电厂
./start-service.sh virtual-power 8086 dev
# 10. 电池监控
./start-service.sh battery-monitor 8087 dev
# 11. 设备管理
./start-service.sh device-management 8088 dev
# 12. 运维管理
./start-service.sh operation-maintenance 8089 dev
# 13. 运营分析
./start-service.sh operation-analysis 8090 dev
# 14. 文件中心
./start-service.sh file-center 8091 dev
# 15. 搜索服务
./start-service.sh search-server 8092 dev
# 16. Doris服务
./start-service.sh doris-server 8093 dev
# 17. 大数据服务
./start-service.sh large-server 8094 dev
# 18. 日志中心
./start-service.sh log-center 8095 dev
# 19. 异步数据处理
./start-service.sh async-data 8096 dev
# 20. 代码转移
./start-service.sh code-transfer 8097 dev
11、生产环境启动示例
# 使用prod环境,调整JVM参数
JAVA_OPTS="-Xms1g -Xmx2g" nohup java ${JAVA_OPTS} \
-Dserver.port=8081 \
-Dspring.profiles.active=prod \
-Dspring.cloud.nacos.config.server-addr=nacos-server:8848 \
-jar /opt/robestec/apps/user-center.jar \
> /opt/robestec/logs/user-center.log 2>&1 &
12、批量启动所有服务脚本
#!/bin/bash
echo "========================================="
echo "启动 Robestec 微服务平台"
echo "========================================="
# 定义服务列表(模块名:端口)
declare -A SERVICES=(
["robestec-uaa"]=8090
["sc-gateway"]=8080
["user-center"]=8081
["system-management"]=8082
["transaction-management"]=8083
["aiearly-warning"]=8084
["daily-produce"]=8085
["virtual-power"]=8086
)
PROFILE=${1:-dev}
for MODULE in "${!SERVICES[@]}"; do
PORT=${SERVICES[$MODULE]}
echo ""
echo "-----------------------------------------"
echo "启动服务: $MODULE (端口: $PORT)"
echo "-----------------------------------------"
/opt/robestec/start-service.sh $MODULE $PORT $PROFILE
# 等待服务启动
sleep 5
done
echo ""
echo "========================================="
echo "所有服务启动完成"
echo "========================================="
13、监控和维护
查看服务状态
# 查看所有Java进程
ps aux | grep java
# 查看特定服务
ps aux | grep user-center
# 查看端口占用
netstat -tuln | grep 8081
# 或
ss -tuln | grep 8081
查看日志
# 实时查看日志
tail -f /opt/robestec/logs/user-center.log
# 查看最后100行
tail -n 100 /opt/robestec/logs/user-center.log
# 搜索错误
grep -i "error" /opt/robestec/logs/user-center.log
健康检查
# 检查服务是否响应
curl http://localhost:8081/actuator/health
# 检查具体端口
curl -I http://localhost:8081
防火墙:开放必要的端口
sudo firewall-cmd --permanent --add-port=8080-8100/tcp
sudo firewall-cmd --reload