git action AWS Ec2 배포하기 1
Git Action Ec2 Codedeploy 자동배포 하기 1.
git action을 통해 ec2인스턴스에 자동으로 나의 코드를 배포하는 과정을 진행할 것이다.
우리의 서비스가 ec2에 배포를 진행하고 나면 우리의 서비스가 수정되고 새로운 기능이 생길 때마다 ec2에 접속해서 새로 빌드를 해야하는데 이러한 과정을 git action과 aws에서 대신 진행주는 서비스가 있다.
해당 과정은 개발중이거나 개발된 깃 레파지토리, Ec2인스턴스, Codedeploy, IAM Role, IAM User, S3버킷을 통해 이뤄지며 해당 과정을 순서대로 정리한 글이다.
먼저 개발중인 레파지토리를 이용할 것이며 각자의 프로젝트를 이용하거나 테스트 앱을 클론하여 진행해도 무방하다.
배포할 앱은 Node.js 기반의 서비스이고 mysql 데이터베이스를 사용할 예정이다.
과정
- aws 인스턴스 생성
- 인스턴스 접속 후 codedeploy agent 설치 및 node.js mysql 설치
- iam 역할 생성 및 유저 생성
- codedepoly app생성 및 배포그룹 생성
- git 워크플로우 작성
- 셸 스크립트 작성
다음의 과정을 하나씩 포스팅을 통해 진행 하도록 해보자.
Ec2 Codedeploy Agent 설치
인스턴스 생성은 기존의 인스턴스 생성 포스팅을 참고하여 생성해도 무방하다. 인스턴스 생성 후의 자동배포를 위한 패키지들을 설치하고 기본 설정을 진행한다.
인스턴스 접속 후 명령어들을 차례대로 실행한다.
1 |
sudo yum update |
리눅스 패키지 업데이트를 진행해주고 ruby, wget 패키지를 install해준다. 이후 codedeploy agent를 설치해주면 된다.
설치를 마치고 인스턴스에서 codedeploy가 정상적으로 실행 중인지 보기 위해서는 다음의 명령어를 통해 확인이 가능하다.
1 |
sudo service codedeploy-agent status |

“The AWS CodeDeploy agent is running as PID 4323”과 같은 메지지가 출력된다면 성공적으로 설치가 된것이다. 우리가 설치한것을 통해 인스턴스가 자동으로 코드 배포가 진행 되도록 해줄 것이다.
NodeJS 설치
node.js 환경의 프로젝트를 인스턴스를 통해 배포하기 위해서는 인스턴스 서버내에 node.js를 설치해 주어야 한다.
루트로 설치하기 위해서는 root로 사용자전환을 해야하는데 처음 인스턴스를 생성시 root 패스워드를 설정해주지 않았기 때문에 “sudo passwd” 명령어를 통해 비밀번호를 설정해준다.
비밀번호 설정 후 root사용자로 전환하면 된다. 사용자 전환 명령어는 su 사용자이름 으로 root전환시에는 su 만 입력해줘도 전환이 된다.
1 |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash |
설치 이후 node -v 명령어를 통해 노드의 버전을 확인해보고 설치가 되었는지 확인 할 수 있다.

MySQL 설치
프로젝트에서 사용하는 데이터베이스는 mysql이므로 동일하게 리눅스 환경에도 mysql을 설치해주어야 한다. mysql을 설치하는 과정은 다음과 같다.
1 |
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
두가지 과정으로 mysql 서버를 다운받고 실행을 통해 상태를 확인해주면 돤다. 실행과 상태 확인 명령어는 다음과 같다.
1 |
sudo systemctl start mysqld |
명령어를 실행하고 정상적으로 설치 실행이 되고있다면 다음과 같은 화면이 나올 것이다.

추가적으로 데이터베이스의 기본 설정과 포트번호 확인은 mysql명령어나 mysql의 파일이 있는 디렉토리에서 추가적으로 확인이 가능하고 수정이 가능하다. 이때 수정은 root권한으로만 수정이 되니 유저에게 권한을 부여하거나 root사용자로 수정을 해주면 될듯 하다.
MySQL 접속
mysql에 접속하는 과정은 다른 OS에서 접속하는 것과 똑같이 진행된다. 다만 리눅스는 GUI환경을 제공하지 않기때문에 터미널로 접속을 하면 된다.
먼저 mysql의 root유저의 비밀번호을 자신이 원하는 비밀번호로 수정하고 접속을 해야한다. 초기 비밀번호는 설치시 로그 파일 어딘가 남아있는데 다음 명령어를 통해 초기 비밀번호를 찾아준다.
1 |
sudo grep 'temporary password' /var/log/mysqld.log |
로그파일에서 비밀번호를 찾아보면 화면에 다믕과 같이 표시가 된다.
1 |
2021-08-28T04:03:24.500883Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: VnWiZOKof1+g |
나에게 부여된 임시 패스워드는 VnWiZOKof1+g 이부분이며 요것을 가지고 새로운 비밀번호를 생성 해주면된다.
비밀번호를 새롭게 세팅해보도록 하자.
1 |
sudo mysql_secure_installation -p'VnWiZOKof1+g' |
이렇게 명령어를 입력하면 새로운 비밀번호를 생성하라는 문구가 나오고 원하는 비밀번호를 입력해주면 된다.
이후 mysql에 정상적으로 비밀번호를 입력하여 접속할 수 있다.

성공적으로 Ec2 인스턴스에 Codedeploy agent와 mysql, nodejs를 설치해보았다. 다음은 aws에서 작업해야 하는 것들에 대해 알아보자.
git action AWS Ec2 배포하기 1
http://hanjuren.github.io/2021/09/09/aws/git-action-AWS-Ec2-배포하기-1/