EPguy

[AWS EC2] ScriptTimedOut 에러 해결 방법 본문

개발/AWS

[AWS EC2] ScriptTimedOut 에러 해결 방법

EPguy 2023. 9. 26. 15:33
REPOSITORY=/home/ubuntu/lolsquare_client

cd $REPOSITORY

sudo npm install
sudo npm run start
echo "> 배포 종료"

위에 Shell 코드로 애플리케이션을 실행했을 때 "ScriptTimedOut"라는 에러가 발생했습니다. 이 에러의 원인은 "npm run start" 명령을 사용하면 터미널 세션을 직접 종료하거나 Ctrl + C를 눌러줄 때까지 세션이 계속 유지되기 때문입니다.

이러한 상황이 발생하면 CodeDeploy는 스크립트가 아직 종료되지 않았다고 판단하고 "ScriptTimedOut"이라는 에러 메시지를 보냅니다. 즉, 터미널 세션을 수동으로 종료하지 않으면 스크립트가 계속 실행되는 것으로 간주되어 이 에러가 발생하는 것입니다.

해결방법은 간단합니다.
백그라운드에서 실행되도록 하면됩니다.
백그라운드에서 실행시키려면 아래처럼 nohup과 & 키워드를 사용하면됩니다.
nohup sudo npm run start &

REPOSITORY=/home/ubuntu/lolsquare_client

cd $REPOSITORY

sudo npm install
# 요 부분
nohup sudo npm run start &
echo "> 배포 종료"

추가적으로 Application이 이미 실행되고 있는 경우 node 프로그램을 종료하는 코드도 넣었습니다.

REPOSITORY=/home/ubuntu/lolsquare_client

cd $REPOSITORY

# 중요!!
# 이 코드는 모든 node 프로그램을 강제종료함
sudo pkill -f "node"

sudo npm install
nohup sudo npm run start &

echo "> 배포 종료"

'개발 > AWS' 카테고리의 다른 글

[AWS EC2] 2분만에 Swap 메모리 설정해보자!  (0) 2023.09.26