본문 바로가기
WebFramework/Python Django

[Python Django] 1. Django 설치, 개발 환경 구성 및 기본 설정/구동

by Rosmary 2021. 6. 16.
728x90
반응형

 

 

 

 

 

필자가 최근 진행하려는 장기 프로젝트 건으로 인해 웹 페이지 개설에 대한 내용을 이리저리 찾아보고 있는 중이다. 이전에 IT로 전직을 결심하고 처음으로 시작했던 독학 내용이 HTML, CSS, JavaScript 등 웹 페이지를 만드는 것이었는데, 개인적으로 쓸만한 프로그램 하나 만들고 한동안 손을 대지 않았더니 많은 내용을 잊어버린 상태다. 조금 더 쉽게 웹 페이지 개발이 가능한 방법이 없을까 찾아보던 중, Python의 Django와 Flask를 접하게 되었다. Flask의 경우 보인, 인증, 어플리케이션 개발까지 모든 면은 from the scratch로 해야하다보니, 관련 지식이 많지 않은 필자로써는 너무나 방대한 시간이 투자되어야 한다는 부담때문에, Django를 먼저 선택하게 되었다(물론, 웹 프로그래밍이 익숙해지면 확장성이 좋은 Flask를 많이 사용하게 될 지도 모르겠다만).

 

 

1. Python 3 버전 설치

 

Django를 사용하기 위해, 자신이 사용하는 운영체제에 Python과 Python의 Django 패키지가 설치되어 있어야 한다.

Window 및 Linux에서 설치가능한 Python 3 버전의 설치파일을 아래의 사이트에서 다운받아 설치하자.

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

* Linux는 python3의 기본 버전이 낮은 편인데, 최신 버전을 원하시는 분들은 여기를 참고하여 설치를 진행하면 된다.

 

설치가 완료되면 다음과 같이 버전 정보를 확인해보자.

 

2. Django 개발 가상 환경 구성 및 가상 환경 활성/비활성

 

python은 운영체제 내에서 개발 환경을 가상으로 구성해주는 기능을 가지고 있다. 이 기능은 개발에 사용할 폴더 외에 컴퓨터의 다른 영역에서 자원이 소모되는 것을 막기 위함이라고 보면 된다. 예를 들어보자. Python에는 머신 러닝에 사용하는 텐서플로우(TensorFlow)라는 라이브러리가 존재하는데, 이 라이브러리의 크기가 매우 방대한 편이다. 따라서 별도의 개발환경 구성 없이 텐서플로우 라이브러리를 설치하면, 머신 러닝과 관련없는 Python 프로젝트를 진행할 때, 이 텐서플로우 라이브러리 때문에 쓸데없이 개발 환경이 느려지는 현상이 발생하게 된다. 즉, 

 

"우리는 이 폴더 안에서 특정 Python 라이브러리만 설치해서 사용할 거야"

 

라고 설정하는 것이라 보면 된다.

 

python에서 옵션 -m을 사용하면 특정 모듈을 호출하여 사용할 수 있는데, 개발을 위한 가상 환경 구성에 사용되는 모듈 이름은 venv(Virtual ENVironment)다. 아래와 같이 명령어를 입력하면, Python 개발 환경을 위한 별도의 폴더가 생성된다.

 

** 명령어: python -m venv {가상환경을 구성할 폴더명}     * 필자는 폴더명을 Django로 할 것이다.

 

명령어 입력 후, Django 폴더가 생성되며, 폴더 내에는 Python 명령어 및 라이브러리 폴더가 함께 생성된다. Django 폴더 내에서 사용할 수 있는 명령어는 windows의 경우 Scripts 폴더에, Linux는 bin 폴더에 위치하고 있다. 이 폴더 내의 명령어 목록 중, activate라는 명령어 파일이 있는데, 이 명령어를 실행하면 우리가 생성한 Django 가상 환경 폴더가 활성화된다.

 

Linux는 source 명령어로 activate 명령어를 실행하면 된다.

 

명령어가 제대로 실행되면 위의 그림과 같이 프롬프트 앞단에 가상 환경 폴더 명이 괄호 내에 기입되어 나타나는데, 이 상태가 가상환경으로의 작업이 가능한 상태라고 보면 된다.

 

가상 환경의 명령어 폴더 내에는 존재하지 않지만, deactivate라는 이름의 명령어도 존재하는데, 이 명령어는 활성화된 가상 환경을 비활성화하는 명령어라고 보면 된다.

 

 

deactivate 명령어가 적용되면, activate 명령어로 프롬프트 앞단에 나타났던 가상환경 폴더명이 사라진다.

 

 

 

3. 가상 환경에 Django 라이브러리 설치

 

이제 가상 환경에서 pip 명령어로 Django를 설치해주자. 

 

** 명령어: pip install django

 

Windows도 동일한 명령어로 Django 설치를 진행해주면 된다.

 

Django 설치가 완료되면 명령어 폴더 내에 Django-admin 및 sql 관련 파일이 새로 생성된 것을 확인할 수 있다.

 

 

가상 환경 폴더가 활성화된 상태에서 django-admin 명령어가 적용되는지 확인해보자. 

 

** 명령어: django-admin

 

여기까지 마무리 되었다면, Django 사용을 위한 기본적인 환경 설정은 끝이다. 참고로 가상환경을 비활성화하거나, 가상 환경 폴더를 삭제하면 (너무나 당연하게도)django-admin 명령어는 사용할 수 없게 된다.

 

 

4. django 웹 서버 구동을 위한 프로젝트 생성

 

django-admin 명령어는 바로 위의 화면에서 보았듯이, 사용할 수 있는 여러 옵션이 존재한다. 그 중 startproject 라는 옵션이 있는데, 이 옵션과 함께 django-admin 명령어를 사용하면 웹 서버 구동을 위한 하나의 프로젝트 파일을 생성할 수 있게 된다. 

 

가상 환경 폴더 가장 최상단 위치에서 아래의 명령어로 Web_Server_Test라는 프로젝트를 생성해보도록 하자

 

** 명령어: django-admin startproject Web_Server_Test

 

명령어가 제대로 입력되었다면, 현재 디렉토리 하단에 Web_Server_Test라는 폴더가 만들어졌을 것이고, 그 폴더 아래에 manage.py와 Web_Server_Test 폴더가 하나 더 생성되어 있을 것이다. 

 

 

# manage.py

manage.py는 웹 서버의 구동 및 웹 서버 구동에 필요한 데이터베이스를 관리하는 명령어라고 보면 된다. 해당 파일을 실행하면 아래와 같이, 옵션으로 사용할 수 있는 문구도 함께 출력된다.

 

 

** 만약 Linux에서 sqlite 버전과 관련된 에러가 나타나는 경우 여기를 참고하여 해결하도록 하자.

 

 

 

# Web_Server_Test 폴더

 

 

Web_Server_Test 폴더에는 웹 실행에 필요한 여러 설정 정보가 Python 파일로 저장되어 있다. Django를 배우는 초기 단계에서 눈여겨봐야 할 파일은 settings.py인데, 이 파일은 httpd 서비스의 설정 파일과 유사하게, Listen IP, 인증키 또는 기본 디렉터리 경로 등을 설정하는 파일이다(이 파일은 잠시 뒤 설정을 진행하면서 다시 보도록 하자).  urls, wsgi, asgi 등은 추후 포스팅을 진행하면서 추가 설명을 진행하려 한다.

 

 

 

5. 웹 서버 구동 전 설정 

 

 

(1) 웹 서버에 필요한 DB Migration

 

Django의 웹 서버가 실행되면, 크게 두 가지 형태의 웹이 제공되는데, 하나는 사용자에게 보여지는 웹 화면, 또 다른 하나는 웹 페이지를 관리하기 위한 관리자 화면이다. 사용자 화면이야 우리가 아직 만든 html 파일이 없으니 그렇다 치더라도, 관리자 페이지의 경우 기본적인 포맷이 미리 존재하는 화면이기 때문에 관리에 필요한 DB 테이블도 미리 생성이 되어 있어야 한다. 

 

"그럼... Django를 시작하기 전에 DB를 배워둬야 할까요?"

 

배워두면 좋긴 하지만, 다행히도 Django는 ORM이라는 기능을 제공하고 있어서 DB Table 생성을 위해 추가로 SQL을 배워야 할 필요는 없다. 다만 관리자 페이지에 활용할 기본 형태의 DB Table을 생성할 필요성은 있기 때문에, manage.py 파일을 실행하여 기본 DB 값을 Migration 해야 한다. manage.py 파일이 위치한 폴더로 이동한 뒤, 아래의 명령어를 사용하여, 기본 DB를 우리가 생성한 Project에 적용해주도록 하자.

 

** 명령어: python manage.py migrate

 

 

 

migrate이 정상적으로 진행되면 db.sqlite3 파일이 생성된다. 웹 서버는 이 파일 내의 DB 내용을 참조하여 Web 서버를 구성하게 된다(아직은 관리자 페이지와 관련된 내용 뿐이지만 말이다).

 

 

(2) 웹 페이지 관리자 계정 생성

 

Django의 웹 페이지는 크게 사용자 페이지와 관리자 페이지가 제공된다고 언급했다. 관리자 페이지의 경우, 인가된 관리자 외의 다른 사람이 웹 설정을 변경하는 상황이 발생해서는 안되기 때문에 반드시 관리할 계정을 한 개 이상 설정해주어야 한다. 

 

이 관리자 계정 생성 역시 manage.py에서 진행할 수 있으며, createsuperuser 옵션을 통해 계정을 생성하면 된다.

 

** 명령어:   python manage.py createsuperuser

 

 

 

(3) Listen IP 설정

 

이제 manage.py 파일이 위치한 폴더에서 Web_Server_Test 폴더로 이동하여 settings.py를 열어보자.

 

 

대략 30번째 줄 전후로, Allowed_Host라는 리스트 변수가 보이는데, 이 변수가 HTTPD의 Listen Host와 동일한 역할을 하는 변수다. 

 

 

이 변수가 빈 값으로 제공되는 경우, 기본으로 localhost 또는 127.0.0.1로만 웹 서버 접속이 가능하게 된다. Linux를 사용하는 분들이라면, 리눅스의 IP를 쌍따옴표 사이에 넣어 입력해주면 된다. 둘 이상의 IP를 접속 IP로 사용하고 싶다면 Python 리스트 형식을 입력하듯이 값을 입력해주면 된다.

 

 

만약, IP가 아직 정해지지 않은 상태라면, Asteric(*) 표시로 전체 IP를 Allowed_Host로 지정하는 것도 가능하다. Django의 경우, 웹 서버 구동 시 IP와 포트를 별도로 지정하기 때문에, Allowed_Hosts 값이 *로 지정되어 있더라도 동작에 큰 무리는 없다(보안상으로 좋지는 않지만 테스트라면 크게 상관은 없다).

 

 

변경이 완료되었다면 파일을 저장하고, 프로젝트 폴더의 최상단(manage.py 파일이 위치한 폴더)으로 이동하자. 

 

 

6. Web Server 구동

 

이제 Django 프로젝트로 생성한 기본 웹 서버를 구동해보자. 구동 명령어는 manage.py 옵션의 runserver를 입력하면 된다. 웹 서버의 IP와 포트를 별도로 지정하고 싶은 경우, runserver 뒤에 IP:port 를 별도로 명시해주면 된다.

 

** 명령어:  python manage.py runserver {allowed_hosts에 등록한 IP}:{웹 서비스 제공 포트 번호}

 

!!  IP와 포트를 별도로 명시하지 않는다면, 127.0.0.1:8000이 기본값으로 설정된다.

!!  포트는 1024번 이상의 번호를 사용해야 하며, Well Known 포트 사용 시, 권한 문제로 서버가 실행되지 않는다.

Windows에서 실행한 Django 웹 서버

 

 

이 상태에서 우리가 지정한 IP와 포트로 접속하게 되면, 아래와 같이 로켓이 날아가는 그림이 화면에 출력된다.

 

Linux의 경우, 웹 실행 후에 접속이 되지 않는 경우도 있는데, Linux 자체 방화벽에 의해 막혀서 그런 것이니 아래의 명령어를 사용하거나 iptables 사용법을 참고하도록 하자.

 

**  명령어: iptables -F, iptables -X

 

기본 웹 서버는 개발 모드로 설정되어 있어, 접속한 내역에 대한 로그도 실시간으로 확인이 가능하다. 

 

 

관리자 페이지 역시 별도의 주소로 접속이 가능하다. 

웹 브라우저에 입력한 주소 뒤에 /admin을 입력하면 조금 다른 화면이 나타나는데, 이 화면이 관리자 페이지다. 관리자 페이지 로그인은 python manage.py createsuperuser에서 입력했던 계정과 비밀번호를 입력하여 로그인 하면 된다.

 

 

 


 

이번 포스팅에서는 Django 설치와 Django 웹 서버의 기본 설정과 구동에 대해 작성해보았다. 다음 포스팅은 웹 서버 구동에 필요한 설정 파일에 대해 하나씩 살펴보며 Django 웹 서버가 어떻게 동작하는지 확인해보려 한다.

 

 

 

Fin.

 

 

 

 

 

 

반응형

댓글