Dev./Cloud

[Cloud] 배포 - NCP : 자동 배포

Ivan'show 2023. 8. 1.
728x90
반응형

수동으로 배포를 해보았으니, 자동으로 배포하는 과정을 한번 진행해보자.

위 일련의 과정들을 쉘 스크립트로 작성 (로컬쪽에 저장해두기)

#!/bin/bash

# git clone
echo "Start to clone"
git clone {<https://github.com/>.....}
cd Dev_django_app

# venv 설치
echo "Start to install venv"
sudo apt-get update
sudo apt install -y python3.8-venv

# venv 구성
echo "Start to make venv"
python3 -m venv venv

# 가상환경 작동
echo "Start to activate venv"
source venv/bin/activate

# pip install
echo "start to install requirements"
pip install -r requirements.txt

# runserver
echo "Start to runserver"
cd lion_app
python3 manage.py runserver 0.0.0.0:8000

 

NCP 에서 서버를 하나 더 띄우고 (자동배포 테스트용)

서버2 에서도 root 말고 슈퍼유저 권한을 가지는 새로운 user 로 접속해보자

ssh root@{공인 IP 주소}

비밀번호 찾는법:

접속 후 유저를 생성해주고 권한을 부여하기

adduser lion2
echo "lion2 ALL=(ALL:ALL) ALL" >> /etc/sudoers.d/lion2
$ cat /etc/sudoers.d/lion2
lion2 ALL=(ALL:ALL) ALL
su lion2

다시 로컬로 돌아와 접속과정에서 공인 IP를 쓰지 않고 유저정보와 호스트이름으로 접속하게 수정

vi ~/.ssh/config
Host likelion
  HostName {공인 아이피 주소}
  User lion

Host likelion2
  HostName {공인 아이피 주소2}
  User lion2

...

이제 2번째로 오픈한 서버로, 방금 생성한 유저 정보로 접속

ssh lion2@likelion2

자 이제 로컬에서 만들어둔 deploy.sh 파일을 두번째 서버에 넣어야하는데, 간단히 그냥 복사 붙여넣기로 만들 수 있다.

그러나 이번에는 scp (리눅스 - ssh 원격 접속 프로토콜을 기반으로 한 파일 전송 프로토콜)을 사용한다.

로컬에서 deploy.sh 파일이 있는 위치에서

scp deploy.sh {생성한 유저 이름}@{공인 IP 주소}:/home/lion2/ # 가져다 놓을 경로!

해당 유저로 접속하는 비밀번호를 입력하면,

deploy.sh              100%  542    94.9KB/s   00:00

전달이 된 것을 확인할 수 있다.

이제 실행시키면,

./deploy.sh
lion2@...:~$ ./deploy.sh 
Start to clone
Cloning into 'Dev_django_app'...
remote: Enumerating objects: 22, done.
remote: Counting objects: 100% (22/22), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 22 (delta 6), reused 18 (delta 5), pack-reused 0
Unpacking objects: 100% (22/22), 5.44 KiB | 1.09 MiB/s, done.
./deploy.sh: line 6: cd: dev_django_app: No such file or directory
Start to install venv
Hit:1 <http://repo.ncloud>
...
...
...

다시 “DisallowedHost” 메세지와 함께 노란색 화면이 뜬다.

→ 서버 띄우기 까지는 성공했고 ALLOWED_HOSTS 설정만 바꾸면 된다는 뜻!

로컬에서 ALLOWED_HOSTS 를 업데이트 후 push !

서버2 에서 git pull 받고 서버 동작시키면,

(venv) lion2@...$ git pull
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 2), reused 6 (delta 2), pack-reused 0
Unpacking objects: 100% (6/6), 894 bytes | 894.00 KiB/s, done.
From <https://github.com/...>
   8519ede..3326f98  main       -> origin/main
Updating 8519ede..3326f98
Fast-forward
 deploy.sh                     | 28 ++++++++++++++++++++++++++++
 lion_app/lion_app/settings.py |  1 +
 2 files changed, 29 insertions(+)
 create mode 100755 deploy.sh
(venv) lion2@...$
python3 manage.py runserver 0.0.0.0:8000

 

 

728x90
반응형

댓글