0. 프로젝트 최상단 라인에 배포를 실행할 sh 및 pem 확장자 파일 생성
#!/bin/bash
HOST=123.123.123.7
echo "🚀 페이지 배포를 시작합니다."
echo "🛠️ 프로젝트를 빌드합니다."
nx build landing
if [ $? -eq 0 ]
then
echo "✅ 프로젝트 빌드를 성공했습니다."
else
echo "🚫 프로젝트 빌드를 실패했습니다. 배포를 종료합니다."
exit 1
fi
echo "📁 빌드된 파일을 서버에 전송합니다."
ssh -i scripts/private_key.pem -o StrictHostKeyChecking=no ubuntu@$HOST "rm -rf /home/ubuntu/landing/*"
ssh -i scripts/private_key.pem -o StrictHostKeyChecking=no ubuntu@$HOST "mkdir -p /home/ubuntu/landing"
scp -i scripts/private_key.pem -o StrictHostKeyChecking=no -r dist/packages/landing/* ubuntu@$HOST:/home/ubuntu/landing
if [ $? -eq 0 ]
then
echo "✅ 파일 전송을 성공했습니다."
else
echo "🚫 파일 전송을 실패했습니다. 배포를 종료합니다."
exit 1
fi
echo "🚀 배포가 완료되었습니다."
HOST=123.123.123.7
: 배포할 서버의 IP 주소를 HOST
변수에 할당합니다. 123.123.123.7
는 예시로 주어진 실제 IP 주소이며, 배포하려는 서버의 IP 주소로 변경되어야 합니다.
nx build landing
: nx
라는 도구를 사용하여 landing
이라는 프로젝트를 빌드합니다. nx build
명령은 프로젝트를 빌드하는 명령입니다. 빌드된 파일은 dist/packages/landing
디렉토리에 생성됩니다.
if [ $? -eq 0 ]
: 이전 명령의 종료 상태를 확인하기 위한 조건문의 시작입니다. $?
는 이전 명령의 종료 상태(exit status)를 나타내며, 0
은 성공을 의미합니다. 이 조건문은 이전 빌드 명령이 성공했는지를 확인합니다.
echo "🚫 프로젝트 빌드를 실패했습니다. 배포를 종료합니다."
: 이전 빌드 명령이 실패한 경우에 실행되는 블록입니다. 화면에 메시지를 출력하여 "프로젝트 빌드를 실패했습니다. 배포를 종료합니다."를 표시합니다.
exit 1
: 스크립트를 종료하고 종료 코드(exit code)를 1
로 설정합니다. 1
은 일반적으로 실패를 나타내는 코드입니다.
ssh -i scripts/private_key.pem -o StrictHostKeyChecking=no ubuntu@$HOST "rm -rf /home/ubuntu/landing/*"
: SSH를 통해 $HOST
변수에 지정된 서버에 연결합니다. scripts/private_key.pem
파일은 인증에 사용되는 개인 키입니다. 해당 명령은 서버의 /home/ubuntu/landing
디렉토리 내용을 모두 삭제하는 명령입니다.
ssh -i scripts/private_key.pem -o StrictHostKeyChecking=no ubuntu@$HOST "mkdir -p /home/ubuntu/landing"
: SSH를 통해 $HOST
변수에 지정된 서버에 연결하고, /home/ubuntu/landing
디렉토리를 생성하는 명령입니다.
scp -i scripts/private_key.pem -o StrictHostKeyChecking=no -r dist/packages/landing/* ubuntu@$HOST:/home/ubuntu/landing
: scp
명령을 사용하여 로컬의 dist/packages/landing
디렉토리의 파일들을 SSH를 통해 $HOST
변수에 지정된 서버의 /home/ubuntu/landing
디렉토리로 복사합니다. -i
는 인증에 사용할 개인 키 파일을 지정하고, -o StrictHostKeyChecking=no
는 호스트 키 확인을 비활성화합니다.
아래는 -i
, -o
, -r
옵션의 각각의 의미를 설명합니다:
-i
: SSH 인증에 사용할 개인 키를 지정하는 옵션입니다. 일반적으로 SSH 접속 시에는 비밀번호 대신 개인 키를 사용하여 인증하는 경우가 많습니다. -i
옵션 다음에는 개인 키 파일의 경로가 지정됩니다.
-o
: SSH 클라이언트의 옵션을 설정하는 옵션입니다. -o
옵션 다음에는 SSH 클라이언트 설정 옵션을 지정합니다. 예를 들어, StrictHostKeyChecking=no
는 호스트 키 확인을 비활성화하는 옵션입니다. 일반적으로 호스트 키 확인은 SSH 접속 시에 호스트의 신뢰성을 검증하기 위해 수행되지만, 이 옵션을 사용하면 호스트 키 확인 과정을 건너뛸 수 있습니다.
-r
: scp
명령에서 사용되는 옵션으로, 디렉토리를 재귀적으로 복사할 때 사용됩니다. -r
옵션을 사용하지 않으면 디렉토리가 아닌 파일에 대해서만 복사 작업이 수행됩니다. -r
옵션을 사용하여 디렉토리를 복사하면 해당 디렉토리의 내용을 모두 복사합니다.
위의 스크립트에서는 이러한 옵션들을 사용하여 SSH 연결에 개인 키 파일을 사용하고, 호스트 키 확인을 비활성화하며, scp
명령을 사용하여 디렉토리 전체를 서버로 복사합니다.
이 방법은 아주 원시적인 서버 배포 방법이자 동시에 매우 강력하고 직관적이며 편리한 방식이기도 합니다.