hackatalk-server 로컬 실행 환경 구축하기
Welcome to hackatalk-server !!
dooboolab에서 오프소스 프로젝트를 한창 진행 중인 모바일 앱 hackatalk의 hackatalk-mobile 프로젝트에 이어 백엔드서버 또한 오픈소스 프로젝트로 진행하게 되었습니다. 🎉
이 포스팅에서는 hackatalk-server 개발에 참여하고 싶으신 분들을 위하여 서버 배포 전 로컬에서 실행 환경을 구축하는 방법에 대해 공유드리고자 합니다.
본론에 들어가기 앞서, 이전에 포스팅 된 [번역] 아폴로를 이용한 그래프 큐엘 서버 구현 을 읽어 보시고 오시면 hackatalk-server 프로젝트에 대한 이해도가 올라가실 거라고 생각합니다 👍
사전 준비 사항
이미 준비가 되어 있으신 분들은 건너 뛰시면 됩니다.
MySQL 설치
MySQL Community Downloads 사이트에 들어가서 자신의 운영체제에 맞는 MySQL Community Server를 다운로드 받으세요.
설치 및 실행에 대한 자세한 방법은 아래 문서를 참고해 주시면 됩니다.
mac OS X
Installer로 설치 후 Control Panel에서 MySQL 서버를 켜는 법까지 가이드가 되어 있습니다.
Windows
MySQL 공식문서에는 Windows용 설치 스크린샷이 없고 각 옵션들에 대한 텍스트들만 있어서 읽기 불편할 것으로 생각합니다 ㅎ
그래서 아래의 공식 문서는 사실 보시는 게 제일 좋지만, MySQL을 사용 하시면서 읽어 보셔도 좋을 것 같습니다.
하여 한글로 된 포스팅을 링크 드리니, 참고 하시기 바랍니다.
Installer type으로 설치했다고 하면, 아래 문서를 참고하세요.
ZIP으로 설치했다고 하면, 아래 문서를 참고하세요. 이 과정은 매뉴얼로 설정해야 하는 작업이 많아서 MySQL사이트에서도 추천하지는 않는 방법 같습니다 ㅎ
Other OS
다른 운영체제에 대한 MySQL 설치방법은 MySQL Documentation: Installing and Upgrading MySQL 문서를 참고하세요.
DBeaver 설치
DBeaver는 오픈소스 데이터베이스 툴로써, 현재 MySQL, PostgreSQL, SQLite, Oracle, DB2 등 아주 다양한 종류의 데이터베이스를 지원하고 있습니다.
지금 포스팅에서는 DBeaver 사용을 안내 하고 있지만 필수적으로 사용해야 하는 것은 아닙니다. 사실 MySQL Workbench가 MySQL에서 만든 데이터베이스 툴로써 가장 많이 알려져 있긴 하지만, mac OS에서는 매끄럽게 동작이 되지 않는 부분이 많아서 불편함을 느끼는 사용자가 많습니다. (저 포함해서요.. 복붙 키와 한/영 전환이 가끔 먹지 않는다던지, GUI가 좋지 않다던지…)
DBeaver Download 페이지에 들어가서 Community Edition 섹션에 자신의 운영체제에 맞는 것으로 다운로드 받아서 설치 해 주세요.
npm 설치
node.js를 설치하면 npm도 함께 설치됩니다.
yarn 설치
Introducing: yarn getting started
npm을 먼저 설치했다면, 터미널에서 아래 커맨드로 간단히 설치 가능합니다.
yarn을 독립적으로 설치하시려면 아래 문서를 참고하시어 운영체제 별로 따라 하시면 되겠습니다.
git 설치
아래 문서 참고하시어 운영체제별로 설치하시기 바랍니다.
hackatalk-server 프로젝트 세팅
코드 복사 및 패키지 설치
- git 명령어를 이용하여 hackatalk-server github repository로부터 로컬에 clone을 해 온 뒤,
- hackatalk-server 폴더로 들어가서,
- yarn명령어로 package.json에 명시된 dependencies, devdependencies들을 모두 설치 해 줍니다.
환경변수(.env) 설정하기
dotenv폴더 안에다가 .env 파일을 만들어 놓아야 하는데,
dotenv 폴더 안에 env 템플릿이 준비되어 있습니다.
`test.env`가 저희가 사용할 대상입니다.
- 새로 .env파일을 dotenv폴더 안에 만듭니다.
- test.env 내용을 복사하여 .env 파일에 붙여넣습니다.
- .env파일 내용 중에 DB_USER, DB_PASSWORD, DB_DATABASE 부분을 자신의 기호대로 설정 해 줍니다.
MySQL 유저 추가하기
.env에 정의한 DB_USER, DB_PASSWORD 의 내용대로 사용자를 추가하는 작업을 진행 해 봅니다.
물론 MySQL 설치 시에 자동으로 만들어진 root계정으로 사용하고자 하신다면 이 단계는 건너뛰어도 됩니다.
참고
mysql 접속하기
- root 권한으로 접속하여 root 비밀번호를 입력해서 들어간다.
mysql -p
사용자 생성
CREATE USER 'hackatalk'@'localhost' IDENTIFIED BY '{password}';
사용자에 사용권한 부여
GRANT {TYPE_OF_PERMISSION} ON hackatalk.* TO hackatalk@'localhost';
참고: TYPE_OF_PERMISSION
ALL PRIVILEGES
- as we saw previously, this would allow a MySQL user full access to a designated database (or if no database is selected, global access across the system)CREATE
: allows them to create new tables or databasesDROP
: allows them to them to delete tables or databasesDELETE
: allows them to delete rows from tablesINSERT
: allows them to insert rows into tablesSELECT
: allows them to use the SELECT command to read through databasesUPDATE
: allow them to update table rowsGRANT OPTION
: allows them to grant or remove other users’ privileges
사용자에 권한 부여 후 적용하기
GRANT ALL PRIVILEGES ON hackatalk.* TO hackatalk@'localhost';
FLUSH PRIVILEGES;
생성한 유저의 권한 확인하기
SHOW GRANTS FOR hackatalk@localhost;
(삭제하고 싶다면,) 유저 삭제하기
DROP USER 'hackatalk'@'localhost';
나가기
quit
(테스트) 새로 생성한 사용자로 mysql 접속하기
mysql -u [username] -p
DBeaver에서 MySQL Connection 세팅하기
이제 DBeaver를 실행해서 hackatalk-server를 위한 MySQL Connection을 생성 해 봅시다.
Steps
- Connection을 생성한다
- .env에서 정의했던 DB_DATABASE (e.g., hackatalk)에 있는 값으로 database를 만든다.
hackatalk-server 프로젝트 실행하기
프로젝트로 돌아와서 $ yarn local
스크립트를 입력하면 MySQL 스키마가 로컬에 자동으로 생성되면서 서버가 실행됩니다.
서버가 정상적으로 켜졌다면, DBeaver에 가서 테이블들이 잘 생성되었는 지 확인 해 봅니다.
또한 graphql 서버가 잘 켜졌는 지 http://localhost:4000/graphql에 들어가서 확인 해 봅니다.
This is just beginning 🏃🏻♀️
이로써 로컬에서 hackatalk-server 프로젝트를 실행하는 방법에 대해 알아봤습니다.
아직 프로젝트가 시작 단계이기 때문에 추후 데이터베이스 구조 변경 사항에 대한 migration 방법, graphql resolver 등에 대한 완전한 기획이 나온 사항이 아니기 때문에 관심 있으신 분이라면 아래 슬랙 채널에서 같이 의논 해 보면서 만들어 나갔으면 합니다.
Github issue, PR 모두 환영합니다. 새로운 기술 도입도 언제든 환영합니다.
관심 있으신 분들의 많은 참여 바랍니다.
감사합니다 🙇🏻♂️