반응형
앞선 글은 EC2와 RDS를 연결하여 EC2는 리액트 프론트 서버를, 데이터 베이스는 RDS에서 사용할 수 있다.
RDS 사용이 어려울 경우, EC2에서 Docker을 설치하여 Database를 사용할 수 있다.
AWS EC2에 도커(Docker)를 설치
- Git Bash에서 ssh로 접속하여 진행하였다.
1. 최신 버전으로 패키지 업데이트
sudo apt-get update
2. 도커 다운로드를 위한 필요한 패키지 설치
sudo apt-get install apt-transport-https // 패키지 관리자가 https를 통해 데이터 및 패키지에 접근할 수 있도록 해준다.
sudo apt-get install ca-certificates // certificate authority에서 발행되는 디지털 서명. SSL 인증서의 PEM 파일이 포함되어 있어 SSL 기반 앱이 SSL 연결이 되어있는지 확인할 수 있다.
sudo apt-get install curl // 특정 웹사이트에서 데이터를 다운로드 받을 때 사용한다.
sudo apt-get install software-properties-common // *PPA를 추가하거나 제거할 때 사용한다.
3. curl 명령어로 도커의 공식 GPG 키를 추가 및 확인
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo apt-key fingerprint 0EBFCD88
4. 도커의 저장소 추가, 등록
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 최신 버전으로 패키지 업데이트
sudo apt-get update
6. 도커 설치 및 실행
sudo apt-get install -y docker-ce
sudo usermod -aG docker ubuntu
7. 도커 compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
8. 권한 설정 해주기
sudo chmod +x /usr/local/bin/docker-compose
9. 링크 파일 생성
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Docker-compose.yml을 통하여 MariaDB 설치
1. docker 디렉토리 생성 및 vi 편집기를 통한 docker-compose.yml 생성
mkdir docker
cd docker
vi docker-compose.yml
2. docker-compose.yml 작성
version: '3'
services:
local-db:
image: mariadb:latest
container_name: surveyblue # 컨테이너 이름
restart: always
ports:
- 63306:3306 # 로컬의 63306 포트를 컨테이너의 3306포트로 연결
environment:
MYSQL_USER: hoony
MYSQL_PASSWORD: hoony
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Seoul
volumes:
- ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro
- ~/docker/mariadb/var/lib/mysql:/var/lib/mysql
- ~/docker/mariadb/var/log/maria:/var/log/maria
추가적으로 MySQL 설치는 아래와 같다.
version: '3'
services:
local-db:
image: library/mysql:5.7
container_name: surveyblue
restart: always
ports:
- 63306:3306
environment:
MYSQL_USER: hoony
MYSQL_PASSWORD: hoony
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Seoul
volumes:
- ./db/mysql/data:/var/lib/mysql
- ./db/mysql/init:/docker-entrypoint-initdb.d
3. docker-compose.yml 실행
sudo docker-compose up -d
MariaDB 설정
1. 컨테이너에 접속 및 Mysql 접속
docker exec -it [컨테이너 이름] bash
mysql -u root -p
2. 미리 생성한 user를 확인 후 권한부여
mysql> use mysql;
mysql> select user, host from user;
mysql> grant all privileges on *.* to 'hoony'@'%'; # 권한 부여
mysql> flush privileges; # 권한 적용
3. 한글 DB 사용을 위한 utf8 설정
mysql> CREATE DATABASE [db_name] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
4. mariadb에 접속
mysql> use [db_name];
cf) container를 삭제해야 한다면 아래와 같은 명령어를 사용한다.
1. 컨테이너 확인
$ docker ps -a
2. 삭제할 컨테이너 정지 및 삭제
$ docker-compose stop
$ docker-compose rm
Typeorm.js 수정 및 Backend 서버 실행
const SnakeNamingStrategy = require("typeorm-naming-strategies").SnakeNamingStrategy
module.exports = {
"type": "mariadb",
"host": "localhost",
"port": 63306,
"username": "hoony",
"password": "hoony",
"database": "surveyblue",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
namingStrategy: new SnakeNamingStrategy()
}
- 위와같이 port와 username, pw, database를 수정해주면 정상적으로 백엔드 서버가 작동한다.
반응형
'웹서비스 개발 > Survey Blue' 카테고리의 다른 글
Amazon AWS EC2 / RDS (0) | 2021.07.11 |
---|
댓글