본문 바로가기

Lab Note/AI

Linux Django 기본 구성 방법

Django란, python 언어를 이용해서 웹서버를 구성하게 해주는 python 패키지, 그리고 그 웹서버를 의미한다.

따라서 django는 python에서 설치하지만, 웹서버의 실행은 python 파일을 실행하여 진행된다.

Ubuntu 20.04에서 진행합니다. Linux 역시 전체적으로 비슷할 것.

 

다른 python을 이용할 때처럼, django도 venv를 만들어 진행하는 편이 좋다.

sudo python3 -m venv /var/venv/server_venv

sudo chmod 777 -R var/venv/server_venv

source /var/venv/server_venv/bin/activate

 

그리고 django를 설치한다.

pip install django

 

사실 django 개발을 시작하려면 다음 명령어를 이용해야 한다.

django-admin startproject 프로젝트이름

하지만 이걸 linux 서버에서 진행하는 건 멍청한 짓이라고 할 수 있다.

그러니, 코드는 사용이 편한 윈도우 등 컴퓨터에서 작성한 다음,

filezilla 혹은 git clone 등으로 옮겨주기로 하자.

 

이때, apache2는 /var/www/html/ 안에 있는 파일만 웹으로 노출시키는 것과 다르게,

django 전체 파일을 넣을 폴더는 어디가 되어도 상관 없다.

하지만 그래도 어느 정도의 일관성은 필요하니,

가능하다면 django 파일도 모두 /var/www/ 안에 넣어주기로 하자.

 

venv 안에 django를 설치했고, django 파일을 모두 가져왔다면 남은 일은

python /var/www/(django 폴더)/manage.py runserver 0.0.0.0:8000이다.

0.0.0.0은 모든 ip 주소에서의 접속을 받는다는 뜻이고, 8000은 그 port 번호를 의미한다.

port 8000은 django에서의 관습이며, 이는 일단은 필요한 대로 바꿀 수 있다.

 

이렇게 하면 외부에서 http:// (ip 주소) :8000 포트로 접속이 가능해져야 한다.

혹시 그렇지 않다면, 서버 운영에 방화벽이 있는지도 확인해보자.

이런저런 에러가 난다면, venv에 설치되지 않은 모듈에 의한 경우가 대다수일 것이다.

짜증나겠다 싶으면 아예 서버를 재시작하는 것도 방법이다.

하지만, python /var/www/(django 폴더)/manage.py runserver 0.0.0.0:8000 실행 후에 깨닫는 건

CLI로 접속한 경우, 이 실행 화면이 계속 뜬다는 것이다.

그렇다고 ctrl C로 '이 창에서 나가기'를 해버리면 서버는 멈춰버린다.

 

이때 사용하면 좋은 것이 바로 screen이다.

screen은 말 그대로 여러 개의 화면을 쓰는 것과 같은 효과를 준다.

노트북이나 컴퓨터에서 멀티 데스크톱을 쓰는 것과 같은 원리라고 생각하면 된다.

sudo apt-get install screen (보통은 이미 깔려있다)

 

컴퓨터에서는 멀티 데스크톱의 갯수나 종류를 쉽게 알 수 있다. 하지만 CLI는 다르다.

screen -list 로 현존하는 screen의 갯수와 각각의 번호, 이름을 볼 수 있다.

그리고 screen -S 번호 -X quit으로 screen을 끌 수 있다.

아니면 screen에 들어간 상태에서 exit를 쳐도 screen은 꺼지며 기존의 screen으로 돌아가게 된다.

 

일단 screen을 이름을 지정하며 만들고 들어갈(attach) 때는 다음과 같이 쓴다.

screen -R 이름/번호

만들 때는 -S, 재진입하거나 없으면 만드는 것이 -R이지만, 통일하는 것이 좋다.

 

이 screen에서 무언가를 돌려놓고 나가고(detach) 싶다면 ctrl + a + d를 눌러줘야 한다.

흥미롭게도, 다른 명령어가 있는 것 같지는 않다.

 

django를 돌릴 때는, 따라서 webserver screen을 만들고 들어간 다음,

거기서 django를 실행하고, screen을 나가면 된다.

728x90

'Lab Note > AI' 카테고리의 다른 글

LAMP 기본 구성 방법  (0) 2024.03.02
Python venv 다루는 방법 및 에러 해결법 in Linux  (0) 2024.03.02