콘텐츠로 이동

서버 실행

준비가 끝났으니 이제 서버를 실행할 차례다. 서버를 켜려면 시작 스크립트를 작성해야 한다.

가장 간단한 시작 명령어는 물론 java -jar다

내려받은 서버 코어를 빈 폴더에 넣는다.

이 폴더에 txt 파일을 만들고 start.bat처럼 확장자를 bat로 바꾼다.

파일 확장자가 보이지 않는다면?

앞에서 내려받은 텍스트 편집기로 이 파일을 열어 다음 내용을 적고 저장한 뒤 start.bat를 더블클릭한다.

start.bat
java -Xms2G -Xmx2G -jar 서버코어이름.jar --nogui

시작 스크립트를 더블클릭하면 Downloading mojang_x.x.x.jar에서 한동안 멈춰 있을 것이다. 느긋하게 기다리자.

다운로드가 끝나면 다음 메시지가 뜬다.

You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

이 디렉터리에 생긴 eula.txt를 텍스트 편집기로 열고 eula=false를 eula=true로 바꾼다.

EULA는 이용 약관 같은 것이다. 무슨 내용인지 궁금하다면 여기를 보자.

바꾼 뒤 서버를 다시 켜고 다음 문구가 나오면 서버가 성공적으로 켜진 것이다.

Done (6.554s)! For help, type "help"

스크립트 끝에 pause를 붙이면 bat의 출력을 확인할 수 있다. 검은 창이 번쩍하고 사라지는 일을 막아 준다.

Terminal window
java -jar paper.jar
pause

와일드카드로 서버 코어 파일을 지정하면, 코어를 업데이트할 때마다 스크립트를 고치거나 파일 이름을 바꿀 필요가 없다.

Terminal window
java -jar *.jar
java -jar paper-*.jar
java -jar leaf-*.jar

서버가 크래시하거나 꺼지면 스크립트로 자동 재시작한다.

Terminal window
@echo off
:start
java -Xmx4G -Xms1G -jar server.jar nogui
echo 서버가 꺼졌습니다. 5초 후 재시작합니다...
timeout /t 5
goto start

변수로 스크립트 내용을 나누면 한 줄에 몰아 쓰지 않아도 되어 읽기 쉽고 고치기도 편하다.

예시 스크립트
@echo off
set JAVA_OPTS=-Xmx4G -Xms1G -XX:+UseG1GC
set SERVER_JAR=paper-*.jar
set ADDITIONAL_ARGS=nogui
java %JAVA_OPTS% -jar %SERVER_JAR% %ADDITIONAL_ARGS%
pause

Windows를 쓴다면 시작 스크립트 맨 앞에 chcp 65001을 넣어야 한다. 그렇지 않으면 글자가 깨지기 쉽다.

그래도 안 된다면 시스템 로캘이 중국으로 되어 있는지, 중국어 언어 팩이 설치되어 있는지 확인하자.

예를 들어 원래 시작 스크립트가 이렇다면:

Terminal window
java -Xms2G -Xmx2G -jar server.jar --nogui

이렇게 바꾼다.

Terminal window
chcp 65001
java -Xms2G -Xmx2G -jar server.jar --nogui

시작 스크립트를 작성하고 실행했더니 Error: Unable to access jarfile xxx.jar 오류가 나는데, 같은 디렉터리에 분명히 xxx.jar가 있는 경우가 있다.

이런 식이다.

오류가 나면 파일 확장자를 확인해 보자(확장자를 보는 방법을 모른다면 여기를 누르자).

그러면 놀라운 광경이 펼쳐진다.

xxx.jar.jar를 xxx.jar로 바꾸기만 하면 정상적으로 실행된다~

설치기로 설치하면 루트 디렉터리에서 xxx.jar를 찾을 수 없고, 대신 bat 스크립트가 하나 생긴다. 내용은 대략 이렇다.

Terminal window
@echo off
REM Forge requires a configured set of both JVM and program arguments.
REM Add custom JVM arguments to the user_jvm_args.txt
REM Add custom program arguments {such as nogui} to this file in the next line before the %* or
REM pass them to this script directly
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.18.2-40.1.60/win_args.txt %*
pause

새 버전의 Forge와 NeoForge는 서버 jar를 libraries 폴더 안에 두고, 함께 제공되는 시작 스크립트로 실행하기 때문이다. 앞의 REM으로 시작하는 줄은 주석이며, 대략 이런 뜻이다.

Forge에는 JVM 인자와 프로그램 인자를 설정한 세트가 필요하다. 사용자 지정 JVM 인자는 user_JVM_args.txt에 추가한다 사용자 지정 프로그램 인자(nogui 등)는 이 파일의 다음 줄 %* 앞에 추가하거나 이 스크립트에 직접 넘긴다

루트 디렉터리에 user_JVM_args.txt가 있을 것이다. 이 파일을 열고, 원래의

Terminal window
java -Xms2G -Xmx2G -jar server.jar --nogui

에서 java와 -jar 사이의 내용을 이 파일에 적는다.

nogui를 쓰고 싶다면 주석에 적힌 대로 @libraries/net/minecraftforge/forge/1.18.2-40.1.60/win_args.txt와 %* 사이에 nogui를 적는다.

이렇게 하면 된다.

Terminal window
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.18.2-40.1.60/win_args.txt nogui %*