Seize the day

POST : Backend study

서버 소스 배포, 서버 재시작 스크립트

거창하게 만들지 않고 초간단하게 맥미니에서 AWS에 업로드하는 스크립트와  AWS에서 올려진 소스코드를 압축풀고 서버 재시작하는 스크립트를 작성했다. 

./upload_nestserver_toaws.sh

#!/bin/sh

today=$(date +"%Y%m%d_%H%M%S")
suffix=$1

# only filename
key=nest_server_${today}_${suffix}

filename=${key}.tar.gz
echo "# create $filename"
git archive --format=tar.gz -o $filename HEAD:nest_server


echo "# mv to ~/backend/azure"
mv ./$filename ~/backend/azure

cd ~/backend/azure

echo "# create upload_command.txt"
echo "cd source_nest_server\\nput $filename" > upload_command.txt

echo "# upload $filename to AZURE"
sftp -i azure_backend1_key.pem -b upload_command.txt ec2-user@azure.mdiwebma.com

echo "# rm $filename"
rm $filename

# 서버 사이드에서 소스 압축풀고 npm 설치후에, 기존 서버 종료후, 새 서버를 재시작
ssh -i azure_backend1_key.pem ec2-user@azure.mdiwebma.com "cd ~/source_nest_server && ./deploy_source.sh ${key}"

--6/25 업데이트:  ssh로 원격 명령 실행으로 업로드와 서버 재시작까지 스크립트 하나로 동작하도록 했다.--

하루에 여러번 배포하더라도 초단위로 폴더가 생성되므로 문제가 없다. 원하다면 뒤에 피처이름을 적어줄 수 있다.  ./upload_nestserver_toaws.sh feature1  로 실행한다. ssh로 명령실행후에 계속 접속을 유지하고 있는 건 어쩔 수 없을 것 같다. 

적절히 스크립트를 재조정한다면 여러 서버에 동시에 소스 배포도 가능하다. 

~/source_nest_server/deploy_source.sh

vm에서 새로운 소스 압축을 풀고, 새로운 소스에서 서버를 재 지삭하는 코드이다.

#!/bin/sh

dir=$1
filename=$1.tar.gz

if [ -e $filename ]
then
	rm -rf $dir
	mkdir $dir
	mv $filename $dir
	cd $dir

	tar xvf $filename
	rm $filename

	echo "bun install"
	~/.bun/bin/bun install

	cd ~/nest_server
	./stop_server.sh
	cd ~/
	rm ~/nest_server
	ln -s ~/source_nest_server/$dir ~/nest_server
	cd ~/nest_server
	./start_server.sh
fi

 

top

posted at

2024. 5. 24. 20:51


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크