끄투코리아는 끝말잇기 게임을 할 수 있는 대표적인 사이트 중 하나입니다.
저도 어릴때 많이 즐겨했었는데, 아직도 종종 찾아서 플레이하는 사람들이 많은 것 같아요,
끄투서버는 깃허브에 코드가 공유되어 있기 때문에, 이를 통해 AWS 인스턴스를 생성해 서버를 올려보는 실습을 해보려고 합니다.
1년간 프리티어로 무료로 사용할 수 있는 권한을 갖고 있기 때문에
인스턴스는 리눅스 운영체제로 t2.micro 프리티어가 이용할 수 있는 유형으로 설정했습니다.
인스턴스를 실행시켜준뒤 ssh를 통해 서버를 연결해야하기때문에, cmd 관리자 모드로 실행해
해당 인스턴스 키페어 위치로 경로를 옮겨준 뒤 ssh 명령어를 통해 인스턴스와 연결을 해줍니다.
ssh 명령어 예제는 aws 인스턴스를 연결하면 SSH 클라이언트 항목에서 확인할 수 있습니다.
해당 EC2 인스턴스에 연결됐음을 알 수 있습니다.
이를 통해 이제부터 끄투 서버 온라인 서버를 구축하려고 합니다.
JJoriping/KKuTu: 글자로 놀자! 끄투 온라인 (github.com)
해당 링크를 통해 끄투 깃허브에 들어가면 게임 설치 방법에 대한 설명이 Window, 리눅스별로 나타나 있습니다.
먼저 sudo apt update 명령어로 패키지 업데이트를 시켜준 뒤,
sudo apt install npm 과 sudo apt install postgresql 명령어를 이용해서 npm과 postgresql을 설치해줍니다.
막 설치한 데이터베이스의 경우, sudo -u postgres psql --quiet main < ./db.sql 명령어를 실행하면 오류가 발생할 것입니다.
따라서, 데이터베이스를 접속해서 메인이라는 데이터베이스를 만들어줘야하는데,
sudo su - postgres로 권한을 변경해주고 psql 명령어를 통해 데이터베이스를 접속해야 합니다.
게임서버에서는 postgres라는 데이터베이스를 관리해야하기 때문에,
ALTER USER postgres with encrypted password ' test';
CREATE DATABASE main;
각 명령어로 postgres 데이터베이스 비밀번호와 메인이라는 데이터베이스를 생성해줍니다.
\l 을 통해 데이터베이스를 확인해보면
해당사항처럼 메인이라는 데이터베이스가 만들어진것을 알 수 있습니다.
이제 데이터베이스에서 나와준 뒤, 똑같이 명령 프롬프트를 하나 더 만들어 ssh로 연결해준뒤, 끄투 폴더로 이동하여 아까와 동일한 명령어 sudo -u postgres psql --quiet main < ./db.sql를 입력해주면 정상적으로 실행된 것을 확인할 수 있습니다.
해당 끄투 폴더의 파일들을 확인해보면 다음과 같이 있는 것을 볼 수 있습니다.
이제 server-setup.bat 파일을 실행가능한 모드로 바꿔줘야하기 때문에
chmod를 활용해 chmod +x server-setup.bat 명령어를 입력해줍니다.
실행 가능 권한을 준 뒤 ./server-setup.bat 명령어를 통해 실행해보면 정상적으로 설치됨을 알 수 있습니다.
마지막 단계로, Server 폴더로 이동 한뒤,
i) node lib/Game/cluster.js 0 1
ii) node lib/Web/cluster.js 1
명령어를 입력해보면, global.json 파일이 없다고 뜨는데, 실제로 폴더 내의 파일을 보면
global.inc.json 파일로 inc라는 이름이 추가된 것을 볼 수 있습니다.
이를 cp 명령어로 cp global.inc.json global.json을 입력하여 global,json과 auth.json 파일을 추가해줍니다.
cat 명령어로 global.json 파일을 확인해보면
PASS란에 비밀번호를 설정하라는 문구가 나와있습니다.
이를 Vim을 통해 설정해줘야 하는데 vim에디터가 존재하지 않으므로,
sudo apt-get install vim 명령어를 통해 vim 에디터를 설치해줍니다.
I 단축키를 통해 insert 모드로 바꿔서 PASS와 PG_PASSWORD 부분의 비밀번호를 설정해주고,
:wq! 단축키를 통해 저장하고 빠져나와줍니다.
마지막으로, 다시 전과 같이 Server 폴더에서
i) node lib/Game/cluster.js 0 1
ii) node lib/Web/cluster.js 1 명령어를 입력해주면 됩니다.
node lib/Game/cluster.js 0 1 명령어를 입력했을때, 입력란이 사라지기 때문에 ctrl + Z 단축키로 빠져나와bg disown -h 명령어로 백그라운드 환경에서도, ssh 연결이 끊어져 실행될 수 있도록 설정해줍니다.
node lib/Web/cluster.js 1 명령어를 입력했을때, 웹 서버 80포트를 열 수 없다고 뜨는데, 이때는 앞에 sudo를 붙여주면 정상적으로 실행됩니다.
똑같이 bg disown -h 명령어를 입력해준 뒤, 인스턴스의 퍼블릭 ip주소를 주소창에 입력해보면, 실행이 되어야하는데 되지 않습니다.
aws 보안그룹에서의 인바운드 규칙에서 포트번호가 설정되어있지 않아서 생기는 현상인데,
보안그룹에서의 인바운드 규칙을 편집해서 게임 서버, http, 8080 포트를 열어주면
끄투서버에 접속할 수 있게 됩니다.
게임 서버는 해당 cluster.js를 실행했을때, 8496임을 알 수 있습니다.
본 실습은 동빈나님의 영상을 참고하였습니다.
'Cloud' 카테고리의 다른 글
Aws EC2에서 Filezilla 연결하기 (0) | 2023.05.04 |
---|---|
aws ec2 환경에서 Chrome,ChromeDriver,Selenium 설치하는법 (0) | 2023.05.04 |
AWS Lambda로 게시판 서버 API 만들어보기 ① (0) | 2023.04.26 |
AWS Lambda 공통 라이브러리 관리하기 (0) | 2023.04.25 |
AWS Lambda 활용해서 크롤링 봇 만들어보기 (0) | 2023.04.25 |