저번 포스팅에서 윈도우 데디케이트 서버를 구축 하는 방법에 대해 정리 했다.
이번에는 더 나아가, 리눅스에서 이를 실행 하는 방법에 대해 정리해본다.
왜냐하면, 서버는 대부분 리눅스를 쓰지 윈도우를 쓰지 않는다. (윈도우 서버 제외)
가장 중요한점은 필자 서버 컴퓨터는 Centos 6.5 가 깔려 있다.
서론에서 유추할 수 있듯이 이번 포스팅은 CentOS 6.5 기준으로 진행되며 우분투나 다른 리눅스 계열
OS 에서도 큰 문제 없이 잘 작동할 것으로 예상 된다.
시작해보자.
소스코드 빌드 하기
이전 글에서 소스코드 빌드 관련 언급을 하였다.
리눅스 빌드를 하기 위해 윈도우와 다르게 해줄 작업은 없으므로 링크로 대체한다.
https://api.unrealengine.com/KOR/GettingStarted/DownloadingUnrealEngine/index.html
https://api.unrealengine.com/KOR/Programming/Development/BuildingUnrealEngine/index.html
이제, 소스코드 빌드는 모두 되어있다고 가정 하겠다.
프로젝트 설정
https://ballbot.tistory.com/17
윈도우용 데디케이트 서버 구축 글에서 프로젝트 설정에 대한 내용을 설명 했다.
프로젝트 설정 부분은 윗 글로 대체 한다.
리눅스 툴 체인 설치
현재 이 코드를 빌드하는 OS (윈도우) 에서 리눅스 컴퓨터를 위한 실행파일을 빌드 해야 한다.
이를 크로스 컴파일 이라고 한다.
리눅스 패키지 컴파일을 위한 툴 체인은 기쁘게도 언리얼 엔진에서 제공하고 있다.
우리는 이것을 편히 설치해서 사용 하면 된다.
https://docs.unrealengine.com/ko/Platforms/Linux/GettingStarted/index.html
본인 엔진 버전에 맞는 툴 체인을 먼저 설치 한다.
필자는 4.21 버전을 사용하고 있어서 해당하는 버전을 다운로드 했다.
아래 경고 사항을 읽어보면 -v8 미만 버전에서는 따로 해줘야 하는것이 있는듯 하다.
구 버전에 대한 설명은 아래 위키가 도움이 될 것 같다.
https://wiki.unrealengine.com/Compiling_For_Linux
여튼, 설치를 시작해보면.
설치 과정은 따로 설명하지 않겠다. 설치를 마치고 이 글로 다시 돌아오도록 하자!
리눅스 빌드를 위한 설정
소스코드를 빌드한 곳으로 이동해보면, GenerateProjectFiles.bat 파일이 존재 한다.
해당 파일을 클릭하여 한번 더 솔루션 파일을 생성한다.
리눅스 빌드를 할 수 있는 빌드 옵션이 생김을 알 수 있다.
하지만, 아직은 작동 하지 않는다. 하나 더 실행해줄 파일이 있다.
아래 파일을 찾는다.
[소스코드 경로]/Engine/Binaries/DotNET/GitDependencies.exe
이 파일을 더블 클릭하여 실행 한다.
의존성 파일을 다운로드 함을 볼 수 있다.
다시 프로젝트 솔루션을 열어서 빌드를 해보자.
빌드 설정을 Linux 로 바꾸고, Developerment Editor 으로 바꾼다.
물론 빌드가 작동하는지 테스트만 하고 취소할것이다 ^^
빌드가 잘 돌아가는 것을 볼 수 있다.
확인 후 빌드->취소를 해서 빌드를 멈추도록 하자. 우리가 원하는것은 데디케이트 서버이지 언리얼 for linux 가 아니다.
확인을 마쳤으므로 솔루션은 닫고 우리의 프로젝트로 돌아간다.
리눅스용 데디케이트 서버 빌드
이젠 익숙할것이다. 소스코드로 빌드한 언리얼 엔진으로 바꾸도록 하자.
OK 를 누르고 잠시 기다리면 변경이 완료 된다.
자, 이제 본격적으로 리눅스 빌드를 시작할것이다.
[프로젝트명].sln 파일을 연다.
빌드 구성을 Linux 로 바꾼다. 방금 잘 작동하는것을 확인 했으므로 오류가 나지 않을것이다.
DevlopermentEditor 으로 빌드 구성을 바꾼다.
지금부터는 사실상 윈도우용 데디케이트 서버 빌드와 다르지 않다.
빌드 버튼을 누르고 잘 작동하는지 확인해보자.
오래걸리겠다. 잠시 티타임과 휴식시간을.....
빌드를 마쳤으면, Server 를 선택해서 다시 한번 빌드를 해준다.
(윈도우랑 똑같다)
서버 빌드도 마쳤다면 다시 .uproject 파일을 열어 프로젝트를 연다.
마지막으로, 리눅스로 패키징을 할 것이다.
지금까지 정말 힘들었다.
필자는 빌드도중 디스크 용량이 부족해서 빌드 오류가 발생했다.
(디스크를 굉장히 많이 먹더라, 120기가 하드가 다찼다)
서버 구축 하기
패키징을 모두 마쳤으면, 윈도우와 똑같이 서버 파일을 만들어내면 된다.
우선 아래 경로로 이동하여 서버 파일을 복사한다.
[프로젝트명]/Binaries/Linux/[프로젝트명]Server
복사해서, 방금 패키징한 폴더에 접근하여 아래 경로에 붙여 넣는다.
[패키징경로]/LinuxNoEditor/[프로젝트명]/Binaries/Linux/
이제 모두 완료 되었다. 리눅스 데디케이트 서버는 완성 했으니, 이제 실행만이 남은것이다!
서버 실행하기
독자 모두 여기까지 읽었다는것은 리눅스 서버는 기본적으로 가지고 있을 것으로 생각 한다.
없다면, 새로 살 수 도 있고, AWS 같은 클라우드 서비스를 사용 할 수도 있다.
하여튼, 필자는 개인 가상 서버를 가지고 있기 때문에 그곳에서 진행 한다.
참고로 필자는 퍼니오 가상 서버 호스팅을 이용하고 있다. 그러므로 퍼니오를 기준으로 작성 하므로
본인 서버에 맞는 설정을 진행하기 바란다.
먼저, 패키징한 폴더 (LinuxNoEditor 폴더) 내부 파일을 모두 서버에 업로드 한다.
필자는 이 서버를 위한 계정을 하나 만들어다가 사용 했다.
참고로, 서버를 켜는 작업에는 root 계정이 필요 없지만, 셋팅을 할때는 root 계정이 필요하므로
미리 준비해두도록 하자.
포트포워딩
언리얼 엔진은 7777번 포트를 사용한다. 외부에서 접속 할 수 있도록 포트를 개방해 두도록 하자.
다시 한번 언급하지만 Centos 6 기준으로 진행된다. 버전이 다르다면 아래 방법이 작동하지 않을 수 있다.
ssh 접속을 (root 계정 사용) 한다.
vi /etc/sysconfig/iptables
iptables 파일을 열어서 포트포워딩을 진행하겠다.
적당한 부분에 아래 구문을 추가 한다.
-A INPUT -p udp -m udp --dport 7777 -j ACCEPT
언리얼 엔진은 7777번 포트로, udp 통신을 사용 한다는 점 참고 하자.
저장하고 닫는다. iptables 서비스를 재시작 해준다.
service iptables restart
※ 참고 ※
참고로, 퍼니오는 하나의 공유 아이피를 가지고 쓰기 때문에, 해당 홈페이지에서 따로 설정해줄 필요가있다.
이것은 대부분 독자들에게 해당되지 않으므로 생략 하며 이로 인해, 포트는 7777로 열어뒀지만
필자는 접속 할 때 21006 번 포트를 사용한다는점 미리 알린다.
일반적인 상황에서는, 7777로 열면 7777로 접속 한다. ^^
권한 설정
포트포워딩을 마쳤으므로, 이제 서버 파일로 접근 한다.
[업로드 한 경로]/[프로젝트명]/Binaries/Linux/
우리가 실행할 파일은 [프로젝트명]Server 이다. (확장자가 없다는것 주의, 리눅스에서 확장자는 중요하지 않음)
이제, 서버파일에 실행 권한을 부여한다.
chmod +x [프로젝트명]Server
이제, 파일 목록을 보면 해당 파일이 초록색으로 표시됨을 볼 수 있다.
드디어 실행할 차례! 아래 명령어를 기쁘게 입력 한다.
./[프로젝트명]Server -log
(참고로, -log 인수 는 안줘도 잘 작동하더라)
축하드립니다! 리눅스 데디케이트 서버 구축에 성공 했습니다!
[참고] 안되는데요? glibc not found 에러 (더보기 클릭)
필자는 이전에 리눅스에서 데디케이트 서버를 구축 해봤기 때문에 잘 작동하고 있다.
아마, Centos 6 계열의 os 에서 서버를 켜면 glibc 버전 오류가 반길것이다.
이때는 당황하지 않고, glibc 2.17 버전을 설치해주면 된다.
설치 부분까지는 글로 남기지 않고 링크로 대체한다.
https://serverkurma.com/linux/how-to-update-glibc-newer-version-on-centos-6-x/
저 글을 보면 어렵지 않게 해결 할 수 있다.
glibc 를 설치 했다면, 아래 명령어를 입력해봄으로 써 확인 할 수 있다.
strings /lib64/libc.so.6 | grep GLIBC
하지만, 접속이 안되면 꽝이다. 테스트 까지 해보고 글을 마치겠다.
테스트
언리얼 엔진으로 돌아가서, PIE 에서 실행 아래 명령어를 입력해본다.
(필자는 트리거를 깔아두고 open 노드를 연결해뒀다.)
open [본인서버주소]:7777
포트 번호는 굳이 명시할 필요는 없지만, 필자처럼 포트가 다른 독자는 뒤에 포트값을 붙여주면 된다는것을
명시하기 위함이다.
지금까지 따라온 독자 분들에게 감사를 드리며, 모든분들이 데디케이트 서버를 잘 구축하기를 바란다.
'볼봇의 코딩 생활 > 언리얼한 엔진' 카테고리의 다른 글
[UE4] HTTP 통신으로 파일 다운로드 (5) | 2019.09.08 |
---|---|
UE4 바스트 모핑 (물리적인 가슴) 구현 (0) | 2019.08.16 |
[UE4] 데디케이트 서버(Dedicate Server) 구축 - Windows 편 (6) | 2019.08.04 |
UE4 안드로이드에서 프로젝트 개발 하기 (1) | 2019.06.15 |
UE4 우주 배경 (스카이박스) 만들기 (2) | 2019.05.06 |