Ec2 Codedeploy시 겪었던 에러들 그리고 해결했던 방법들
자동배포를 진행하며 발생한 에러들과 해결했던 내용 기록
MySQL Server 자동 종료
인스턴스 접속을 끊고 나면 mysql 서버가 자동으로 종료되어 실행이 되지 않는 문제가 있었다. 프로젝트 내에서 TypeORM을 통해 mysql과 연결을 해야 하는데 서버가 꺼져있으니 연결이 되지 않아 프로젝트가 실행되지 않는 문제였다.
이 문제는 인스턴스에 연결 시 자동으로 mysql server가 자동으로 실행 되도록 설정을 해주는 방법으로 해결을 했다.
1 |
systemctl |
해당 명령어를 통해 서버 부팅 시 실행되는 프로그램들의 목록을 확인 할 수 있다. 이 목록에 mysqld를 추가해 주면 된다.
1 |
sudo systemctl enable mysqld |
다시 목록을 확인해보면 프로그램이 등록된것을 확인 할 수 있다.
Ec2인스턴스 메모리 부족
프리티어로 사용중인 EC2 t2.micro에 mysql을 설치하여 구동하니 mysql이 메모리를 상당히 잡아 먹는 다는 것을 알게되었다… 자동으로 swap 영역을 지정해주지 않는 다는 것… 또한 메모리가 1GB인데 모두 사용하지 않는다는 것 이문제를 해결해보고자 swqp구성을 직접 해주었다.
1 |
dd if=/dev/zero of=/swapfile bs=1M count=1024 |
위의 명령어들은 swqp영역을 직접 할당해주는 명령어들이다. free -m 명령어를 실행해보면 swap 영역 할당 전에는 swqp영역의 메모리가 0인데 할당 시 지정 한 만큼 늘어난 것을 확인할 수 있다.
배포 무한 로딩…
배포 단계시 무한 Pendding 상태가 지속되는 경우가 발생했다.. 그래서 또 무한 구글링…
찾아낸 해결법은 그냥 인스턴스에서 codedeploy-agent를 재실행 하라고 한다. 물론 이방법으로 해결이 안되면 다른 방법을 찾아야 겠지만 이방법으로 해결을 했다.
먼저 codedeploy-agent를 중지해준다.
1 |
sudo systemctl stop codedeploy-agent |
이후 다시 시작해주면 된다. 이렇게 간단?
1 |
sudo systemctl start codedeploy-agent |
그리고나서 다시 실행 상태를 확인해주면 끝!