티스토리 뷰
일단 AWS에 가입이 되어있고 카드 등록이 다 된상황이라고 가정하고 시작 합니다.
EC2 Instance 생성
• AWS EC2에서는 컴퓨터 하나의 단위를 Instance라는 이름으로 부릅니다. 즉, EC2를 생성한다는것 = 서버컴퓨터 대여
1. 콘솔 홈으로 들어갑니다.
2. Region(지역) 선택 - EC2 Instance가 어떤 지역에서 켜질지 선택합니다.
지역이 가까울수록 접속 속도가 빨라집니다.
3. EC2 Instance 생성 : EC2 서비스 페이지로 이동합니다.
상단 검색창에 EC2를 입력해 첫번째로 나오는 것을 클릭해 이동합니다.
4. EC2 Instance 생성: 운영체제 선택
4 - 1. 애플리케이션 및 OS이미지 선택합니다.
ubuntu 선택
Amazon Machine Image(AMI) - Ubuntu Server 22.04 LTS(HVM) 선택
아키텍처 - 64비트(x86) 선택
4 - 2. 아래로 내려가서 인스턴스 유형을 선택합니다.
'프리티어 사용가능'이라고 적혀있는 t2.micro 타입을 선택합니다.
4 - 3. 키페어(keypair)이름 지정 및 다운로드를 합니다.
키페어 파일이 다운로드 받아지면 잘 저장해 둡니다.
키페어는 서버에 접속할 수 있도록 해주는 신분증의 개념이므로 공유하면 안되고
다시 발급도 안되므로 EC2인스턴스를 지우기 전까지는 잃어버리지 않게 주의 하여야 합니다.
4 - 4. 인스턴스를 시작합니다.
5. EC2 Instance 접속하기
SSH(Secure Shell)는 일반적으로 다른 컴퓨터에 연결할 대 사용되는 프로그램입니다.
- 다른 접속 방법보다 보안이 뒤어나 서버 연결을 위해 일반적으로 사용됩니다.
- 로컬 저장소에서 Github의 원격 저장소를 사용하기 위해 SSH Key를 발급했던 것과 동일합니다.
6. AWS EC2에 접속하기
Windows는 ssh가 없으므로 git bash프로그램을 이용합니다.
git bash를 실행후 아래 코드를 입력합니다.
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
ex) ssh -i cd/desktop/coriny_Keypair ubuntu@12.123.456.78
7. AWS EC2 Node.js설치
Node.js v18을 설치해주는 명령어
apt-get
- 리눅스 운영체제에서 지원하는 패키지 매니저에서 원하는 패키지를 설치하는 명령어입니다.
- apt는 리눅스 운영체제의 대표적인 패키지 관리 도구중 하나 입니다.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
를 먼저 해준뒤
sudo apt-get install -y nodejs
를 해줍니다.
node가 잘 깔렸는지 확인 해줍니다.
# 설치된 Node.js 버전 확인하기
node -v
# 설치된 npm 버전 확인하기
npm -v
7. 서버 프로그램 실행 및 웹사이트 접속
git clone을 하기 위한 래포지토리 주소를 가져 옵니다.
7 - 1. EC2 Instance 터미널에 접속해서 클론을 받아 줍니다.
# 원격 저장소로 부터 코드 가져오기
git clone <Github Repository URL>
ex) git clone https://github.com/startcoriny/product_REST_API.git
7 - 2. 해당 프로젝트로 이동하고 패키지를 깔아준뒤 실행합니다.
# 원격 저장소로부터 가져온 프로젝트로 이동
cd < 프로젝트명 >
ex) cd product_REST_API
# yarn을 사용하기 위한 전역 yarn 설치
ex ) sudo npm install -g yarn
# 원격 저장소로부터 가져온 프로젝트의 의존성 및 패키지 설치
ex ) yarn
# 프로젝트 실행
ex ) node app.js
7 - 3 . vim을 통해 .env 파일 설정하기
git clone한 폴더 즉, 배포할 프로젝트 폴더로 들어갑니다.
# vim사용한 환경변수 설정
sudo vim .env
명령어를 실행하면 환경변수 편집하는곳으로 들어가집니다.
여기에서 로컬프로젝트에 있는 .env파일의 내용을 복사 붙여 넣기 하면 됩니다.
• 명령모드 : 복사 붙여 넣기가 가능하고 vim을 저장 및 종료할 수 있습니다. " I "를 통해 입력 모드로 갈 수 있습니다.
• 입력모드 : 글자를 쓸수 있고 왼쪽아래에 INSERT라는 글자가 보입니다. ESC를 통해 명령모드로 갈 수 있습니다.
• 저장하고 나가기 - :wq + enter
• 저장하지 않고 나가기 - :q!
• 파일 저장하기 - :w
env내용을 복붙한뒤 저장하고 나갑니다.
그런뒤 프로젝트 파일 경로에서 node app.js를 실행한다면 연결된걸 확인 할 수 있습니다.
7 - 4. 웹 사이트 연동시키기
EC2 Instance의 방화벽에서 해당 포트 번호를 막고 있기 때문에 서버를 작동시켜도 url접속이 되지 않습니다.
인바운드 규칙 변경
규칙추가 버튼을 눌러 정보를 추가합니다.
유형 : 사용자 지정 TCP
포트범위: 3000 (개인의 서버 포트 번호 ex) Node.js )
소스 : Anywhere-IPv4 , 0.0.0.0/0
http://<복사한IP>:3000
위 처럼 경로를 만들어준다음 이동하면 접속하는 걸 확인 할 수 있습니다.
8. PM2 서버 실행 프로그램 적용 시키기
위 작업까지 끝내면 웹사이트에 접속 할 수 있지만 서버의 작동이 끊기는 순간 웹사이트 접속이 불가능해 집니다.
그렇기 때문에 Node.js를 실행하고 관리하도록 만들어진 pm2를 이용.
pm2
- 프로세싱 매니징 도구로 Node.js를 편하게 관리할 수 있게 도와주는 라이브러리입니다.
- 터미널을 종료하더라고 웹 서버가 실행 될 수 있게 하거나 Log정보들을 실시간으로 확인하여
현재 서버의 상황을 더욱 빠르고 명확하게 관리할 수 있습니다.
pm2설치
# Linux의 관리자 계정으로 전환합니다.
sudo -s
# yarn을 사용하여 pm2 라이브러리를 전역 프로그램으로 설치합니다.
yarn global add pm2
# pm2 로 app.js 파일을 실행합니다.
pm2 start app.js
pm2 명령어
pm2 delete [pid number] ex) pm2 delete 0 | id가 0인 프로세스를 종 |
pm2 restart [idNumber] ex) pm2 restart app.js | app.js 재실행 |
pm2 restart [idNumber] ex) pm2 restart 0 | id가 0인 프로세스 재실 |
pm2 list | pm2로 관리되는 모든 서비스의 목록을 출력 |
pm2 log | 모든 서비스의 로그를 출력 |
pm2 logs --lines [number] ex) pm2 logs --lines 100 | 마지막으로 발생한 로그 순서대로 100개를 출력 |
ec2서버에서 변경사항있는 깃허브 코드 가져오기
# root@ 경로에서는
git pull
# ubuntu@ 경로에서는
sudo git pull
'Git & Github&배포' 카테고리의 다른 글
[CI/CD]GitHub Action (0) | 2024.03.20 |
---|---|
git 명령어 (0) | 2024.03.19 |
git 파일 용량 에러 (0) | 2024.01.10 |
프로젝트를 위한 Git 명령어, GitHub 기능 (0) | 2024.01.09 |
환경 변수 사용하기.. (0) | 2024.01.06 |