이 포스트는 TIL | Django - django 프로젝트 AWS로 배포하기 - 1에서 이어집니다.
다음 명령어를 통해 EC2로 들어가보자.
ssh -i your_key_pair.pem ubuntu@public IPv4 address
이런 식으로 shell이 변경된다.
ubuntu@ip-111-11-11-111:~$
평소 터미널에서 django project를 만들기 위해 진행했던 초기세팅을 그대로 진행해주면 된다.
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의 약자로 파일에 대한 권한을 변경할 때 쓰는 명령어이다.
./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를 이용하여 사용할 수 있다.