🧩

002 세팅

 
이번에는 Django 프로젝트 시작하는 것에 관한 내용으로 구름 IDE 프로젝트 컨테이너를 생성하고 가상 환경을 설정합니다.
 

1. 구름 IDE 시작하기

먼저, 구름 IDE 접속을 하셔서 로그인을 합니다.
notion imagenotion image
notion imagenotion image
 
앞서 컨테이너를 만들었지만 여기서 새 컨테이너를 생성하여 진행하도록 하겠습니다. 대시보드로 들어가시면 새 컨테이너 생성을 누르셔서 컨테이너를 생성해줍니다.
 
notion imagenotion image
 
컨테이너 이름은 instaclone 입력하시면 됩니다.
notion imagenotion image
 
컨테이너가 만들어지고 있다는 화면이 나오고 곧 컨테이너 생성이 완료되었다고 뜨게 됩니다. 컨테이너 실행을 누르셔서 컨테이너 안으로 들어가겠습니다. 혹시 중간에 닫기 버튼을 누르셨다면 대시보드에서 해당 컨테이너 실행을 누르시면 됩니다.
 
notion imagenotion image
 
notion imagenotion image
 
이러면 컨테이너가 생성되고 이곳은 독립된 공간입니다. 어디서든 웹 브라우저만 열린다면 실행할 수 있다는 장점이 있습니다. 그리고 이 안에서 개발도 진행할 것이지만 맨 마지막에는 서비스 배포도 진행할 수 있습니다.
notion imagenotion image
 
구름 IDE의 장점은 웹 브라우저로 어디서든 접속이 가능하고 편집, 저장까지 완료가 됩니다. 조그마한 유료 결제를 진행하게 되면은 컨테이너를 24시간 돌려서 상용 서버로 사용할 수도 있습니다. 그 내용까지 후반부에 소개를 해드릴 예정입니다.
 
구름 IDE 컨테이너를 실행하시게 되면 왼쪽에 프로젝트 폴더 트리가 나오게 됩니다. 가운데는 에디터 창, 아래는 터미널이 나옵니다.
notion imagenotion image
 
혹시 터미널 창이 안 보이는 상태이면 화살표를 눌러서 터미널 창 영역을 보이게 할 수 있습니다.
notion imagenotion image
 
만약, 프로젝트 폴더 트리를 확인하면서 아무 폴더나 파일도 보여지지 않거나 또는 로딩이 끝나지 않을 때 창을 닫고 컨테이너를 다시 실행하는 것으로 해결할 수 있습니다.
notion imagenotion image
notion imagenotion image
 
 
또는 Ctrl + R 새로 고침 기능을 통해서도 해결할 수 있습니다.
notion imagenotion image
 
아래와 같은 문구가 터미널에 보인다면 터미널 연결이 끊어져서 제대로 작동하지 않을 수 있습니다.
notion imagenotion image
 
터미널 창에 있는 새로고침 버튼을 누르거나 창을 닫고 컨테이너를 다시 실행하는 것으로 해결할 수 있습니다.
notion imagenotion image
 
notion imagenotion image
 
ls 명령어는 현재 폴더 안에 있는 파일과 폴더를 출력합니다.
root@goorm:/workspace/instaclone# ls
 
입력 후 Enter를 치시면 구름에서 자동으로 작성된 파일들이 보일 것입니다. goorm.manifestindex.py 가 보입니다. 경우에 따라 다른 파일이 더 있을 수 있습니다. 이들은 컨테이너가 생성될 때 자동으로 만들어진 파일들 입니다.
notion imagenotion image
 
제가 생성한 프로젝트 파일과 섞이지 않았으면 좋겠다고 생각했기 때문에 폴더를 하나 만들겠습니다. 폴더를 만드는 명령어는 mkdir [만들고 싶은 폴더 이름] 입니다.
root@goorm:/workspace/instaclone# mkdir instaclone
 
notion imagenotion image
 
폴더를 만든 후 ls 명령어로 폴더가 생성된 것을 확인합니다.
root@goorm:/workspace/instaclone# ls
 
notion imagenotion image
 
폴더 안에 들어가서 작업을 하도록 하겠습니다. 현재 경로를 이동하는 명령어는 cd [경로명] 입니다.
root@goorm:/workspace/instaclone# cd instaclone
 
notion imagenotion image
 
터미널을 통해 해당 폴더 안에서 작업할 수 있습니다. Window 운영체제 PC 화면에서 폴더 아이콘을 마우스 더블 클릭하는 것과 똑같은 효과입니다.
instaclone 폴더 안으로 들어왔습니다. pwd는 현재 작업하고 있는 곳의 디렉토리(working directory)를 확인하는 명령어입니다.
root@goorm:/workspace/instaclone/instaclone# pwd
 
notion imagenotion image
 
터미널 창을 깨끗이 정리하도록 하겠습니다. clear 명령어를 사용하면 터미널 창을 정리할 수 있습니다. 또는 ctrl + L을 누르면 됩니다.
root@goorm:/workspace/instaclone/instaclone# clear
 
notion imagenotion image
 
notion imagenotion image
 

2. 장고 프로젝트 시작하기

1. 가상환경 설정

가상환경이라는 것은 미니 컴퓨터를 하나 만드는 거라고 생각하시면 됩니다. 작은 컴퓨터 하나를 만들어서 외부와 독립된 공간을 만들어 오류를 줄이고 동일하게 프로젝트를 진행하기 위해서 만드는 것입니다.
 
pip를 이용해 가상환경 생성에 필요한 virtualenv 모듈을 설치합니다.
root@goorm:/workspace/instaclone/instaclone# pip3 install virtualenv
 
notion imagenotion image
 
💡
참고로 pip는 일종의 앱스토어나 구글 플레이스토어라는 거라고 보시면 됩니다. python 관련된 패키지들, 소프트웨어들을 설치할 수 있는 스토어입니다.
 
설치가 된 후에는 venv라는 이름으로 가상환경을 만들도록 하겠습니다.
root@goorm:/workspace/instaclone/instaclone# virtualenv venv
 
notion imagenotion image
 
현재 폴더에 어떤 게 있는지 확인하는 명령어인 ls를 사용합니다.
root@goorm:/workspace/instaclone/instaclone# ls
 
instaclone 폴더(작업 영역) 안에 venv 라는 폴더가 생성이 됩니다.
notion imagenotion image
 
💡
지금은 virtualenv를 설치하여 가상환경을 생성했지만 사실 python3 버전 부터는 가상환경을 생성하는 내장 모듈 venv가 기본적으로 설치 되어 있습니다. 그래서 python3 -m venv [가상환경 이름] 명령어로 바로 설치할 수도 있습니다.
 
venv 폴더 안에 설치된 파일을 사용해서 가상환경을 사용할 것입니다.
root@goorm:/workspace/instaclone/instaclone# source venv/bin/activate
 
notion imagenotion image
 
Enter를 누르시면, 터미널 명령줄 모양이 바뀌었죠. (venv) 가상환경으로 진입한 것입니다.
notion imagenotion image
 
아래 명령어는 현재 설치가 되어있는 패키지 목록이 나오게 됩니다.
root@goorm:/workspace/instaclone/instaclone# pip3 list
 
notion imagenotion image
 
virtualenv 설치했는데 Package 목록에 보이지 않습니다. 왜냐하면 가상환경에 진입했기 때문입니다. 가상환경에는 최소한의 패키지만 설치가 되어 있습니다. 그렇기 때문에 오류가 별로 없다고 보시면 됩니다. 그리고 다른 컴퓨터에 가서도 동일한 스팩으로 장고 프로젝트를 진행하실 수가 있습니다.
 

3. 장고 프로젝트 만들기

pip를 이용해 Django를 3.1버전을 설치해 보겠습니다.
root@goorm:/workspace/instaclone/instaclone# pip3 install django==3.1
 
notion imagenotion image
 
장고 프로젝트를 생성할 것입니다. 중요한 설정 파일이 들어가는 폴더를 생성해 주면서 프로젝트를 생성하게 됩니다. . (점)은 현재 폴더에 프로젝트를 생성한다는 의미입니다.
(venv)root@goorm:/workspace/instaclone/instaclone# django-admin startproject config .
 
ls 명령어를 통해 현재 디렉토리에 어떤 파일들이 만들어졌는지 확인하도록 하겠습니다.
(venv)root@goorm:/workspace/instaclone/instaclone# ls
 
config 폴더 안에는 중요한 파일들이 들어가 있습니다.
notion imagenotion image
 

4. 장고 프로젝트 살펴보기

프로젝트 디렉토리에서 살펴보겠습니다.
notion imagenotion image
 

1. settings.py

config/settings.py를 가장 먼저 살펴보겠습니다. 프로젝트 디렉토리에서 config/settings.py 를 더블 클릭하면 에디터 창에 파일 내용이 보이게 됩니다. DB를 설정하거나, 템플릿 위치를 잡는다거나, 이미지 업로드를 했을 때 이미지 파일이 저장되는 경로를 설정하거나, 언어를 설정하는 등 다양한 설정들을 여기서 진행하게 됩니다.
notion imagenotion image
 

2. urls.py

그 다음 중요한 것은 config/urls.py 입니다. Django는 기본적으로 유저가 어떤 URL을 통해 들어오는지에 따라서 명령어가 분리 됩니다. URL에 따라서 어떤 작업을 수행할지 관리하는 파일이라고 볼 수 있습니다. 프로젝트 진행을 하면서 자세히 설명을 드리도록 하겠습니다.
notion imagenotion image
 

5. 장고 기본 설정

이제부터 Django와 관련된 명령어들은 모두 manage.py를 통해 실행되고 python manage.py [명령어] 형식으로 실행합니다.
 

1. DB 만들기

이번에는 장고 프로젝트에 DB를 만들도록 하겠습니다. migrate 명령어를 수행합니다.
(venv)root@goorm:/workspace/instaclone/instaclone# python manage.py migrate
 
notion imagenotion image
 
장고 프로젝트는 여러 앱들로 구성되는데 프로젝트가 생성될 때 기본적으로 가지고 있는 앱들이 있습니다. admin, auth 등이 그것입니다. 이러한 앱들이 사용할 테이블들이 있어야하는데 migrate 명령어가 DB를 만들고 그 안에 테이블들을 생성해주는 것입니다.
 
notion imagenotion image
 
db.sqlite3 라는 파일이 생성된 것을 볼 수 있습니다. Django에서 기본적으로 제공해주는 데이터베이스입니다. php나 다른 프로젝트를 진행해보신 분들은 아시겠지만, MySQL이나 MariaDB라던가 Oracle과 같은 데이터베이스를 따로 설치하셔야 합니다. Django 같은 경우에는 자동으로 무료로 설치를 해주기 때문에 이것이 Django의 장점 중 하나입니다.
 

2. 접속 허용 호스트 설정

이제 Django 세팅이 완료 된 것입니다. default page를 열어보겠습니다. 0:80 이 의미하는 것은 80번 포트로 서버를 연다는 뜻입니다.
(venv)root@goorm:/workspace/instaclone/instaclone# python manage.py runserver 0:80
 
notion imagenotion image
 
이런 식으로 보이면 서버가 잘 작동하는 것입니다. 이제 서버에 접속할 수 있는 링크가 필요합니다. 메뉴에 보시면 프로젝트라는 탭에서 실행 URL과 포트 라는 항목을 눌러봅니다.
notion imagenotion image
notion imagenotion image
 
구름 IDE에서 접속용 URL을 생성해준 것입니다. 여기서 아래 표시된 버튼을 누르면 해당 링크로 바로 접속할 수 있습니다.
notion imagenotion image
 
이 화면이 뜨시면 제대로 접속하지 못했다는 것을 말합니다.
notion imagenotion image
이 내용을 잠깐 보시면 허용되지 않은 HOST이기 때문에 접속이 제대로 되지 않은 것을 유추할 수 있습니다.
 
그러면 구름 IDE로 다시 돌아가셔서 config/settings.py 에서 28번째 줄에 ALLOWED_HOSTS 라는 변수값을 다음과 같이 고쳐줍니다.
여기서 *는 모두, ALL을 뜻합니다. 즉, 모든 HOST를 허용한다는 의미를 준 것입니다.
 
파일명 : config/settings.py
ALLOWED_HOSTS = ['*']
 
파일을 수정했으니까 파일을 저장해 주셔야 합니다. 상단 탭에서 파일 이름 옆에 *가 있습니다. *는 파일 내용의 수정이 이루어졌지만 저장을 수행하지 않았다는 표시입니다. 저장을 하지 않으면 수정된 내용이 서버에 반영되지 않습니다. 저장 버튼을 누르거나 Ctrl+S 를 입력하시면 *가 사라진 것을 볼 수 있습니다.
notion imagenotion image
notion imagenotion image
 
파일을 저장하면 아래와 같이 서버를 실행시켜 놓은 터미널에서 파일이 수정되었다는 것을 인지하고 서버를 재가동 시킵니다.
notion imagenotion image
 
이제 수정을 했으니 잘 작동하는지 확인하겠습니다.
notion imagenotion image
 
다시 프로젝트 실행용 URL 클릭하거나, URL을 복사하거나, 직접 브라우저 주소창에 입력하셔도 좋습니다.
 
notion imagenotion image
 
기본 페이지가 잘 보입니다. 이제 프로젝트를 따라하실 준비가 되신 겁니다. 혹시라도 오류가 생기셨으면 명령어들을 순차적으로 적어놓았으니 천천히 다시 타이핑해보시면 해결하실 수 있을 것입니다.