반응형

1. brew search node 로 노드 버전 검색

 

2. 원하는 버전 brew install node@14 등으로 설치

 

3. brew search node로 잘 설치되었는지 확인한다.

 

4. brew unlink node 로 언링크 한다.

 

5. brew link --overwrite node@14로 원하는 버전으로 링크를 건다

반응형
반응형

Docker-Compose로 Nginx, Certbot이미지를 사용하여, LetsEncrypt SSL인증서를 발급받는 방법을 알아보도록 하죠

 

certbot으로 ssl 인증서를 발급받는 방법은 다양하게 있지만,

 

저는 dns를 이용하여 발급받도록 하겠습니다.

 

dns를 이용하여 발급받을때는, certbot에서 제공해주는 문자열 제 DNS주소에 TXT레코딩을 입력하면, certbot에서 레코딩이 입력되었는지 확인 후 인증서를 발급해줍니다 !

 

저는 nginx라는 디렉토리 생성 후 작업을 하도록 하겠습니다.

 

디렉터리 구조는 아래와 같습니다.

 

디렉터리 구조

nginx

  ㄴ certbot

     ㄴ conf

     ㄴ www

  ㄴ conf
     ㄴ nginx.conf

     ㄴ test.bigdragon.shop.conf

     ㄴ data.bigdragon.shop.conf

  ㄴ cert.sh

  ㄴ docker-compose.xml

 

도메인

저는 DNS를 이용하여 인증서를 발급받을 것입니다.

서브도메인마다 인증서를 받지않고 와일드카드(*)를 사용해 인증서를 발급받도록 하겠습니다.

*.domain.com 식으로 인증서를 발급받으면 서브도메인 인증서를 받지않아도 다 같이 사용할 수 있습니다.

 

nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for" -- $host';
    #access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

nginx.conf는 있는 그대로 복사하셔도 무방합니다 :)

test.Exampledomain.shop.conf ( 사용할 서브도메인.conf)

upstream myWeb {
    server 118.67.123.51:443; #리버스 프록시 사용을 위해
}
log_format  main  '$sent_http_X_DEBUG_MESSAGE';

server {
        listen 80; #리스닝 포트
        server_name test.bigdragon.shop; #접근 도메인
        #letsencrypt 도메인 확인
        location /.well-known/acme-challenge/ { 
            root /var/www/certbot;
        }

        # path
        location / {
            return 301 https://$server_name$request_uri;
        }
}
server {

    listen 443 ssl;
    server_name test.exampledomain.shop; #사용할 서브도메인을 입력
    ssl_certificate /etc/letsencrypt/live/exampledomain.shop/fullchain.pem; #사용할 메인도메인 입력
    ssl_certificate_key /etc/letsencrypt/live/exampledomain.shop/privkey.pem; #사용할 메인도메인 입력

    location / {
        add_header X_DEBUG_MESSAGE "test.exampledomain.shop";
        proxy_pass https://myWeb;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    access_log  /var/log/nginx/access.log  main;
}

server_name : 호스트를 보고 자기 호스트에 맞는곳으로 연결된다 위 기준 test.exapledomain.shop 으로 접속 시 위 server가 리스닝 하고있다가 통신함 !

 

pullchain.pem : letsencrypt인증서를 발급받으면 자동 생성됨 docker-compose.yml에서 볼륨 마운트 되어있으니, 서브도메인만 신경써주도록하죠 !

 

privkeykey.pem : letsencrypt인증서를 발급받으면 자동 생성됨 docker-compose.yml에서 볼륨 마운트 되어있으니, 서브도메인만 신경써주도록하죠 !

 

 

data.bigragon.shop.conf

log_format  data  '$sent_http_X_DEBUG_MESSAGE';

server {
    listen 80;
    server_name data.exampledomaim.shop;
    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://data.exampledomaim.shop$request_uri;
    }
}
server {
    listen 443 ssl;
    server_name data.example.shop;

    ssl_certificate /etc/letsencrypt/live/exampledomaim.shop/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/exampledomaim.shop/privkey.pem;

    location / {
        add_header X_DEBUG_MESSAGE "data.example.shop";
        root /usr/share/nginx/html;
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    access_log  /var/log/nginx/access.log  data;
}

 

cert.sh

docker-compose run --rm --entrypoint "\
    certbot certonly \
    -d *.exampledomaim.shop \
    --email example@gmail.com \
    --manual --preferred-challenges dns \
    --server https://acme-v02.api.letsencrypt.org/directory \
    --force-renewal" certbot
echo

echo "### Reloading nginx ..."
docker-compose exec nginx nginx -s reload

Letsencrypt인증서를 발급받는 ssh 입니다

 

인증서 발급 후 nginx를 재시작 하는 부분이 재일 아래쪽입니다.

 

docker-compose.yml 

version: '3.8'
services:
    certbot:
        image: certbot/certbot
        container_name: certbot
        volumes:
            - ./nginx/certbot/conf:/etc/letsencrypt
            - ./nginx/certbot/www:/var/www/certbot
        entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
    nginx:
        image: nginx
        container_name: nginx
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./nginx/certbot/conf:/etc/letsencrypt
            - ./nginx/certbot/www:/var/www/certbot
            - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
            - ./nginx/conf/test.exampledomaim.shop.conf:/etc/nginx/conf.d/test.exampledomaim.shop.conf
            - ./nginx/conf/data.exampledomaim.shop.conf:/etc/nginx/conf.d/data.exampledomaim.shop.conf
        command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"

 

위 4가지 파일을 만든 후 

 

1. nginx 디렉토리로 이동하여 ./cert.sh 명령어를 통해 인증서를 발급받아준다.

인증서 발급 시 특정 문자열을 TXT레코드에 입력하라고하는데, 본인이 관리하는 DNS서버에 해당 TXT레코드를 작성해준다 !

 

2. docker-compose  run  -p 443:443 -p 80:80  nginx  명령어로 nginx 실행

 

3. https도메인으로 접근하면 잘 접속되는것을 확인 할 수 있습니다 :)

 

반응형

'기록' 카테고리의 다른 글

brew node version 변경  (0) 2023.03.18
[Docker] 도커명령어 정리  (0) 2023.02.02
[Git] Github - GitBash 사용법  (0) 2022.11.22
반응형

제가 자주 사용하는 도커 명령어를 정리하겠습니다 !

 

docker ps //도커 컨테이너 조회
docker images //도커 이미지 조회

docker rm ID //컨테이너 삭제
docker rmi ID //이미지 삭제

docker Pull name //이미지 다운로드
docker run name //이미지 다운로드 후 실행
반응형

'기록' 카테고리의 다른 글

brew node version 변경  (0) 2023.03.18
[Docker] Docker + Nginx + LetsEncrypt SSL 인증서 발급받기  (0) 2023.02.02
[Git] Github - GitBash 사용법  (0) 2022.11.22
반응형
Git의 흐름도

 

 

기존 로컬폴더에서 소스를 Git 저장소에 올리는 방법

1. 올리고자 하는 폴더에서 마우스 우클릭 후 Git Bash Here 클릭한다.

 

2. 현재 폴더를 로컬 저장소로 지정한다

git init

해당 문구를 입력하면 폴더에 .git폴더가 생성된다.
.git 폴더의 역할은 각각의 파일들이 어떤 상태인지를 여러가지로 분류하여 관리한다.


3. 로컬 저장소의 현재 상태를 확인한다.

git status

빨간 글씨체로 보여지는 파일목록은 추적되지 않은 파일들(Untracked files)이다.

추적되지 않는 파일이란, 준비 영역이나 로컬 저장소에 한번이라도 add되거나 commit되지 않은 파일을 말한다.
반대로 Tracked files)은 최소한 한번은 gitt add 명령을 통해 준비영역에 포함되거나 commit을 통해 로컬 저장소에 저장된 파일이다.

 

4. 작업 공간의 파일들을 준비 영역에 추가한다

git add . //현재 디렉토리의 모든 변경내용을 스테이징 영역으로 넘김
git add "파일경로" //특정파일만

git add . 입력 후 만약 에러(warning: LF will be replaced by CRLF in .project.)가 발생한다면 그것은 문서의 개행 문자를 처리하는 OS 차이 때문에 발생하는 것이다.(참고 : 유닉스에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed)인 CRLF로 이루어진다)

명령어 git config core.autocrlf true 를 입력 후 다시 add 하자.

 

5. 로컬 저장소에 최종 저장하는 단계이다.

git commit -m "메세지"

 

6. 로컬 저장소와 원격 저장소를 연결시킨다.

git remote add origin "Git Repository 주소"

* Origin은 별칭이다, 아무 별칭을 사용해도 무방

Git Repository 주소는 본인 Git 계정 접속 후 Repository 에서 Code를 클릭하면 가져올 수 있다.

 

7. 별칭 내역을 확인한다

git remote -v

 

8. 원격 저장소의 데이터를 동기화한다

git pull origin 브랜치명 --allow-unrelated-histories

브랜치명에는 따로 생성한 브랜치명이 없다면 master를 입력하면 된다. (Git은 기본적으로 master 브랜치가 생성된다)

 

8-1 브랜치 조회

git branch -a

 

9. 로컬 저장소의 파일들을 원격 저장소로 Push한다

git push origin master

 

반응형

'기록' 카테고리의 다른 글

brew node version 변경  (0) 2023.03.18
[Docker] Docker + Nginx + LetsEncrypt SSL 인증서 발급받기  (0) 2023.02.02
[Docker] 도커명령어 정리  (0) 2023.02.02

+ Recent posts