Skip to content

Setting ​

이번에는 배포를 위해서 EC2를 세팅을 해보겠습니다.
저는 Docker와 Code Pipeline을 사용해서 배포를 하기 때문에 관련된 세팅을 해보겠습니다.

탄력적 IP(Elastic IP addresses) ​

탄력적 IP 할당

ssh ​

ec2에 접속하기 위해서 기본 터미널을 이용할 수도 있지만
저는 Termius를 사용합니다.

  1. Hosts - NEW HOST
  2. Address에 ec2의 퍼블릭 ip 주소 입력, Label에 표시될 제목 입력
  3. ssh에 username에 ec2-user
  4. key를 클릭하고 원하는 이름으로 키 생성 alt text
  5. import를 클릭하고 pem키를 가져와서 넣어준다.
  6. connect 클릭

zsh ​

개인적으로 zsh를 선호하여 zsh를 설치하겠습니다.
bash를 쓰시려면 이부분은 그냥 넘어가셔도 됩니다.

zsh 설치 ​

sh
sudo yum install git zsh util-linux-user -y
sudo passwd ec2-user # 비밀번호 생성
chsh -s $(which zsh) # 이후 재접속
echo $SHELL # 재접속 0 선택

oh my zsh 설치 ​

sh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh
vi ~/.zshrc
ZSH_THEME="agnoster" # vi로 들어가서 테마를 바꿈
source ~/.zshrc # 적용

auto suggestions and syntax highlighting ​

sh
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
vi ~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting) # vi로 들어가서 plugin 추가
source ~/.zshrc # 적용

docker 설치 ​

sh
sudo yum install docker -y
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
sudo usermod -aG docker $USER # 실행 후 재접속

docker network 생성 ​

sh
docker network create [이름]

nginx와 배포되는 container가 docker의 이름으로 연결되기 위해서 같은 network에 위치하게 둡니다.

nginx ​

nginx 설치 및 세팅 ​

docker compose를 이용해도 되는데
저는 nginx를 따로 설치하여 미리 세팅했습니다.

sh
mkdir ~/conf.d
vi ~/conf.d/default.conf

default.conf ​

mount 할 파일을 미리 만들어줍니다.

sh
server {
    listen       80;
    listen       [::]:80;
    server_name  [domain];

    location / {
      proxy_pass http://[배포 docker container name]:[port];
      proxy_redirect off;
      charset utf-8;

      proxy_set_header X-Real_IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;
    }

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

nginx 실행 ​

sh
docker run -d --name nginx --network [생성한 네트워크 이름] -p 80:80 -v ~/conf:/etc/nginx/conf.d nginx:stable-alpine

그냥 실행해보시려면 network와 volumn을 빼고 실행해보시면 됩니다.

CodeDeploy agent 설치 ​

CodeDeploy agent 설치

Code Deploy와 EC2의 연결을 위한 사용자 생성과 인증 ​

Code Deploy와 EC2의 연결을 위한 사용자 생성과 인증


EC2에 사용자 인증을 해줍니다.

sh
sudo aws configure
AWS Access Key ID [None]: [사용자 acceess key]
AWS Secret Access Key [None]:LinkNewTab [사용자 secret access key]
Default region name [None]: ap-northeast-2
Default output format [None]: json

Deploy를 위한 EC2 IAM 역할 생성 ​

EC2 배포를 위한 역할 설정