본문 바로가기

웹 프로그래밍/Back-End

AWS EC2 / Ubuntu / Nginx 에서 Django 배포하기

반응형

AWS EC2, Ubuntu, Nginx 환경에서 Django 배포

  • 제가 AWS에 처음 Django 를 배포하면서 얻은 경험을 정리하겠습니다.
  • 저는 진행했던 프로젝트에서 Front는 Vue.js / Back은 Django를 썼습니다.
  • https://daily-life-of-bsh.tistory.com/223 에 가시면 동일한 환경에서 Vue.js를 배포하는 법을 정리해놨습니다.

1. 키 접속

$ ssh -i /path/my-key-pair.pem ubungu@my-instance-public-dns-name

2. 접속 후에 기존 패키지 업데이트

$ sudo apt-get update

3. Python 관련 패키지 설치

$ sudo apt-get install python3-dev python3-venv python3-pip

4. www-data 그룹에 ubuntu 유저 추가

$ sudo usermod -a -G www-data ubuntu
  • 이번 배포에서 유저 계정이름은 ubuntu를 사용했습니다

  • FTP 업로드할 때 ubuntu 계정을 사용하므로 소스코드 폴더에 쓰기 권한을 얻기 위해 www-data 그룹에 ubuntu 유저를 추가했습니다.

5. Django 배포를 위한 폴더 생성

$ sudo mkdir -p /var/www/html/django
  • 저는 Vue.js를 배포하면서 /var/www/html/dist 경로를 사용했기 때문에 django 또한 /html/ 경로 밑에 생성했습니다.

6. 가상 환경을 소스코드 폴더 밑에 생성

$ sudo python3 -m venv /var/www/html/django/venv

7. 코드를 업로드 하기 전에, 폴더의 소유자와 사용권한 변경

$ sudo chown -R ubuntu:www-data /var/ww/html/django
$ sudo chmod -R g+w /var/www/html/django

8. 서버에 django 프로젝트를 업로드

  • 여기에서는 설명을 위해서 django 프로젝트 이름을 backend 라고 하겠습니다.
  • backend 폴더 안에는 backend, manage.py, requirements.txt ... 등의 파일들이 있습니다.
  • FileZilla 와 같은 FTP 소프트웨어를 사용하여 backend 폴더를 통째로 /var/www/html/django/ 안에 넣습니다.

9. 가상 환경에 패키지를 설치하기 위해 소스코드 폴더로 이동

$ cd /var/www/html/django

10. 가상 환경 활성화

  • 밑의 명령어를 입력하게 되면 root 계정으로 바뀝니다.
$ sudo -s
  • 그리고 가상 환경을 활성화 시킵니다.
source venv/bin/activate
  • 그러면 계정이름 앞에 (venv) 이 생성됩니다. 그러면 가상 환경이 활성화 된 것 입니다.

11. 패키지 설치

  • django 프로젝트로 먼저 이동합니다.
cd backend
  • 그러면 현재 경로는 /var/www/html/django/backend 가 될 것이고 그 안에는 manage.py, requirements.txt 와 같은 파일들이 있습니다.

  • 다음 명령어로 패키지를 설치합니다.

pip install -r requirements.txt

12. 프로젝트 구동

python manage.py runserver 8080

13. nohup을 통하여 백그라운드 실행

  • nohup을 사용하면 python 프로그램을 백그라운드 사용자가 끄기 전까지 계속 돌릴 수 있다.
nohup python manage.py runserver 8080
  • nohup을 끄는 방법은 다음 명령어로 백그라운드 프로세스들을 확인하고
ps -ef | grep manage.py
  • 백그라운드로 돌아가고 있는 python 프로세스 아이디를 확인하여 다음과 같이 종료한다
kill 프로세스 아이디
반응형

'웹 프로그래밍 > Back-End' 카테고리의 다른 글

Let's Encrypt를 사용하여 Nginx에 SSL 적용하고 Django 실행  (1) 2020.10.24
Django - SQL  (0) 2020.09.10
Django - CRUD  (0) 2020.09.03
Django 기초  (0) 2020.08.28
Servlet Parameter 와 한글처리  (0) 2020.03.11