TIL | Django - django 프로젝트 AWS로 배포하기 - 2

송치헌·2021년 9월 12일
0

TIL | Wecode - Django

목록 보기
16/18
post-thumbnail

이 포스트는 TIL | Django - django 프로젝트 AWS로 배포하기 - 1에서 이어집니다.

😸EC2 서버로 프로젝트 배포하기

다음 명령어를 통해 EC2로 들어가보자.

ssh -i your_key_pair.pem ubuntu@public IPv4 address

이런 식으로 shell이 변경된다.

ubuntu@ip-111-11-11-111:~$

평소 터미널에서 django project를 만들기 위해 진행했던 초기세팅을 그대로 진행해주면 된다.

1단계. Miniconda3 설치

ubuntu로 돌릴거기 때문에 Linux installers에서 Python 3.9 버전의 Miniconda3 Linux 64-bit를 오른쪽 클릭하여 링크 주소를 복사한다.

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh

wget 명령어로 Miniconda3를 설치해 주면된다.

wget

Web Get의 약자로 웹 상의 파일을 다운로드 할 때 쓰는 명령어이다.

chmod +x Miniconda3-py39_4.10.3-Linux-x86_64.sh

쉘에 ls 명령어로 현재 설치된 미니콘다 파일의 이름이 뭔지 확인하고 chmod명령어를 통해 실행 권한을 추가해 준다.

chmod

Change mode의 약자로 파일에 대한 권한을 변경할 때 쓰는 명령어이다.

2단계. Miniconda3 실행

./Miniconda3-py39_4.10.3-Linux-x86_64.sh

명령창에 다음과 같은 명령어를 입력하여 파일을 실행한다.

(이 이후에 나오는 설정들은 Enter 혹은 'Yes'를 입력하여 진행한다. 미니콘다에서 하라는대로 하면 된다.)

source .bashrc

설치가 완료되면 로컬 환경에서와 마찬가지로 가상환경을 사용할 수 있게 bashrc변경된 bashrc파일을 재 로그인하지 않고 바로 적용될 수 있도록 source. bashrc명령으로 적용시켜 준다.

(base) ubuntu@ip-111-11-11-111:~$

이런 식으로 앞에 (base)가 붙은 것을 볼 수 있다.

sudo apt-get update
sudo apt-get upgrade

그 다음 두 명령어를 차례로 입력한다.

sudo apt-get install gcc

gcc를 설치해야 mysqlclient를 설치했을 때 에러가 나지 않으므로 gcc를 꼭 설치해준다.

sudo apt-get install libmysqlclient-dev

그리고나서 mysqlclient도 설치해 준다.

conda create -n test_prj python=3.9

완료가 되면 가상환경을 만들어 준다.

conda activate test_prj

가상환경을 켜주고

git clone <github Repository 주소>

배포하고자 하는 프로젝트를 github로 부터 클론해 준다.

cat requirments.txt

프로젝트에서 만들었던 requirments.txt 파일을 위의 명령어를 입력하여 확인해 보면 목록이 뜨는데 다음 명령어를 통해 한번에 설치가 가능하다.

pip install -r requirments.txt

requirments 있는 목록이 전부 설치가 된다.

pip freeze

이 명령어를 통해 잘 설치가 됐는지 확인할 수 있다.

이제 AWS 홈페이지에서 만들었던 EC2에서 퍼블릭 IP를 확인해 보자.

이전 포스팅에서 봤던 Public IP 주소를 사용하면 된다.

settings.py파일을 수정할 것인데

settings.py 파일에서 ALLOWED_HOSTS 리스트에 EC2 서버에서 확인한 퍼블릭 IPv4 주소를 옆에 넣어주고 또 111.1.1.1:8000 이런식으로 똑같은 주소를 적고 옆에 :8000를 붙여서 두개 추가해 준다.

예를 들어, 내 퍼블릭 IPv4 주소가 15.162.111.11 이라면

ALLOWED_HOSTS = [
	'*',
    '15.162.111.11'
    '15.162.111.11:8000'
    ]

이런 식으로 만들어 주면 된다.

그 다음 로컬에서 만들었던 my_settings.py파일은 github에 올라가지 않았으므로 직접 그 파일에 들어가서 내용을 복사하여 EC2 서버상의 프로젝트에 똑같이 my_settigns.py를 만들어 그 안에다가 붙여넣는다.

이제 서버를 실행하여 보자

python manage.py runserver

가동이 잘 됐으면 성공!

그치만 로컬에서 매번 서버를 가동하는 것과 별반 차이가 없다...
gunicorn을 설치하여 계속 서버가 동작하게끔 만들어 보자.

pip install gunicorn

이제 gunicorn을 동작시켜 서버를 열어보자

nohup gunicorn --bind=0.0.0.0:8000 app_name.wsgi &

이제 구니콘이 잘 실행되고 있는지 확인하기 위해 다음 명령어를 입력해 보자.

ps -ef | grep python

요렇게 나온다! 현재 필자는 kill PID를 해서 서버가 동작하고 있지 않는다.

참고로 데이터베이스는 로컬 데이터베이스를 사용하지 않고 AWS의 RDS를 이용하여 사용할 수 있다.

profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

0개의 댓글