A. 보통은 Nginx - gunicorn - Django로 구성한다. 보통 권장되지 않지만 Django장고만 실행할 수도 있다.
로컬에서 테스트할 때처럼 하면 되고 차이점은 서버 실행 명령어다.
실행 방법
직접 해보면 잘 된다.
장고 실행하기
우선 EC2에 장고를 설치하고 실행해보자.
django_minimal을 참고하자.
아래 실행 환경은 EC2 Ubuntu 20.04(t2.micro)다.
EC2에 접속해서 아래처럼 진행하면 된다.
$ sudo apt update
$ sudo apt install python3.8-venv
$ mkdir django_minimal
$ cd django_minimal$
$ python3 -m venv venv
$ source ./venv/bin/activate
$ pip install django==3.2.12
$ django-admin startproject config .
$ python manage.py migrate
$ python manage.py runserver
이렇게 서버가 실행된 걸 볼 수 있다.
python manage.py runserver로 기본실행하면 기본 host는 127.0.0.1, port는 8000이 된다.
다른 터미널을 열어서 접속한 다음 curl 127.0.0.1:8000을 실행하자.
아래처럼 <!doctype html> 이렇게 나오면 장고 서버가 해당 ec2에서 작동하고 있다는 뜻이다.
우분투 방화벽 열고 EC2 인바운드 규칙 추가하기
우분투 방화벽을 열어 주자.
$ sudo ufw enable
$ sudo ufw allow ssh
$ sudo ufw allow http
AWS EC2 Edit Inbound rules를 눌러서 HTTP, 80포트, Anywhere로 열어주자.
앞에서 서버 실행한 명령어를 종료하고 다시 실행하자.
python manage.py runserver 0.0.0.0:80 실행하면 권한이 없다고 나온다.
아래처럼 실행해야 한다.
sudo ./venv/bin/python manage.py runserver 0.0.0.0:80
해당 EC2로 접속해보자. 브라우저에서 IP주소를 입력해서 접속할 수 있다.
ALLOWED_HOSTS 추가하기
vi ./config/settings.py 명령어로 config 디렉터리 안 settings.py를 열어서 아래처럼 ALLOWED_HOSTS에 ec2의 IP 주소를 추가하자. 내 경우 3.35.154.166라 해당 IP를 추가했다.
다시 서버를 실행하고 접속하자.
외부 접속에 성공했다.
locust로 테스트 해보기
로컬 컴퓨터에 아래처럼 진행하자.
locust 공식 문서를 참고하자.
$ mkdir locust_test
$ cd loucst_test
$ python -m venv venv
$ source ./venv/bin/activate
$ pip install locust
서버 응답 속도 얻기
locustfile.py 파일을 만들고 아래 내용을 입력하자.
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/")
locust를 실행하고 http://localhost:8089에 접속하면 화면이 뜬다.
아래처럼 ec2의 IP주소를 입력하고 users는 100을 입력하자.
Start를 누른다!
10만번 요청을 날렸을 때 실패는 없었고 통계는 아래와 같다.