jm_p_op

aws Django 서버 배포하기 -2(서버에서 http포트로 Django 실행하기) 본문

서버/aws

aws Django 서버 배포하기 -2(서버에서 http포트로 Django 실행하기)

jm_p_op 2023. 5. 21. 00:58

1.인스턴스 열기

1-1.EC2인터페이스

1-2.CMD에서 연결하기

https://jmpop.tistory.com/85

 


2.기본 베이스

  • 명령어는 리눅스를 사용한다.
  • python3 버전은 3.10.6이다.(버전에 의한 충돌 생각하기)
  • tab키는 신이다!

 

  • ls으로 디렉토리 보기 (ls -al 자세히보기)
  • cd 로 열기
  • vim으로 보기,생성,수정 가능
  • rm -rf 삭제
  • sudo 강제로 하기(시스템 디렉토리 같은경우)
  • ~ 홈   (/home/ubuntu/ 와 동일)
  • /etc/ 서버프로그램
  • Ctrl + C 취소 ("exit()", ":q" , "esc"  등등 사용 프로그램마다 종료방법이 다르다)

 


3. 서버 세팅

sudo apt update #서버 최신화 확인
sudo apt upgrade #서버 업그레이드
#진행중 y/n에서 y눌르기

 

#엔터키

#방향키로 user쪽에 맞춘후 엔터
sudo apt install python3-pip python3-dev python3-venv  #사용할 파이썬기능 다운로드
#위와 똑같이 하기(보라창)

4.프로젝트 다운받기

git clone 주소
#git clone https://github.com/jmpop97/pet_care.git

5.루트폴더(manage.py를 가지고 있는 폴더)에서 프로젝트 하듯이 venv 설치 ,실행, requirements.txt 설치, 시크릿키 생성

  • venv 설치 실행
python3 -m venv venv		#venv설치
source venv/bin/activate	#venv실행
pip install -r requirement	#필요 인스톨하기
vim my_settings.py		#시크릿키
vim pet_care/settings.py #setting.py 열기
  • 연결 포트열기
    • settings.py에 allowed_host=['서버의 주소']추가

 

python3 manage makemigration	#DB설정
python3 manage migrate	#DB만들기
python manage runserver 0:8000	#8000포트로 서버 열기

  • http://서버의 주소:8000
  • 8000포트로 연결되었는지 서버에서 확인
  • 안되었다면 security그룹에서 8000포트 확인, setting.py 확인하기
  • 작업하는 창(cmd혹은 ec2 터미널창)을 닫을시 꺼진다.

6.Gunicorn (서버에서 계속 실행)

#venv에서 할것
pip install gunicorn	#구니콘 인스톨
sudo vim /etc/systemd/system/gunicorn.service	#gunicorn실행 앱 설정

gunicorn.service

#필자는 프로젝트 이름이 pet_care이다.(settings.py 있는 폴더 이름, 혹은 startproject의 이름)
WorkingDirectory

  • #가상환경의 activate와 같은 위치에 있는 gunicorn까지의 위치

ExecStart

  • #manage.py와 같은 위치에 있는 {프로젝트 이름}.sock 
  • #{프로젝트 이름}.wsgi:application
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/pet_care
ExecStart=/home/ubuntu/pet_care/venv/bin/gunicorn  --access-logfile - --workers 3 --bind unix:/home/ubuntu/pet_care/pet_care.sock pet_care.wsgi:application



[Install]
WantedBy=multi-user.target

 


구니콘 설정,실행,상태

// 인스턴스 시작시 자동시작
sudo systemctl enable gunicorn
// 지금 시작
sudo systemctl start gunicorn
// 상태 
sudo systemctl status gunicorn

정상상태:

에러상태: 주소문제 혹은 주소에 해당파일이 없는경우 에러


7.Nginx (url경로 처리)

sudo apt install nginx	#nginx설치
#뭔가 뜰시 맨첫번째것으로 엔터
sudo vim /etc/nginx/sites-available/{프로젝트명}	#서버 설정, 원하는 이름으로 만들어도 된다.

{프로젝트명}

server {
    listen 80;
    server_name 13.125.219.16;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/pet_care/pet_care.sock;
    }

    location /static {
            root /home/ubuntu/pet_care/;
    }

    location /media {
            root /home/ubuntu/pet_care/;
    }

}

listen 

  • 받는 포트번호

server_name

  • 서버 접속하는 ip주소

location / 

  • preoxy_pass {프로젝트 이름.sock까지의 경로}

 

  • 해당 파일 링크들

 


nginx 설정,실행,상태

#enabled에 방금 만든것을 바로가기 만들기
sudo ln -s /etc/nginx/sites-available/pet_care /etc/nginx/sites-enabled/

#코드 테스트하기
sudo nginx -t
#아래 2가지 뜨면 성공, 에러시 바로가기와 설정을 확인하기
#nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
#nginx: configuration file /etc/nginx/nginx.conf test is successful

sudo systemctl restart nginx	#재실행
sudo systemctl status nginx	#상태보기

running 확인하기

 

권한 설정하기

chmod 755 ~/{nginx설정파일명}/
#위의 예시 chmod 755 ~/pet_care/
chmod 755 ~

8. 위와 같이하면 http:// 에서 8000포트 없이 서버가 항시 돌아간다.

admin 깨진것을 추가적으로 정돈해보자

 

python manage.py collectstatic
python manage.py migrate

#슈퍼유저 만들어서 로그인하기
python manage.py createsuperuser