반응형
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 |