본문 바로가기
내가 만든 것/스크립트 Scripts

[윈도우 Batch-Script, 아파치 Apache] 윈도우 아파치 배치 파일 (업데이트 2019-03-05)

by 언제나초심. 2015. 7. 7.
반응형

개요

윈도우 에서 아파치 웹 서버를 등록하고, 시작/종료 하는 배치 스크립트 입니다.


압축 파일로 내려받은 경우, installer 를 안 거쳤기 때문에, 윈도우 서비스 에 등록되어 있지 않습니다. 이 경우에 커맨드 명령어를 통해서 '윈도우 서비스'에 등록할 수 있습니다. 


본문

이 배치 파일에서는



echo   0. 서비스 등록여부 확인
echo   1. 서비스 등록하기
echo   2. 서비스 등록 해제하기
echo   3. 등록된 아파치 서비스 시작
echo   4. 등록된 아파치 서비스 종료
echo   5. 커맨드 종료

와 같은 키를 넣어두었습니다. 실행하고 해당 번호를 입력하면 됩니다. 


소스 코드 내에서는 


set SERVICE_NAME=httpd-2.4.33

와 같은 부분이 있는데, 등록될 '서비스' 명을 수정할 수 있습니다.


실행할 때에는 httpd 최상위 폴더 에 복사해놓고 '관리자 모드로 실행' 하시면 됩니다. 


소스 코드

전체 소스는 아래와 같습니다.


@echo off
setlocal
REM ====================================
REM 환경설정 부분
REM ====================================
set SERVICE_NAME=httpd-2.4.33


REM ====================================
REM 구문 시작
REM ====================================
REM 창 색상 및 크기 지정
mode con cols=60 lines=20
COLOR 3F


REM 현재 경로로 이동
PUSHD "%~DP0"


REM ====================================
REM 경로 설정
REM ====================================
REM httpd.exe 의 경로를 찾기
set CURPATH=%~DP0
set APPPATH=%CURPATH%





:SELECTION
cls
echo ==========================================
echo ★ Apache Web Server Service Add/Remover ★
echo                    Author : Hong seok-hoon
echo                    version : 1.0.0
echo ==========================================
echo (선택항목)
echo   0. 서비스 등록여부 확인
echo   1. 서비스 등록하기
echo   2. 서비스 등록 해제하기
echo   3. 등록된 아파치 서비스 시작
echo   4. 등록된 아파치 서비스 종료
echo   5. 커맨드 종료
echo.
set CHOICE=
CALL NET SESSION >nul 2>&1
IF NOT %ERRORLEVEL% == 0 (
    echo 관리자권한이 필요 합니다. 관리자모드 로 재시작해주세요.
    goto EXITPROG
)
set /p CHOICE=작업할 번호를 입력해주세요 :


if "%CHOICE%" == "" goto :SELECTION

if %CHOICE% == 0 (
    goto CHECK
)

if %CHOICE% == 1 (
    goto INSTALL
)

if %CHOICE% == 2 (
    goto REMOVE
)

if %CHOICE% == 3 (
    goto SERVICE_START
)

if %CHOICE% == 4 (
    goto SERVICE_STOP
)

if %CHOICE% == 5 (
    goto EXITPROG
)


REM ==========================================
REM 서비스 등록 확인
REM ==========================================
:CHECK
sc query "%SERVICE_NAME%" >nul
if "%ERRORLEVEL%" == "0" (
	echo 아파치 웹서버가 설치되어 있습니다.
	timeout /t 60
	goto SELECTION
) else (
	echo 아파치 웹서버가 아직 설치되지 않았습니다.
	timeout /t 60
	goto SELECTION
)





REM ==========================================
REM 서비스 등록
REM ==========================================
:INSTALL

REM 설치 여부 확인
sc query "%SERVICE_NAME%" >nul
if "%ERRORLEVEL%" == "0" (
	echo 아파치 웹서버가 이미 등록되어있습니다.
	timeout /t 60
	goto SELECTION
)


REM 설치 진행
"%APPPATH%\bin\httpd" -n "%SERVICE_NAME%" -k install
if "%ERRORLEVEL%"=="0" (
	CLS
	echo ======================================
	echo 아파치 웹서버가 시스템 서비스에 '등록' 되였습니다.
	echo ======================================

) else (
	echo ======================================
	echo 아파치 웹서버 등록 과정 중에 오류가 발생하였습니다.
	echo ======================================

)
timeout /t 60
goto SELECTION





REM ==========================================
REM 서비스 등록 해제
REM ==========================================
:REMOVE
sc query "%SERVICE_NAME%" >nul
if "%ERRORLEVEL%" == "0" (
	"%APPPATH%\bin\httpd" -n "%SERVICE_NAME%" -k stop
	"%APPPATH%\bin\httpd" -n "%SERVICE_NAME%" -k uninstall
	if "%ERRORLEVEL%"=="0" (
		cls
		echo ======================================
		echo 아파치 웹서버가 시스템 서비스에서 '등록해제' 되였습니다.
		echo ======================================

	) else (
		cls
		echo ======================================
		echo 아파치 웹서버 등록해제 과정 중에 오류가 발생하였습니다.
		echo ======================================

	)
) else (
	echo 아파치 웹서버가 이미 서비스 등록되어있지 않습니다.
)
timeout /t 60
goto SELECTION





REM ==========================================
REM 서비스 시작
REM ==========================================
:SERVICE_START
sc query "%SERVICE_NAME%" >nul
if "%ERRORLEVEL%" == "0" (
	"%APPPATH%\bin\httpd" -n "%SERVICE_NAME%" -k start
	echo 아파치 웹서버를 시작합니다.

) else (
	echo 아파치 웹서버가 이미 서비스 등록되어있지 않습니다.

)
timeout /t 60
goto SELECTION





REM ==========================================
REM 서비스 종료
REM ==========================================
:SERVICE_STOP
sc query "%SERVICE_NAME%" >nul
if "%ERRORLEVEL%" == "0" (
	"%APPPATH%\bin\httpd" -n "%SERVICE_NAME%" -k stop
	echo 아파치 웹서버를 종료합니다.

) else (
	echo 아파치 웹서버가 이미 서비스 등록되어있지 않습니다.

)
timeout /t 60
goto SELECTION





:EXITPROG
timeout /t 60


이 코드는 git 에도 올려두었습니다.

https://github.com/exizt/apache-service-script-batch

반응형