django는 파이썬으로 웹서비스를 제작할 수 있는 플랫폼이다. 주로 백엔드 서비스를 만들때 사용하고 프론트엔드로도 활용 가능하긴 하다.
0. django project 생성하기
이 단계는 프로젝트가 있다면 넘어가도 좋다.
django-admin startproject mysite
mysite자리에 원하는 타이틀을 입력하고 다음과 같이 입력하면 된다.
이 후 프로젝트의 settings.py 파일을 다음과 같이 수정해야한다.
DEBUG=False #말 그대로 디버깅(컴파일)할때만 True로 바꾸는 것이다.
'''
...
'''
#STATIC_URL="static/"있는 곳 밑에 추가
STATIC_ROOT=BASE_DIR / "static"
MEDIA_URL = "media/"
MEDIA_ROOT = BASE_DIR / "media"
이후 터미널에서 requirements.txt를 추가한다.
python freeze > requirements.txt
1. 터미널 접속
다음과 같이 입력
sudo apt update
sudo apt upgrade -y
sudo apt install -y python3-pip python3-dev python3-venv
2. home폴더에 ssh 연결로 git clone을 해준다.
ssh-keygen -t rsa -b 4096
한뒤 엔터 3번
cat ${public key 위치}
출력 내용 복사후 github 계정 settings에 들어가서 ssh and GPG keys 로 들어가 ssh keys에 key를 추가한다.
git clone ${프로젝트ssh주소}
하고 yes하면 클론 성공
3. python package 설치
다음과 같이 입력
cd ${포로젝트폴더명}
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
4. 보안 설정 추가
ec2-인스턴스-보안-보안 그룹 아래의 링크-인바운드 규칙 편집에서 8000포트를 추가 해준다. (규칙 추가-8000포트 추가-규칙 저장)
5. css 설정 후 웹사이트 접속 테스트
python manage.py collectstatic
python manage.py runserver 0.0.0.0:8000
안되면
python3 manage.py collectstatic
python3 manage.py runserver 0.0.0.0:8000
이 후 공용 ip주소:8000/<추가한 페이지>로 들어가서 주소에 접속이 되는지 확인해본다.
잘되면 터미널에서 Ctrl+c를 눌러 웹사이트를 종료한다.
6. gunicorn 설치 후 설정
pip install gunicorn
sudo vim /etc/systemd/system/gunicorn.service
vm으로 들어왔다면...
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/[루트폴더이름]
ExecStart=/home/ubuntu/[루트폴더이름]/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/[루트폴더이름]/[프로젝트이름].sock [프로젝트이름].wsgi:application
[Install]
WantedBy=multi-user.target
입력 후 :wq
이 후 터미널에서 다음과 같이 입력해준다.
sudo systemctl enable gunicorn
sudo systemctl start gunicorn
sudo systemctl status gunicorn
후에 active unicorn 뜨면 잘 되는 거임
7. nginx 설치 후 설정
다음과 같이 입력
sudo apt install -y nginx
sudo vim /etc/nginx/sites-available/[프로젝트이름]
vim으로 들어왔다면
server {
listen 80;
server_name [여러분의주소];
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/[루트폴더이름]/[프로젝트이름].sock;
}
location /static {
root /home/ubuntu/[루트폴더이름]/;
}
location /media {
root /home/ubuntu/[루트폴더이름]/;
}
}
입력 후 :wq
이 후 다음과 같이 입력
sudo ln -s /etc/nginx/sites-available/[파일이름(위에서 프로젝트이름으로 설정함)] /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
이후 active인지 확인
이제 사이트에 다시 접속해보고 502 에러가 발생한다면 다음과 같이 입력해준다.
chmod 755 ~
chmod 755 ~/[루트폴더이름]
이제 사이트에 다시 접속해보면 잘되는 것을 확인할 수 있다.
이로써 ec2로 django 프로젝트 배포해보기를 마치겠다.
'클라우드 > aws' 카테고리의 다른 글
aws으로 생성형 인공지능 서비스를 만들어보자! : aws bedrock (0) | 2024.05.15 |
---|---|
aws ec2사용하기 2편-ec2로 next js 배포해보기 (0) | 2024.05.15 |
aws ec2사용하기 1편-aws ec2란? (0) | 2024.05.14 |