EC2 서버 세팅 - innovationacademy-kr/slabs-munetic GitHub Wiki

설치 프로그램

nvm 설치하여 node 16.13.1버전 설치 (npm 8.1.2)

SSL 인증

https://eff-certbot.readthedocs.io/en/stable/install.html#running-with-docker 위의 항목 참고하여 아래의 Dockerfile과 명령어를 사용하였습니다.

FROM debian:bullseye-slim
RUN apt update
RUN apt install -y certbot python3-certbot-nginx
ENTRYPOINT [ "certbot" ]
docker build -t certbot/nginx ~/certbot
docker run -it --rm --name certbot \
            -v "/etc/letsencrypt:/etc/letsencrypt" \
            -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
            -p 80:80 -p 443:443 \
            certbot/nginx certonly --nginx
  • 공식 certbot/certbot 이미지를 사용하지 않은 이유
    • nginx를 위한 설정이 되어있지 않아 nginx 플러그인을 사용해야 했습니다.
    • nginx 플러그인을 사용하기 위해서는 python3-certbot-nginx 또는 certbot-nginx가 설치되어있어야하는데, 전자는 alpine 패키지가 없고 후자는 설치해도 인식하지 못합니다.
    • 따라서 debian 이미지를 제작하여 사용하였습니다.

https://hoing.io/archives/4491
해당 사이트를 통해 nginx 설정했습니다.

0 0 * * * docker run --rm -it --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/nginx renew --nginx --agree-tos

해당 명령어를 crontab에 등록하여 자동화 시도

build.sh... 파일들

#!/bin/bash
cd main
sudo /usr/local/bin/docker-compose down
git stash
git stash clear
git pull origin main
cp ../main.env .env
cd ~/main/munetic_admin
npm i
cd ~/main/munetic_app
npm i
cd ~/main/munetic_express
npm i
cd ..
sudo /usr/local/bin/docker-compose -f docker-compose.yaml -f network-main.yaml up -d --build

dev는 루트에 dev.env를 두고 .env로 복사하여 돌립니다. package-lock.json파일이 없으면 에러가 나기 때문에 npm을 한 번 해주고 돌립니다.