nginx
sudo yum install nginx 로 안됨. 왜냐면 아마존 리눅스에서 사용하는 엔진엑스가 따로 있기 때문
sudo amazon-linux-extras install nginx1
로 설치하자.
설치되는 directory는 /etc/nginx
sudo service nginx start
로 서비스 시작
출처 ::
https://velog.io/@ant-now/AWS-서버에-Nginx-설치
https://msyu1207.tistory.com/entry/AWS-EC2에-NGINX-설치-및-사용하기
git
sudo yum update -y
sudo yum install git -y
git version
출처: https://gamoo12.tistory.com/205
node
공식 자습서 대로 진행하면
https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v3/developer-guide/setting-up-node-on-ec2-instance.html
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node에서 에러가 난다.
/lib64/libm.so.6: version 'GLIBC_2.27′ not found (required by node)
관련 문서 : https://exerror.com/node-lib64-libm-so-6-version-glibc_2-27-not-found-required-by-node/
이 때 nvm install node 대신
nvm install 16
으로 하면 끝남.
port 열기
인스턴스 생성 시 보안 그룹을 설정할 때 3000번 PORT를 따로 설정하지 않았으므로 15.164.98.203:3000 주소에 요청을 보내도 응답받을 수 없다. 따라서 사용하는 인스턴스의 인바운드 규칙을 수정해야 한다.
AWS 홈페이지에서 왼쪽 탭의 네트워크 및 보안 탭에 있는 보안 그룹을 클릭한다.
이전에 생성한 test-security-group 을 체크 후 아래 인바운드 규칙을 클릭한다.
인바운드 규칙 편집을 클릭 후 아래와 같이 3000PORT 규칙을 추가한다.
규칙 저장 후 15.164.98.203:3000 주소로 GET 요청을 보내면 로컬에서 인스턴스에서 실행중인 서버에 접근할 수 있다. 아래 결과는 포스트맨을 통해서 GET 요청을 수행한 결과이다.
출처 :
https://velog.io/@limsw/AWS-EC2에-Node.js-서버-배포하기
고정ip 설정
참고:
https://any-ting.tistory.com/71
배포 환경 만들기
참고: GitHub과 Node.js Express를 이용한 자동배포 환경 만들기(feat. AWS-EC2, AWS CodeDeploy, AWS CodePipeline)
https://ookm1020.tistory.com/4?category=858485
https://ookm1020.tistory.com/5?category=858485
https://ookm1020.tistory.com/7?category=858485
pm2 실행
sudo npm install pm2 -g // 설치
pm2 start ./dist/main.js --watch //실행
nestjs -> docker-> cicd
[aws] ECS에 nestJS 프로젝트 배포하기 - CI/CD
출처:
https://bakjuna.tistory.com/106?category=875809
** nestjs는 정적 서버가 아니기 때문에 빌드 과정이 필요한데
이를 위해 훅크를 이용한다.
필요한 파일은
appspec.yml, Procfile, execute-deploy.sh
(1) appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/build
permissions:
- object: /home/ec2-user/build
owner: ec2-user
group: ec2-user
type:
- file
- directory
hooks:
ApplicationStart: #배포 후 실행할 명령
- location: execute-deploy.sh
runas: ec2-user
(2) Procfile
web: npm run deploy
(3) execute-deploy.sh
#!/bin/bash
source /home/ec2-user/.bash_profile
echo "try to build.........."
cd /home/ec2-user/build
# nvm install 16 // 간혹 npm 설치가 인식 안될 때 설치를 넣어준다.
npm run build
이렇게 하면 정적 소스뿐 아니라 배포후 빌드까지 진행되어 pm2 --watch로 인해 빌드된 내용으로 자동 실행이 된다.