반응형

1. 시험환경

    ˙ docker

    ˙ docker-compose

    ˙ mariaDB

 

2. 목적

    ˙ docker 및 docker-compose를 이용하여 MariaDB를 기동한다.

    ˙ volumes를 이용하여 MariaDB 생성시 설정 및 데이터 Import 방법을 알아보자.

 

3. 적용

    ① MariaDB를 기동하기 위한 compose.yml을 작성하며 DB 설정 및 초기 데이터 구축을 테스트한다.

        - /etc/mysql/conf.d : MariaDB 설정 사항이 저장되면 버전, OS 등에 따라 경로는 달라질 수 있다.

        - /docker-entrypoint-initdb.d :  컨테이너 최초 실행 시 스크립트 파일(sql)에 저장된 내용이 반영된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3.8"
services:
  test-mariadb:
    container_name: test-mariadb
    build:
      dockerfile: Dockerfile
      context: ./mariadb
    image: mariadb
    environment:
     - MARIADB_DATABASE=world
      - MARIADB_ROOT_PASSWORD=1q2w3e
    volumes:
      - ./mariadb/config:/etc/mysql/conf.d
      - ./mariadb/init:/docker-entrypoint-initdb.d
    ports:
      - "3400:3306"
cs

 

 

    ② character-set 등 MariaDB 설정 정보 파일을 Host 경로에 저장한다.

        - 파일명 : ./mariadb/config/mariadb.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
 
[mysqldump]
default-character-set=utf8mb4
cs

 

    ③ MariaDB 컨테이너가 최초 기동되면서 실행할 스크립트 파일을 Host 경로에 저장한다.

        - 파일명 : ./mariadb/init/world.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- world 데이터베이스 구조 내보내기
CREATE DATABASE IF NOT EXISTS `world` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */;
USE `world`;
 
-- 테이블 world.nation 구조 내보내기
CREATE TABLE IF NOT EXISTS `nation` (
  `id` bigint(20NOT NULL AUTO_INCREMENT,
  `currency` varchar(255DEFAULT NULL,
  `lang` varchar(255DEFAULT NULL,
  `nation` varchar(255DEFAULT NULL,
  `population` int(11NOT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
 
-- 테이블 데이터 world.nation:~4 rows (대략적) 내보내기
DELETE FROM `nation`;
/*!40000 ALTER TABLE `nation` DISABLE KEYS */;
INSERT INTO `nation` (`id``currency``lang``nation``population`VALUES
    (1'Dollar''English''America'50000),
    (2'Frank''Swiss''Swizerland'2000),
    (3'Found''English''England'60000),
    (4'Euro''Italian''Italiy'4000);
/*!40000 ALTER TABLE `nation` ENABLE KEYS */;
cs

 

    ④ docker-compose를 실행하여 MariaDB를 기동한다.

        - > docker-compose -f compose.yml up -d

 

    ⑤ Container 실행 후 Client 도구를 이용하여 접속한다.

        - 접속 정보는 compose.yml 파일에 설정한 환경변수 등을 참고한다.

 

4. 결과

    ˙ sql 스키마 및 데이터가 Import된 것을 확인할 수 있다.

반응형
반응형

1. 시험환경

    ˙ 가비아

    ˙ AWS EC2

 

2. 목적

    ˙ 가비아에서 도메인을 구입한 것을 네임서버 변경없이 AWS EC2의 Public IP로 연결하는 방법

 

3. 조건

    ① 가비아에서 구매한 도메인을 AWS Route53에 호스팅 등록하지 않는다.

    ② 가비아 DNS 서버를 그대로 사용한다.

    ③ 가비아 DNS 관리 페이에서 AWS EC2의 Public IP를 A 레코드 등록한다.

 

4. 결과

    ˙ 결론은 안된다는 것이다. 왜 안되는지 모르겠다.

    ˙ 위와 같은 조건으로 성공하신 분은 답글 요청 부탁드립니다.

 

반응형
반응형

1. 시험환경

    ˙ docker-compose 

 

2. 목적

    ˙ docker-compose 주요 명령어를 알아보자.

 

3. 적용

    ① 프로젝트 목록 관련

        - 실행중인 프로젝트 목록 확인 : $ docker-compose ls

        - 전체 프로젝트 목록 확인 : $ docker-compose ls -a

 

    ② 프로젝트 실행 및 종료하기

        - 프로젝트 실행(Foreground) : $ docker-compose up

        - 프로젝트 실행(Background) : $ docker-compose up -d

        - 프로젝트 이름 지정 : $ docker-compose  -p [project-name] up -d

        - 프로젝트 종료(컨테이너, 네트워크) : $ docker-compose down

        - 프로젝트 종료(컨테이너, 네트워크, 볼륨) : $ docker-compose down -v

 

    ③ 컨테이너 서비스 Scale Up

        - 서비스명 확장 : $ docker-compose up --scale [service-name]=3

 

    ④ 기타

        - 서비스 로그 : $ docker-compose logs

        - 이벤트 로그 : $ docker-compose events

        - 이미지 목록 : $ docker-compose images

        - 실행중인 컨테이너 목록 : $ docker-compose ps

        - 실행중인 프로세스 목록 : $ docker-compose top

 

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ puttygen, putty

 

2. 목적

    ˙ puttygen을 사용하여 pem(privacy enhanced mail)을 ppk(PuTTY private key)로 변환한다.

    ˙ putty에서 ppk 파일을 Auth에 등록한다.

 

3. 적용

    ① puttygen.exe 프로그램에서 pem 확장자를 갖는 key 파일을 Import 한다.

        - Conversions → Import key : pem 확장자를 갖는  key 파일을 import 한다.

        - Save private key : Imported key를 ppk 확장자로 저장한다.

 

    ② putty 설정창에서 변환된 ppk 파일을 등록한다.

        - 위치 : Connection → SSH → Auth →Browse...

ppk 등록

 

4. 결과

    ˙ pem(privacy enhanced mail)

          - Base64 로 인코딩한 텍스트 형식의 파일

          - AWS 에서 EC2 Instance 를 만들때 접속용으로 생성하는 개인키의 형식

 

    ˙ ppk(PuTTY private key)

           - putty에서는 지원되는 개인키 형식이므로 pem 파일을 변환해서 사용

반응형
반응형

1. 시험환경

    ˙ AWS EC2 Ubuntu v20.04

    ˙ Nginx   

    ˙ React

 

2. 목적

    ˙ Nginx 웹서버를 이용하여 React 빌드 파일을 배포하는 방법을 알아보자.

    ˙ Nginx 설정을 최소화하여 단일 App을 빠르게 배포하는 경우의 해결책을 제시한다.

 

3. 적용

    ① Nginx 설치를 설치한다.

        - 참고 : https://languagestory.tistory.com/189

 

Ubuntu 20.04에서 Nginx 설치

1. 시험환경 ˙ Ubuntu v20.04 ˙ nginx 2. 목적 ˙ 리눅스(Ubuntu v20.04) 환경에서 nginx를 설치한다. ˙ nginx 서비스 시작/종료 명령어를 실행하고 서비스를 확인한다. ˙ 설치한 nginx 패키지를 삭제하는 명령어

languagestory.tistory.com

 

    ② React 프로젝트를 빌드하면 "build" 폴더에 배포 패키지가 생성된다.

        - build 명령어 : $ npm run build

React 빌드 폴더 생성

 

    ③ Nginx 기본경로에 있는 기본 파일(html)을 삭제 후 react 빌드 파일(build 하위 모든 파일)을 옮긴다.

        - Nginx 배포 기본 파일 삭제 : $sudo  rm  -rf  /var/www/html/

        - Nginx 배포 기본 경로 이동 : $sudo  cp  -R  [프로젝트]/build/*  /var/www/html/

 

    ④ Nginx를 재시작한다.

        - $sudo systemctl restart nginx

 

4. 결과

    ˙ 브라우저에 접속하여 Nginx를 이용하여 배포된 프로그램이 실행되는지 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Oracle VM VirtualBox

 

2. 목적

    ˙ Virtual Box에 운영체제 설치 후 최초 실행 시 화면이 작게 나타나는 문제를 해결한다.

    ˙ 모니터 전체 화면으로 확대하기 위한 Plugin을 설치한다.

 

3. 적용

    ① Virtual Box에 윈도우 운영체제를 설치하고 최초 실행하면 아래와 같이 작은 화면으로 표시된다.

Virtual Box를 통해 실행된 윈도우 화면 (전체 모니터 크기 대비 작은 화면)

 

    ② Virtual Box 메뉴에서 <장치> → <게스트 확장 CD 이미지 삽입...> 메뉴를 클릭한다.

확장 플러그인 이미지 삽입

 

    ③ Virtual Box 메뉴에서 "장치" → "게스트 확장 CD 이미지 삽입..." 메뉴를 클릭한다.

CD 드라이브에서 설치파일을 실행한다.

 

    ④ 설치한다.

설치
설치
설치
설치
설치
 

 

4. 결과

    ˙ 설치 후 Virtual Box를 재시작하면 모니터 전체 화면으로 확대된다.

    ˙ 확대 적용이 되지 않은 경우, <보기>  → <게스트 디스플레이 크기 자동 조절> 메뉴를 클릭한다.

전체 화면

 

반응형
반응형

1. 시험환경

    ˙ Ubuntu(우분투) Linux(리눅스)

    ˙ ssh-keygen

 

2. 목적

    ˙ ssh-keygen 명령어를 통하여 public 및 private key 생성하는 방법을 알아보자.

 

3. 적용

    ① 우분투 환경에서 아래 명령어를 실행하여 private 및 public key를 생성한다.

        - $ ssh-keygen -q -t rsa -N '' -m PEM -t rsa -b 4096 -C test -f ./id_rsa <<<y >/dev/null 2>&1

 

4. 결과

    ˙ 공개키(.pub)는 github 등 접속을 위한 서버에 등록하여 사용한다.

    ˙ 비밀키(private)는 접속 클라이언트에 등록하여 사용한다.

 

반응형
반응형

1. 시험환경

    ˙ Ubuntu

    ˙ Docker

 

2. 목적

    ˙ 일반 사용자에게 Docker 실행권한을 부여한다.

 

3. 적용

    ① docker 실행 후 build 명령어를 실행을 시도하면, 일반 계정은 권한이 막혀있는 것을 확인할 수 있다.

        - 명령어 : $ docker build .

1
2
3
4
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=
0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&target=&ulimits=null&version=1":
dial unix /var/run/docker.sock: connect: permission denied
cs

 

    ② 현재 로그인한 계정($USER)을 docker group에 포함시킨다.

        - 명령어 : $ sudo usermod -a -G docker $USER

 

    ③ 시스템 재기동 후 해당 ID에 docker group 권한이 부여되었음을 확인한다.

        - 명령어 : $ id

 

4. 결과

    ˙ 접속 계정으로 docker build 명령어가 동작됨을 확인한다.

        - 명령어 : $ docker build .

반응형

+ Recent posts