Django 활용 App 만들기 7탄 AWS 서비스 배포

양승천·2022년 12월 5일
0

Django

목록 보기
9/12

[중요사항]

리눅스는 os 단에서 대소문자 구분을 함

파일명, 명령, 옵션 등 모든 값을 파일 시스템에 있는 값대로 코드상에도 동일하게,

대소문자 구분하여 정확하게 입력하여 입력하여야함.

[터미널로 aws remote ec2 server에 ssh 접속 / 접속 종료]

ssh login(로컬 컴퓨터에서)

: ssh -i "aws_ssh_key.pem" ubuntu@서버공인_IP

ssh logout(리모트 접속 창에서)

: exit

########## CLI 단축키 ##################################
마우스 더블클릭 : 단어 블록 설정
마우스 드레그 : 원하는 만큼 블록 설정
ctrl + insert : 복사(클립보드)
shift + insert : 붙여넣기(커서 있는 위치에 )
위쪽화살표 / 아래쪽화살표 : 명령 히스토리 이동

######## 실습 내용 : django 프로세스 관리를 위한 설정 ##########
1. django settings.py 설정
2. django 실행 : 인터넷 접속을 위한 실행
3. AWS 웹사이트의 EC2 호스트의 보안설정 추가
4. 프로세스 확인
5. django 프로세스 죽이기
6. log 확인하기
7. 기타 리눅스 명령
8. vi edit 자주 쓰는 명령
9. 간단하게 쉘 스크립트 만들어 보기
#####################################################

  1. django 프로젝트 관리 폴더/settings.py
    more settings.py 확인

    디버그 모드 설정

    DEBUG=True / DEBUG=False 차이

    서버 공인 IP 설정

    ALLOWED_HOSTS = ['3.39.187.27']

  2. django 실행 : 인터넷 접속을 위한 실행

    현재 터미널에 포그라운드 프로세스로 실행(터미널 종료하면, 프로세스 종료. 인터넷 접속 안됨)

    python manage.py runserver 0.0.0.0:8000

    백그라운드 프로세스로 실행(터미널 종료하면, 프로세스는 살이있음. 인터넷 접속이 안됨.)

    python manage.py runserver 0.0.0.0:8000 &

    백그라운드 프로세스 실행 + no hang up + file로 log 기록(터미널 logout 해도 프로세스 죽지 않음)

    nohup python manage.py runserver 0.0.0.0:8000 &

  3. AWS 웹사이트의 EC2 호스트의 보안설정 추가 - 모든 유저들이 접속 가능하도록 설정, 한글입력 안됨
    tcp port 8000 0.0.0.0/0 django_port

  4. 프로세스 확인
    ps
    ps -ef
    ps -ef | grep [키워드]
    ps -ef | grep python
    ps -ef | grep 8000

  5. django 프로세스 죽이기

예) 확인된 프로세스

ubuntu@ip-172-31-32-60:~/django_pjt/django_tutorial_encore$ ps -ef | grep 8000
UID PID PPID
ubuntu 34591 1 0 07:08 ? 00:00:00 python manage.py runserver 0.0.0.0:8000
ubuntu 34593 34591 0 07:08 ? 00:00:10 /home/ubuntu/django_pjt/dj_venv/bin/python manage.py runserver 0.0.0.0:8000
ubuntu 35221 35025 0 07:28 pts/0 00:00:00 grep --color=auto 8000

프로세스 강제 종료 및 확인(프로세스가 죽지 않았으면 kill pid로 다시 종료하기)

kill -9 [PID]
kill -9 34593
ps -ef | grep 8000

  1. log 확인하기
    tail -5 nohup.out
    head hohup.out

  2. 기타 리눅스 명령

메뉴얼 명령으로 명령 확인하기

man [명령]
man tail

네트워크 포트 확인

netstat -ntlp 설치 필요함

한면 단위로 파일 내용 보기

more (엔터키 : 한줄씩 스크롤, 스페이스키 : 페이지 단위 스크롤)

  1. vi edit 자주 쓰는 명령
    참고 : https://wayhome25.github.io/etc/2017/03/27/vi/

yy : 한라인 클립보드 복사
p : 클립보드 내용 붙여넣기
u : undo (실행 취소)
esc키 : 명령 모드로 변경

i : 현재 커러에서 insert 모드로 변경
a : 현재 커러의 글자 다음으로 커서이동, insert 모드로 변경
o : 현재 커서 아래쪽으로 한줄 삽입하고, 입력 모드로 변경
shift + o : 현재 커서 위쪽으로 한줄 삽입하고, 입력 모드로 변경

x : 한글자 삭제
cw : 단어 단위 삭제
dd : 커서가 있는 한줄 잘라내기 또는 삭제

커서 이동
h : 왼쪽으로 이동, l : 오른쪽 으로 이동
j : 아래쪽으로 한줄 이동 , k : 위쪽으로 한줄 이동
^ : 한줄의 맨 앞쪽
$ : 한줄의 맨 뒷쪽
gg 페이지의 맨 위쪽
shift + g 또는 G : 페이지의 맨 아래쪽

  1. python으로 django 프로젝트 실행/종료 프로그램 만들기

django 프로젝트 실행 file 작성 : django_start.py


import os, subprocess

os.system('nohup python manage.py runserver 0.0.0.0:8000 &')

django 프로젝트 종료 file 작성 : django_stop.py


import os, subprocess
print("before process kill")
print(os.system('ps -ef | grep runserver'))

os.system('pkill -f runserver')

print("after process kill")

print(os.system('ps -ef | grep runserver'))

  1. 쉘 스크립트로 django 프로젝트 실행/종료 프로그램 만들기

쉘 스크립트 file 작성 : start_django.sh


#! /bin/bash

echo "===== django start ========"

python django_start.py

nohup python manage.py runserver 0.0.0.0:8000 &

쉘 스크립트 file 작성 : stop_django.sh


#!/bin/bash

python django_stop.py

echo "====== django stop ========"
echo ""
echo "## before kill process ##"
ps -ef | grep runserver

pkill -f runserver
echo ""
echo "## after kill process ##"

ps -ef | grep trunserver

실행 화일로 변경

chmod +x start_django.sh
chmod +x stop_django.sh

쉘 스크립트 실행

./start_django.sh
./stop_django.sh

profile
되고싶다 직무전환 성공하자!

0개의 댓글