Skip to content

프로젝트 설치 및 실행방법

SeungChulNa edited this page Feb 18, 2022 · 8 revisions

목차

  1. github 저장소로부터 프로젝트 클론받기
  2. docker-compose를 사용해서 로컬서버를 위한 데이터베이스 설치하기
  3. schema.sql파일로 테이블 생성 및 외래키 제약조건 등 추가하기
  4. 파이썬 스크립트를 사용해서 data.sql파일 생성하기
  5. 생성된 data.sql파일로 테스트 데이터 입력하기
  6. github에 업로드되어 있지 않은 설정파일 추가하기
    배포버전의 데이터베이스 정보와 OAuth의 client secret등의 민감한 정보를 담은 설정파일은 github에 올라가 있지 않습니다.
    해당 설정파일을 추가하지 않으면 애플리케이션을 실행할 수 없습니다.(없어도 OAuth기능이 필요없는 단위테스트는 동작합니다!)
  7. IDE 설정
  8. 프로젝트 실행

1. github 저장소로부터 프로젝트 클론받기

git clone https://github.com/Malloc72P/QnaOverflow.git

2. docker-compose를 사용해서 로컬서버를 위한 데이터베이스 설치

  • 프로젝트 최상위 경로로 부터 be/qnaboard/docker 폴더로 이동합니다.
cd be/qnaboard/docker/
  • 아래의 명령어를 입력해서 MySQL 데이터베이스를 도커를 사용해서 설치합니다.
    mysql 데이터베이스의 버전은 8.0.27입니다.
docker-compose up -d
  • 해당 docker-compose의 상세설정은 docker-compose.yml파일에서 확인할 수 있습니다.
    해당 파일은 be/qnaboard/docker폴더 밑에 있습니다
  • 데이터베이스의 루트유저와 일반 유저에 대한 정보는 be/qnaboard/docker/.env파일에서 확인하실 수 있습니다.
  • 로컬환경에서 도커의 데이터베이스에 잘 접속할 수 있는지 테스트해봐야 합니다.
    저는 IntelliJ의 Database접속기능으로 테스트해보겠습니다.
  • 데이터베이스탭에서 추가 버튼을 누른 후, MySQL을 선택합니다.
    image
  • 데이터 소스 설정창에서는 user와 password를 입력해줍니다.
    be/qnaboard/docker/.env에서 만들어놓은 계정을 사용하겠습니다.
    iddev, pwdev1234입니다. 데이터베이스의 이름은 qnaboard입니다.
    image
  • DataSources 설정패널의 하단부에 있는 Test Connection버튼을 눌러 연결할 수 있는지 확인합니다.
    image

3. schema.sql파일로 테이블 생성 및 외래키 제약조건 추가

  • be/qnaboard/src/main/resources/schema.sql에 있는 스크립트를 우클릭하고 Run schema.sql버튼을 클릭합니다.
    image
  • Target data source / schema: 아래의 +버튼을 클릭하고 qnaboard@localhost를 추가합니다. 그리고 Run버튼을 클릭합니다.
    image
  • 생성된 테이블은 데이터베이스 패널에서 확인할 수 있습니다.
    image

4. 파이썬 스크립트를 사용해서 data.sql파일 생성

  • be/qnaboard/data-initializer 폴더로 이동합니다.
  • main.py 스크립트를 실행합니다. main.py 스크립트는 프로젝트의 테스트 데이터를 bulk insert하는 data.sql파일을 생성합니다.
py ./main.py
  • 생성된 data.sql파일은 be/qnaboard/src/main/resources에 있습니다. image

5. 생성된 data.sql파일로 테스트 데이터 입력

  • data.sql파일을 우클릭하고 run data.sql 버튼을 클릭합니다.
    image
  • Target data source / schema: 아래의 +버튼을 클릭하고 qnaboard@localhost를 추가합니다. 그리고 Run버튼을 클릭합니다.
    image

6. github에 올라가지 있지 않은 설정파일 추가

  • github에서 누락된 설정파일은 application-dev.ymlapplication-oauth.yml입니다.
    두 파일을 be/qnaboard/src/main/resources밑에 만들어준 다음 아래의 예시를 따라 작성해줍니다.
  • application-dev.yml 예시입니다. 데이터베이스 정보와 api_url을 고쳐주면 됩니다.
spring:
  jpa:
    hibernate:
      ddl-auto: none

database_url: 배포버전_데이터베이스_url주소:데이터베이스_포트번호
database_username: 배포버전_데이터베이스_접속계정_아이디
database_password: 배포버전_데이터베이스_접속계정_비밀번호
api_url: 배포버전_웹애플리케이션의_URL
  • application-oauth.yml의 예시입니다. 물음표 부분을 고쳐주면 됩니다.
spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: '?'
            client-secret: '?'
            scope: profile, email
          naver:
            client-name: naver
            client-id: '?'
            client-secret: '?'
            redirect-uri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
            authorization-grant-type: authorization_code
            scope: profile,email,profile_image
        provider:
          naver:
            authorization-uri: https://nid.naver.com/oauth2.0/authorize
            token-uri: https://nid.naver.com/oauth2.0/token
            user-info-uri: https://openapi.naver.com/v1/nid/me
            user-name-attribute: response
  • 구글 OAuth 설정하기
    • Google Cloud Platform에서 사용자 인증정보를 생성하고, 발급받은 client-id와 secret을 위의 설정에 입력합니다. image
  • 네이버 OAuth 설정하기
    • 네이버 개발자센터에서 네아로 애플리케이션을 생성하고, 발급받은 client-id와 secret을 위의 설정에 입력합니다.

7. IDE 설정

  • 실행환경을 gradle 대신 intelliJ로 변경합니다. image

8. 프로젝트 실행

  • 실행 설정을 QnaboardApplication으로 변경합니다.
    image
  • Run 'QnaboardApplication'버튼을 클릭하여 애플리케이션을 시작합니다.
    image
  • 브라우저의 주소창에 http://localhost:8080를 입력하여 QnaOverflow에 접속합니다.
    image