<EC2 인스턴스 설정>
- AWS 에 접속해서 EC2를 들어가서 인스턴스 시작을 누른다.

- 이름은 본인이 알아볼 수 있게 설정한다.
- 난 ubuntu로 설정해줬다.
(처음에 amazon linux로 설정하고 인스턴스를 만들고 실행하려고 하니 자꾸

이런 오류가 떠서 경로 설정도 해보고 다시 인스턴스도 만들어보고 초기화하고 별 짓을 다 해봤지만 계속 같은 오류가 떠서 ubuntu로 설정했더니 바로 성공했다.)

- 프리티어 계정을 사용하고 있어서 위 사진처럼 설정했다.

- pem키를 설정해줬다. (window os는 다를 수 있습니다)
- 이후 인스턴스 생성 버튼을 눌러준다.


- 보안 -> 보안 그룹 선택 -> 인바운드 규칙 편집 누르기

- 인바운드 보안 그룹 규칙을 위 사진처럼 설정했다.
- 포트 범위는 프로젝트에서 설정해둔 포트 번호로 하면 된다.
- 규칙 저장을 눌러준다.

- 다시 인스턴스로 돌아와서 연결 버튼을 눌러준다.

- 이제 로컬에서 터미널을 키고 pem키가 있는 경로로 이동한다.
- 1, 2번을 순서대로 하나씩 쳐준다.

- 위 사진처럼 화면이 뜨면 접속 성공이다.

- 명령어 pwd를 입력하면 위와 같이 뜬다.
<탄력적 IP 설정>

- EC2 -> 탄력적 IP 주소를 클릭하고 이 화면에서 탄력적 IP 주소 할당 버튼을 눌러준다

- 기본 설정대로 놔두고 할당을 눌러준다.

- 해당 탄력적 IP주소를 선택하고 작업 - 탄력적 IP 주소 연결을 눌러준다.

- 연결할 인스턴스를 선택해주고 연결 버튼을 눌러준다.

- 해당 인스턴스와 연결됐는지 확인하고 위처럼 설정돼있으면 탄력적 ip주소는 만들어졌다.
<시스템 업데이트>
sudo apt-get update
- 해당 인스턴스의 시스템을 업데이트 시켜준다.
<기본 소프트웨어 설치>
sudo apt-get install build-essential
- 작업에 필수적인 프로그램들을 설치해주는 명령어이다.
- Do you want to continue? [Y/n] 이라는 물음이 나오면 y 입력 후 엔터를 치면 된다.
<파이썬 설치>
sudo apt-get install python3
- python3를 설치해준다.

- 해당 명령어를 통해 설치된 파이썬 버전을 확인할 수 있다.
<pip 설치>
sudo apt-get install python3-pip
- 프로그램 설치를 도와줄 pip을 설치한다.
- Do you want to continue? [Y/n] 이라는 물음이 나오면 y 입력 후 엔터를 치면 된다.
<SSH키 생성하기>
ssh-keygen -t rsa

- 인스턴스와 github를 연결시켜줄 ssh를 명령어로 생성한다.
- Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): -> 이 질문은 엔터를 누르면 해당 경로에 저장된다. 그냥 엔터를 누르면 된다.
- Enter passphrase : 비밀번호를 입력하세요 -> 사용할 비밀번호를 입력하고 한 번 더 입력해서 재확인시켜주면 된다.
<SSH키 확인하기>
cat /home/ubuntu/.ssh/id_rsa.pub

- 위 명령어를 사용하면 생성한 ssh키를 열어서 확인할 수 있다.

- 마우스로 비밀번호 전체를 드래그해서 복사한다.
<Github에 SSH키 추가하기>

- Github로 들어가서 배포하려고 하는 repository로 이동한다.
- Settings를 클릭한다.

Deploy keys를 클릭하고 Add deploy key를 눌러준다.

- Title에는 본인이 식별할 수 있게 채우면 된다. (ex: nteam_key)
- key란에는 아까 드래그 했던 ssh키를 붙여넣기 한다.
- Add key를 누른다.

- 잘 추가된 것을 확인할 수 있다.
<Github 주소>

- 다시 메인 페이지로 돌아와서 code를 클릭하고 ssh를 선택해준 후 해당 주소를 복사해준다.
- EC2 인스턴스 터미널로 돌아와서 방금 복사한 주소를 붙여넣는다.

- git clone 입력 후 해당 주소를 붙여넣어주면 된다.
- Are you sure you want to continue connecting ? -> 연결하겠냐는 물음에 yes라고 대답하면 된다.
- Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': -> 아까 생성했던 비밀번호를 입력하면 된다.
- 위 과정을 다 마치면 프로젝트 파일들을 pull하는 것을 확인할 수 있다.

- 명령어 ls를 입력해보면 github에서 pull 받은 프로젝트 폴더를 확인할 수 있다.
- cd와 ls로 해당 폴더 안의 파일들도 확인할 수 있다.
<Docker로 서버 띄우기>
1. AWS EC2 인스턴스에서 Docker 설치
sudo apt update
- 우선 해당 명령어를 통해 서버의 패키지 목록을 업데이트 해준다.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- Docker를 설치하기 전에 몇 가지 필요한 패키지를 설치해준다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Docker의 공식 GPG키를 시스템에 추가해준다.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 시스템에 Docker repository를 추가해준다.
sudo apt update
- 새 repository를 추가한 후 다시 패키지 목록을 업데이트 해준다.
sudo apt install docker-ce
- Docker를 설치해준다.
sudo systemctl start docker
sudo systemctl enable docker
- Docker 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정해준다.
docker --version
- 설치가 제대로 됐는지 확인하기 위해 버전을 확인한다.
-------------------------------------------
혹시나 설치가 제대로 안 뜬다면
sudo reboot
- 위 코드로 시스템 재부팅을 해주면 된다.
- 재부팅이 완료되면 다시 서버에 접속해준다.
2. Docker-compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- github에서 docker-compose의 최신 안정 버전을 다운로드한다.
sudo chmod +x /usr/local/bin/docker-compose
- 다운로드한 실행 파일에 실행 권한을 부여한다.
docker-compose --version
- docker-compose의 버전 정보가 출력되면 설치가 성공적으로 완료된 것이다.
WARN[0000] The "POSTGRES_DB" variable is not set. Defaulting to a blank string.
WARN[0000] The "POSTGRES_USER" variable is not set. Defaulting to a blank string.
WARN[0000] The "POSTGRES_PASSWORD" variable is not set. Defaulting to a blank string.
open /home/ubuntu/2023WB-Team-N/.env: no such file or directory
sudo docker-compose up --build를 입력했는데 위와 같이 오류가 난다면 환경변수가 설정되지 않은 것이고, .env파일도 찾을 수 없다는 오류메시지이다.- .env파일을 생성해주고 파일 내에 환경 변수를 설정해주면 된다.
nano .env
- .env 파일을 생성하고 편집하는 명령어이다. 위 명령어를 입력해준다.
POSTGRES_DB=mydatabase
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
- 텍스트 편집기에 필요한 환경 변수를 입력한다.
- mydatabase, myuser, mypassword는 실제 사용할 DB 이름, 사용자 이름, 비밀번호로 교체해주면 된다.
ctrl+o를 눌러서 파일을 저장하고 enter를 누른 다음ctrl+x를 눌러 편집기를 종료한다.



- 실행했는데 위처럼 뜨면 성공이다.
퍼블릭 ip:해당 포트번호입력했는데 위처럼 뜨면 현재 nginx와 연동 직전까지 진행했기 때문에 성공한 것이다.
이후에 NGINX와 연결 시켜주면 된다.