> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Linux Unreal 서버를 MPS 클라우드에 배포

> Windows에서의 크로스 컴파일 및 UE 4.26 또는 4.27에 대한 참고 사항을 포함하여 Unreal Engine 5 Linux 전용 서버를 PlayFab 멀티플레이어 서버(MPS)에 빌드하고 배포합니다.

# PlayFab에서 Linux 전용 서버 설정

이 가이드의 목적은 Linux 전용 서버를 빌드하고 확인하는 데 필요한 모든 단계를 설명하는 것입니다. 다음 단계는 Unreal Engine 5(early access 및 공식 릴리스 모두)에 관한 것입니다. 동일한 단계 세트가 UE 4.26 및 UE 4.27에도 테스트되어 적용되며, UE 4.27 및 UE5 early access에서 다른 Unreal Engine UI의 패키징 옵션 위치와 관련된 몇 가지 사소한 차이점이 있습니다.

Linux 배포에 대한 자세한 정보는 [여기](https://github.com/PlayFab/MpsAgent/blob/main/LocalMultiplayerAgent/MultiplayerSettingsLinuxContainersOnWindowsSample.json)에서 확인할 수 있습니다.

## 요구 사항

* [Unreal Linux 필수 구성 요소](https://docs.unrealengine.com/SharingAndReleasing/Linux/GettingStarted/) 설치
* [Docker for Windows](https://docs.docker.com/desktop/windows/install/) 설치

## 지침

* **Unreal Linux 필수 구성 요소**에서 설치된 Unreal Engine용 도구 체인을 다운로드하고 실행 파일을 실행합니다. 참고: 이 가이드의 많은 부분과 마찬가지로 이러한 단계는 Unreal Engine이 소스에서 빌드된 경우에만 작동합니다.
  * 설치가 완료되면 Windows 환경 변수를 검사하여 다음 시스템 변수가 있는지 확인합니다: **LINUX\_MULTIARCH\_ROOT**.
* Unreal Engine 소스 디렉터리에서:
  * 다시 실행: `Setup.bat`
  * 다시 실행: `GenerateProjectFiles.bat`
* 자신의 프로젝트로 돌아갑니다:
  * `{ProjectName}.uproject` 파일을 마우스 오른쪽 버튼으로 클릭하고 **Generate Visual Studio project files**를 선택합니다.
  * Visual Studio에서 \{ProjectName}.sln 파일을 엽니다.
  * 구성을 **Development Editor**로 설정합니다.
  * Unreal Editor를 빌드하고 실행합니다.
* 이 시점에서 원하는 디렉터리에 Linux 서버용 프로젝트를 패키징할 수 있어야 합니다.
  * Unreal Engine 5의 경우 Editor에서 화면 오른쪽 상단의 packaging을 선택하면 이제 Linux 옵션을 선택할 수 있습니다. UE 4.26 및 UE 4.27의 경우 패키징 옵션은 File 탭에 있습니다.
  * Server 및 Shipping에 대한 구성을 확인하고 빌드할 \_\_Linux\_\_를 선택한 다음 출력 디렉터리를 선택합니다.

## Linux 서버의 Docker 이미지 생성

이 섹션에서는 Linux 서버가 포함된 Docker 이미지를 설정합니다.

* Linux 서버를 만들었으니 해당 디렉터리로 이동합니다(Windows 탐색기 또는 원하는 터미널).
* `Dockerfile`이라는 새 파일을 만듭니다.
* 원하는 편집기(notepad, vim, emacs 등)로 파일을 편집합니다.
* 아래에 표시된 내용을 복사하여 붙여넣습니다. \[YourProjectNameServer].sh를 자신의 Linux 서버 실행 파일 이름(동일한 디렉터리)으로 반드시 바꿉니다.

```Docker theme={null}
FROM ubuntu:18.04

# Unreal refuses to run as root user, so we must create a user to run as
# Docker uses root by default
RUN useradd --system ue
USER ue

EXPOSE 7777/udp

WORKDIR /server

COPY --chown=ue:ue . /server
USER root
CMD chown -R ue.ue $PF_SERVER_LOG_DIRECTORY && su ue -c ./YourGameNameServer.sh
```

참고: **chown** 명령은 \$PF\_SERVER\_LOG\_DIRECTORY를 서버 프로세스에서 액세스할 수 있도록 수정하고, &&는 명령을 연결하여 서버를 실행합니다.

* 원하는 터미널을 사용하여 Linux 서버 디렉터리로 이동합니다.
  * Windows 사용자는 일반적으로 cmd 또는 powershell을 사용하지만 타사 도구 또는 WSL을 통한 bash도 사용할 수 있습니다.
  * Mac 및 Linux 사용자는 일반적으로 bash를 사용합니다.
* 실행: `docker build -t "[imageName]:[tag]" .` (여기서 imageName 및 tag는 원하는 옵션).
  * 이 이름을 기억하세요. 다시 사용합니다.
  * 예를 들면 각각 **YourProjectNameServer** 및 **01**과 같을 수 있습니다.
  * **tag** 요소는 일반적으로 서버 인스턴스의 버전을 지정하는 데 사용됩니다.
  * 이러한 태그는 이후 단계에서 사용됩니다.
  * imageName과 tag를 잊어버린 경우 터미널에 **docker images**를 입력하여 검색할 수 있습니다.
* 터미널에 **docker images**를 입력하여 Docker 이미지의 성공적인 생성을 확인합니다.
* 이후 명령을 위해 이 터미널 창을 열어두고 별도로 유지합니다.
  * (이후 단계에서 \[Docker 터미널]로 표시됨)

## PlayFab Azure 레지스트리에 컨테이너 이미지 업로드

이 시점에서 Docker 이미지를 PlayFab Azure Container Registry에 푸시하여 PlayFab에서 빌드를 시작하는 데 사용할 준비가 되었습니다.

* [PlayFab 개발자 포털](https://developer.playfab.com/)로 이동합니다.
* 타이틀을 선택합니다.
* 왼쪽에서 **Multiplayer** 탭을 선택합니다.
* 화면 오른쪽에서 **New Build**를 선택합니다.
* 이름을 선택합니다.
* VM 유형을 선택합니다. ThirdPersonMP 프로젝트의 경우 \*\*Dasv4 (2 cores)\*\*로 충분합니다.
* Server Details에서 Server Type을 **Container**로, Operating System을 **Linux**로 설정합니다.
* **Upload to container registry**를 선택합니다.
* 팝업되는 창에서:
  * 이 창에서 \[AzureUsername]을 기억하세요. 다음 단계에서 여러 번 사용됩니다.
  * **Copy Docker Login Command**를 선택합니다.
* \{Docker 터미널} 창으로 돌아갑니다.
  * Docker Login 명령을 \[Docker 터미널]에 붙여넣습니다. 이 명령은 PlayFab에서 사용하는 Azure 레지스트리에 로그인합니다.
  * 입력: `docker tag [imageName]:[tag] [AzureUsername].azurecr.io/[imageName]:[tag]`
  * 입력: `docker push [AzureUsername].azurecr.io/[imageName]:[tag]`
  * AzureUsername은 PlayFab 개발자 포털에 표시되었고, imageName 및 tag는 이전에 선택한 값입니다.
* PlayFab 웹사이트로 돌아가서 New Build 페이지의 Server Details 아래에서 Container image 옆의 Refresh를 선택합니다.
* 화살표 버튼을 클릭하면 업로드한 Docker 이미지와 해당 태그를 보고 선택할 수 있습니다.
* Regions 블록에서 가까운 지역을 선택하고 Standby 및 Max를 모두 1로 설정합니다(테스트 목적).
* Network 블록에서 Port Name 필드를 `gameport`로 설정합니다.
  * 게임 서버에 연결하는 데 사용될 포트를 정의하는 것은 필수입니다.
  * Unreal GSDK에는 이 포트를 자동으로 읽고 내부적으로 이 값에 따라 Unreal Server 호스트 포트를 재정의하는 코드가 포함되어 있습니다.
  * 이 포트의 이름은 반드시 `gameport`여야 합니다.
* **Add Build**를 선택하고 빌드 상태가 **Deployed**가 될 때까지 기다립니다.

## 다음 단계

많은 사용자는 [게임 클라이언트 연결](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build)로 서버를 테스트하고 싶어 할 것입니다.

그렇지 않으면 기본 [Unreal GSDK 플러그인](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk) 가이드로 돌아갈 수 있습니다.


## Related topics

- [GSDK 프로젝트 클라우드 배포](/ko/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-cloud-deployment.md)
- [PlayFab Unreal GSDK 플러그인 개요](/ko/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/index.md)
- [클라우드 호스팅 Unreal 서버에 연결](/ko/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build.md)
- [GSDK 프로젝트 테스트 및 디버깅](/ko/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
- [Servers](/ko/services/playfab/multiplayer/servers/index.md)
