1. 가상환경 설치
1-1. virtualenv 설치
▶ 가상환경 프로그램 virtualenv를 설치해줍니다.
▶ 중간에 '계속 진행하시겠습니까?'라는 물음에 Y입력 후 엔터.
1-2. venv라는 이름의 virtualenv 생성
▶ venv라는 이름의 가상환경을 만들어줍니다.
(기호에 따라 이름은 바꾸셔도 상관없습니다.)
1-3. venv 가상환경 확인
▶ 프로젝트 폴더 안에 "venv"라는 폴더가 보인다면 제대로 설치가 된 것입니다.
2. 가상환경 실행
▶ virtualenv 가상환경을 실행하는 명령어입니다.
source venv/bin/activate
▶ 위와 같이 (venv)가 앞에 생겼다면, 가상환경이 제대로 실행된 것입니다.
3. 필요 프로그램 일괄 설치
▶ 본인의 장고 프로젝트에 필요한 프로그램 목록 파일인 requirements.txt 파일을 실행해 프로그램들을 일괄 설치해주겠습니다.
▶ 본인의 장고 프로젝트에 사용된/필요한 프로그램들을 일괄 설치하는 모습입니다.
4. 로컬 서버 실행
▶ 장고 프로젝트 개발단계에서 로컬 서버로 테스트해봤던 것처럼,
인스턴스의 로컬에서도 서버를 실행해 테스트 해볼 수 있다.
명령어 python manage.py runserver 0.0.0.0:8000 입력.
5. 로컬 서버 실행 확인
▶ 웹브라우저를 켜고, 본인 인스턴스의 IP주소와 그 끝에 :8000을 입력해보세요.
(이때, 본인 인스턴스의 IP주소는, 퍼블릭 IP를 뜻하며, 탄력적IP를 할당 받은 경우, 탄력적IP를 의미합니다.)
▶ 본인의 장고 프로젝트에 문제가 없다면, 잘 실행되는 것을 확인하실 수 있습니다.
▶ 확인이 끝났다면, Ctrl + C 로 서버를 꺼주세요.
6. uwsgi 설치
▶ 서버와 웹 애플리케이션 사이를 통신해 주는 인터페이스 uwsgi를 설치해줍니다.
6-1 uwsgi.ini 파일 생성
▶ 기본적으로 설치된 vim 이라는 에디터를 활용해서 uwsgi.ini 파일을 생성해줍니다.
(기존에 이미 파일이 있는 경우, 같은 명령어로 파일을 수정할 수 있습니다.)
(명령어로 vim 혹은 줄여서 vi라고 써도 무방합니다.)
▶ uwsgi.ini 파일을 생성하면 위와 같은 화면이 나옵니다.
▶ 위와 같이 입력해줍니다.
[uwsgi]
chdir=/home/ubuntu/{프로젝트 폴더}
module={프로젝트 내 파일이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv
socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666
▶ 이때, "프로젝트 폴더" 명은 말 그대로 github에서 pull 받은 프로젝트의 폴더 명을 입력하시면 됩니다.
필자의 경우, 프로젝트 폴더명이 sns이기 때문에 프로젝트 폴더에 sns를 입력해주겠습니다.
▶ 한편, "프로젝트 내 파일이름"이란, settings.py 파일이 있는 폴더의 이름을 입력해주시면 됩니다.
필자의 경우, settings.py 파일이 있는 폴더 이름 역시 sns이기 때문에 sns을 입력해주겠습니다.
▶ 주의사항: 절대 오타나지 않도록 주의하세요.
▶ 작성을 모두 완료하셨다면, esc 버튼을 누른 후,
위 내용을 저장하고 종료하겠다는 명령어인 :wq 를 누르고 엔터.
6-2. uwsgi 실행 (연결)
▶ 웹 애플리케이션과 웹 서버를 연결해주는 인터페이스인 uwsgi를 실행하겠습니다.
[uWSGI] getting INI configuration from uwsgi.ini 라는 메시지가 뜨면 성공입니다.
7. nginx 설치
▶ http 프로토콜 요청을 처리할 서버인 Nginx를 설치해줍니다.
▶ 중간에 "계속 진행하시겠습니까?"라는 물음에 Y 입력 후 엔터.
7-1. nginx.conf 파일 수정
▶ 위 명령어로 nginx.conf 파일을 열어줍니다.
▶ 키보드 커서를 계속 내리다가 http { 내부 # Basic Settings 위에, 위 내용을 추가해줍니다.
키보드 i를 누르시면, INSERT(삽입) 모드로 변경됩니다.
▶ 이때, uwsgi.sock 뒤에 세미콜론 ; 를 잊지말고 반드시 적어주셔야 합니다.
▶ 모두 작성이 완료되면, esc 버튼을 누르신 뒤, :wq 엔터를 누르시면 파일이 저장 후 종료됩니다.
7-2. sites-enabled/default 수정
▶ 위 명령어로 default 파일을 열어줍니다.
▶ default 파일의 모습입니다.
▶ 키보드 방향키를 사용해 아내로 내리시다가, location / { 안에 위치한
try_files $uri $uri/ =404;를 발견하셨다면 멈추세요.
해당 내용은 필요없기 때문에 삭제하겠습니다.
해당 줄에 커서를 가져가신 뒤, dd를 누르시면 해당 줄 전체가 삭제됩니다.
▶ 그리고 그 자리에 위와 같이 정보를 입력하시면 됩니다.
▶ 이때, static과 media는 각자의 장고 프로젝트 환경에 맞게 경로를 설정해주시면 됩니다.
(이번에도 경로 끝에 붙어있는 세미콜론을 반드시 잊지말고 적어주셔야 합니다.)
▶ 작성을 완료하셨다면, esc를 누르고 :wq를 입력 후, 엔터.
7-3. nginx 재시작
▶ 마지막으로 nginx를 재시작해주면 장고 프로젝트의 배포가 완료됩니다.
8. 서버 확인
▶ 웹브라우저를 열고, 본인의 장고 프로젝트가 제대로 배포됐는지 확인해보세요.
이번엔 인스턴스의 로컬포트인 :8000 없이,
인스턴스의 퍼블릭 IP(탄력적 IP)만 입력하시면 본인의 장고 프로젝트를 확인하실 수 있습니다.
이 주소로 접속하신다면, 인터넷이 가능한 곳이라면, 지구 어디서도 본인의 웹 앱에 접속하실 수 있습니다.
9. 배포 성공
▶ 이로써 장고 프로젝트의 배포를 성공적으로 모두 마치게 되었습니다. 수고하셨습니다. 그리고 축하드립니다.
※ 참고: 퍼블릭IP와 도메인 주소를 연결하는 작업은 다른 포스팅에서 다루도록 하겠습니다.
'Framework > Django' 카테고리의 다른 글
[Dj] 장고 urls.py : 기본세팅값 snippet (0) | 2021.07.26 |
---|---|
[Dj] 장고 settings.py : 기본세팅값 snippet (0) | 2021.07.26 |
[Dj] 장고 배포 ③ : Github에 있는 프로젝트 Pull 받는 방법 (0) | 2021.07.24 |
[Dj] 장고 배포 ② : AWS EC2 인스턴스 세팅하기 (Mac용) (0) | 2021.07.24 |
[DJ] Django 템플릿 - 천 단위로 콤마 찍는 방법 (0) | 2021.07.19 |