일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- angular button
- egov spring ajax 사용 예시
- 호버
- 옵저버블
- TAILWIND
- prisma
- angular animation
- angular route
- route
- 검색
- 아이오닉 스크롤 이벤트
- Angular Router
- 스크롤 이벤트 감지
- summary
- Router
- ApexChart
- 스크롤 이벤트
- Ionic modal
- 모달
- ajax 사용 예시
- scroll
- formgroup
- 앵귤러 모달
- flex-1
- mysql if
- angular modal
- modal
- Oracle LISTAGG 사용 예시
- 셀렉트박스 커스텀
- 앵귤러 애니메이션
- Today
- Total
깜놀하는 해므찌로
bash deploy 배포 방법 예시 본문
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 "🚀 배포가 완료되었습니다."
1. deploy_landing.sh 파일
2. `HOST=123.123.123.7`: 배포할 서버의 IP 주소를 `HOST` 변수에 할당합니다. `123.123.123.7`는 예시로 주어진 실제 IP 주소이며, 배포하려는 서버의 IP 주소로 변경되어야 합니다.
3. `nx build landing`: `nx`라는 도구를 사용하여 `landing`이라는 프로젝트를 빌드합니다. `nx build` 명령은 프로젝트를 빌드하는 명령입니다. 빌드된 파일은 `dist/packages/landing` 디렉토리에 생성됩니다.
4. `if [ $? -eq 0 ]`: 이전 명령의 종료 상태를 확인하기 위한 조건문의 시작입니다. `$?`는 이전 명령의 종료 상태(exit status)를 나타내며, `0`은 성공을 의미합니다. 이 조건문은 이전 빌드 명령이 성공했는지를 확인합니다.
5. `echo "🚫 프로젝트 빌드를 실패했습니다. 배포를 종료합니다."`: 이전 빌드 명령이 실패한 경우에 실행되는 블록입니다. 화면에 메시지를 출력하여 "프로젝트 빌드를 실패했습니다. 배포를 종료합니다."를 표시합니다.
6. `exit 1`: 스크립트를 종료하고 종료 코드(exit code)를 `1`로 설정합니다. `1`은 일반적으로 실패를 나타내는 코드입니다.
7. `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` 디렉토리 내용을 모두 삭제하는 명령입니다.
8. `ssh -i scripts/private_key.pem -o StrictHostKeyChecking=no ubuntu@$HOST "mkdir -p /home/ubuntu/landing"`: SSH를 통해 `$HOST` 변수에 지정된 서버에 연결하고, `/home/ubuntu/landing` 디렉토리를 생성하는 명령입니다.
9. `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` 옵션의 각각의 의미를 설명합니다:
1. `-i`: SSH 인증에 사용할 개인 키를 지정하는 옵션입니다. 일반적으로 SSH 접속 시에는 비밀번호 대신 개인 키를 사용하여 인증하는 경우가 많습니다. `-i` 옵션 다음에는 개인 키 파일의 경로가 지정됩니다.
2. `-o`: SSH 클라이언트의 옵션을 설정하는 옵션입니다. `-o` 옵션 다음에는 SSH 클라이언트 설정 옵션을 지정합니다. 예를 들어, `StrictHostKeyChecking=no`는 호스트 키 확인을 비활성화하는 옵션입니다. 일반적으로 호스트 키 확인은 SSH 접속 시에 호스트의 신뢰성을 검증하기 위해 수행되지만, 이 옵션을 사용하면 호스트 키 확인 과정을 건너뛸 수 있습니다.
3. `-r`: `scp` 명령에서 사용되는 옵션으로, 디렉토리를 재귀적으로 복사할 때 사용됩니다. `-r` 옵션을 사용하지 않으면 디렉토리가 아닌 파일에 대해서만 복사 작업이 수행됩니다. `-r` 옵션을 사용하여 디렉토리를 복사하면 해당 디렉토리의 내용을 모두 복사합니다.
위의 스크립트에서는 이러한 옵션들을 사용하여 SSH 연결에 개인 키 파일을 사용하고, 호스트 키 확인을 비활성화하며, `scp` 명령을 사용하여 디렉토리 전체를 서버로 복사합니다.
이 방법은 아주 원시적인 서버 배포 방법이자 동시에 매우 강력하고 직관적이며 편리한 방식이기도 합니다.
'IT' 카테고리의 다른 글
Angular tailwind CSS button disable example / button disabled (0) | 2023.08.24 |
---|---|
법정동 스키마 구조 예시 Prisma 시도/시군구 (0) | 2023.08.22 |
Angular routerLinkActive menu handle / 앵귤러 라우터 메뉴 핸들 예시 (0) | 2023.08.20 |
Apexchart toggle custom 아펙스차트 토글 커스텀 예시 (0) | 2023.08.19 |
Prisma foreign key 배열 조회하여 등록하기 예시 / prisma connect (0) | 2023.08.18 |