장고 - 프론트엔드, 백엔드 AWS 배포
- 이번 포스트에서는 백엔드 코드를 AWS에 배포하는 방법 외 프론트엔드 코드를 AWS에 배포하는 방법에 대해서 알아볼 것이다.
EC2에 웹서버 설정
1. EC2에 SSH로 접속
1 | $ ssh -i ~/.ssh/[키 페어 파일 이름 .pem] ubuntu@[도메인 주소] |
2. 패키지 최신 업데이트
1 | $ sudo apt-get update |
3. Nginx 설치
1 | $ sudo apt-get install nginx |
4. 서버 잘 동작하고 있는지 상태 확인
1 | $ systemctl status nginx |
5. EC2 인스턴스 주소로 접속하여 웹 서버 잘 동작하는지 확인
- 웹 브라우저에 퍼블릭 DNS 주소 혹은 IP 주소 입력
- Welcome to nginx! 라는 문구 표시되면 정상 동작중인 상태
6. Nginx 사용하면 static web server 생성하여 사용 가능
- Nginx 사용할 때는 한 서버 컴퓨터에서 여러 사이트를 운영할 수 있다.
사이트 별 설정파일 생성하여 수정 필요
1
2$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/front
$ sudo vim /etc/nginx/sites-available/front1
2
3
4
5
6
7
8
9
10
11server {
listen 80;
listen [::]:80;
root /var/www/front
index index.html index.htm index.nginx-debian.html;
server_name [퍼블릭 DNS 주소 혹은 IP 입력]
location / {
try_files $uri $uri/ =404;
}
}
7. 설정 파일이 올바른지 확인(문법적 오류인지, 이 옵션이 정상 작동되는건지 확인)
1 | $ sudo nginx -t |
8. 해당 설정파일을 Nginx에 활성화
1 | $ sudo ln -s /etc/nginx/sites-available/front /etc/nginx/sites-enabled/ |
9. /var/www 경로로 이동하여 front 폴더 생성
1 | $ sudo mkdir /var/www/front |
10. 브라우저 화면에 표시될 내용 작성
1 | $ sudo vim /var/www/front/index.html |
1 | <html> |
11. Nginx 재실행
1 | sudo systemctl restart nginx |
- 설치를 마치면 EC2 인스턴스 재시작해도 자동으로 Nginx가 실행되도록 등록되어 있다.
- 아래 명령어 참고
- $ sudo systemctl stop nginx
- $ sudo systemctl start nginx
- $ sudo systemctl restart nginx
- $ sudo systemctl status nginx
12. 웹 브라우저에 퍼블릭 DNS 혹은 IP 주소 입력
- index.html에 작성한 내용이 정상 표시되는지 확인
13. 고정 IP 설정
- EC2 > 네트워크 및 보안
- 탄력적 IP 선택
- 새 주소 할당 (새 주소 할당받고 인스턴스 선택안하면 과금될 수 있다.)
- 목록에 있는 IP 우측 클릭
- 주소 연결 > 인스턴스 선택 > 연결
- IP 목록에서 Name 입력
- IP 목록에 인스턴스 설정 확인
- EC2 인스턴스 정보에서 탄력적 IP 표시되는지 확인
14. Route 53 이용하여 도메인 연결
- 도메인 레코드 생성
- 레코드 이름 설정
- 탄력적 IP 입력
- 생성
15. 도메인 이름 변경되었으므로, 사이트 설정파일 수정
1 | $ sudo vim /etc/nginx/sites-available/front |
1 | ... |
16. Nginx 재실행
1 | $ sudo systemctl restart nginx |
17. 웹 브라우저에 도메인 주소 입력하여 정상 작동하는지 확인
- 도메인 연결 잘 되었는지 확인
- https://www.site24x7.com/ping-test.html 접속
- 도메인 주소 입력
- 연결 상태 확인
EC2에 장고 서버 연동
1. 장고를 위한 계정 추가
1 | $ sudo useradd -g www-data -b /home -m -s /bin/bash django |
2. 소스 코드 업로드할 폴더 생성
1 | sudo mkdir -p /var/www/django |
3. 소스 코드 폴더의 소유자 변경
1 | $ sudo chown -R django:www-data /var/www/django |
4. 파일 업로드를 위해 ubuntu 계정을 www-data 그룹에 추가
1 | $ sudo usermod -a -G www-data ubuntu |
5. 소스 코드 폴더에 그룹 쓰기 권한 부여
1 | $ sudo chmod -R g+w /var/www/django |
6. 파이썬 관련 패키지 설치
1 | $ sudo apt-get install python3-dev python3-venv python3-pip |
7. 소스 코드 폴더 밑에 파이썬 가상환경 생성
1 | $ pip3 install virtualenv |
8. 관리자 모드로 변경
1 | $ sudo -s |
9. 소스 코드 폴더에서 가상환경 활성화
1 | $ cd /var/www/django |
10. 가상환경에 장고 설치
1 | $ pip install django |
11. 장고 프로젝트 생성 및 settings.py 설정
1 | $ django-admin startproject config . |
1 | ... |
12. migrate 및 runserver 실행하여 django 연결되었는지 확인
1 | $ python manage.py migrate |
13. WSGI 모듈 중 하나인 uwsgi 설치
1 | $ pip install uwsgi |
14. uwsgi 잘 동작하는지 확인
1 | $ uwsgi --http :8000 --home /var/www/django/venv/ --chdir /var/www/django/ --module config.wsgi |
15. 관련 폴더 생성 및 설정(run, logs 폴더 생성)
1 | $ sudo mkdir run logs |
16. 폴더 소유권 변경
1 | $ sudo chown django:www-data run |
17. ini 폴더 생성
1 | $ sudo mkdir ini |
18. ini 폴더 안에 uwsgi.ini 파일 생성
1 | $ sudo vim ini/uwsgi.ini |
1 | [uwsgi] |
19. uwsgi.service 파일 생성
1 | $ sudo vim /etc/systemd/system/uwsgi.service |
1 | [Unit] |
20. uwsgi.service 시작하고 시작프로그램으로 등록
1 | $ sudo systemctl start uwsgi |
21. 기존 static web 서버에서 장고 애플리케이션 구동하기 위해 사이트 설정 파일 변경
1 | $ sudo vim /etc/nginx/sites-available/front |
1 | upstream django { |
22. static web 소스코드 및 django 소스코드 파일 생성
- Filezilla 사용하여 /var/www/front, /var/www/django에 각 소스코드 복사
23. 소스 코드가 있는 폴더의 소유자와 권한 변경
1 | $ sudo chown -R django:www-data /var/www/django |
24. 소스 코드 파일 수정되었으므로, uwsgi 재실행
1 | $ sudo systemctl restart uwsgi |
25. 웹 브라우저 접속하여 사이트 구동여부 확인
Posted
tags:
{ Django, AWS, Deploy }