将Redis 和 Java 服务做成服务或者后台执行,并开机启动
·
背景:服务器跑java应用(.jar)有CMD窗口,容易别误关,千万应用不能正常使用
问题:
1、有Nginx、Redis 和 Java 服务需要做成服务或者后台执行
2、重启服务器自动启动应用服务
解决:
1、Nginx启动后本来就没有窗口,所有不需要处理
2、Redis,可以先通过下面命令,先将Redis注册到服务
--安装 Redis 服务
进入 Redis 的安装目录(如 C:\redis),执行:
redis-server --service-install redis.windows.conf --loglevel verbose
--卸载服务
redis-server --service-uninstall
3、将下面的码保存起来,做成.bat文件(用记事本、写字板操作,其它高级工具反而容易乱码)
@echo off
chcp 936 >nul 2>&1
setlocal enabledelayedexpansion
:: ===================== 配置区(必须修改为实际路径)=====================
:: Nginx安装目录(nginx.exe所在的绝对路径,示例:D:\nginx-1.24.0)
set "NGINX_PATH=D:\nginx-1.22.1"
:: Redis服务名称(默认是Redis,若自定义过请修改)
set "REDIS_SERVICE_NAME=Redis"
:: Java服务jar包绝对路径(示例:D:\java-server\server.jar)
set "JAR_PATH=D:\organism-admin.jar"
:: Java启动参数(根据需要调整)
set "JAVA_OPTS=-Xms512m -Xmx1024m -Dserver.port=8080"
:: 日志输出目录(自动创建,无需修改)
set "LOG_DIR=%~dp0service_logs"
:: =====================================================================
:: 创建日志目录
if not exist "%LOG_DIR%" md "%LOG_DIR%"
:: 定义日志文件
set "NGINX_LOG=%LOG_DIR%\nginx_start.log"
set "REDIS_LOG=%LOG_DIR%\redis_start.log"
set "JAVA_LOG=%LOG_DIR%\java_server.log"
set "ERROR_LOG=%LOG_DIR%\error.log"
echo.
echo ===================== 开始启动服务 =====================
echo 启动时间:%date% %time%
echo =======================================================
echo.
:: 1. 启动Nginx(无窗口后台运行)
echo [1/3] 启动Nginx...
if exist "%NGINX_PATH%\nginx.exe" (
pushd "%NGINX_PATH%"
taskkill /f /im nginx.exe >nul 2>&1
start /b nginx.exe >"%NGINX_LOG%" 2>&1
if !errorlevel! equ 0 (
echo Nginx启动成功 (日志:%NGINX_LOG%)
) else (
echo [ERROR] Nginx启动失败 (日志:%ERROR_LOG%)
echo 错误代码:!errorlevel! >>"%ERROR_LOG%"
)
popd
) else (
echo [ERROR] Nginx可执行文件不存在:%NGINX_PATH%\nginx.exe
echo 请检查配置区的NGINX_PATH是否正确 >>"%ERROR_LOG%"
)
:: 2. 启动Redis(Windows系统服务方式)
echo [2/3] 启动Redis服务...
sc stop "%REDIS_SERVICE_NAME%" >nul 2>&1
sc start "%REDIS_SERVICE_NAME%" >"%REDIS_LOG%" 2>&1
if !errorlevel! equ 0 (
echo Redis服务启动成功 (日志:%REDIS_LOG%)
) else (
echo [ERROR] Redis服务启动失败 (日志:%ERROR_LOG%)
echo 错误代码:!errorlevel! >>"%ERROR_LOG%"
echo 提示:请检查Redis服务名称是否正确(当前配置:%REDIS_SERVICE_NAME%) >>"%ERROR_LOG%"
)
:: 3. 启动Java服务(无窗口后台运行)
echo [3/3] 启动Java服务...
if exist "%JAR_PATH%" (
:: 停止已有Java进程
for /f "tokens=2 delims= " %%i in ('tasklist /fi "imagename eq java.exe" /fo list ^| findstr /i "PID"') do (
taskkill /f /pid %%i >nul 2>&1
)
for /f "tokens=2 delims= " %%i in ('tasklist /fi "imagename eq javaw.exe" /fo list ^| findstr /i "PID"') do (
taskkill /f /pid %%i >nul 2>&1
)
:: 启动Java服务
start /b javaw -jar "%JAR_PATH%" >"%JAVA_LOG%" 2>&1
if !errorlevel! equ 0 (
echo Java服务启动成功 (日志:%JAVA_LOG%)
) else (
echo [ERROR] Java服务启动失败 (日志:%ERROR_LOG%)
echo 错误代码:!errorlevel! >>"%ERROR_LOG%"
)
) else (
echo [ERROR] Java服务jar包不存在:%JAR_PATH%
echo 请检查配置区的JAR_PATH是否正确 >>"%ERROR_LOG%"
)
4、将上面保存的.bat文件放到开机启动里,就OK了
更多推荐
所有评论(0)