사지방에서 웹 개발환경 구축하기#5. 장고 공부 환경 만들기(2) 파이썬 설치하고 장고 프로젝트 만들기
Sept. 25, 2021, 3:40 p.m.
저번에 이어서 AWS EC2에 만든 Ubuntu 인스턴스를 이용해 장고 개발 연습을 위한 환경을 만들어 보도록 하겠습니다. 이전에 생성한 Ubuntu 인스턴스에 접속하여 터미널 화면이 잘 나오는지 확인합니다.
1. 파이썬 설치 확인
터미널이 성공적으로 실행되었다면 아래와 같은 명령어를 입력해봅시다.
~$ python3
그러면 아래와 같이 파이썬 버전과 함께 인터프리터가 실행되게 됩니다. 정상적으로 인스턴스를 생성했다면 파이썬은 아마 기본적으로 설치되어 있을거에요.
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
만약 설치되어 있지 않다면 아래와 같은 명령어를 입력해 설치하세요.
~$ sudo apt install python3
Ubuntu에서는 특이하게 python을 실행할 때 꼭 뒤에 3을 붙여야 합니다. 윈도우 cmd에서는 그냥 했었어서 처음엔 조금 헷갈렸어요.
두번째로 pip가 깔려있는지도 확인하겠습니다. pip는 python 라이브러리들을 쉽게 설치할 수 있도록 도와주는 도구입니다. 장고도 pip로 설치하겠습니다. 아래의 명령어를 입력해주세요.
~$ sudo apt install python3-pip
그리고 설치가 잘 되었는지 버전을 확인해 주겠습니다.
~$ pip3 --version
정상적으로 설치되었다면 아래와 같은 출력을 볼 수 있겠죠?
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
파이썬 설치 확인을 완료했습니다!
2. 장고 설치
장고를 설치해보겠습니다. 아래의 명령어를 입력하세요
~$ pip3 install python3-django
Y를 누르고 엔터를 눌러 설치를 진행합니다.
3. 장고 프로젝트 생성
장고 설치도 완료되었으니 장고 프로젝트를 생성해 보겠습니다. 먼저 장고 프로젝트를 만들 디렉터리를 만들겠습니다.
~$ mkdir test
~$ cd test
test라는 디렉터리를 만들고 test라는 디렉터리로 이동하였습니다.
장고 프로젝트를 생성해 보겠습니다.
~/test$ django-admin startproject testsite
프로젝트는 testsite로 정했습니다. 주의 할 점은 프로젝트 명을 정할 때 python이라던가 라이브러리 명과 겹치면 안된답니다. test도 안됩니다.
잘 만들어졌는지 확인해보겠습니다.
~/test$ cd testsite
~/test/testsite$ ls
파이썬 파일 한개와 디렉터리 한개가 보입니다.
manage.py testsite
manage.py와 testsite라는 디렉터리가 있네요. testsite디렉터리 안도 살펴보겠습니다.
~/test/testsite$ cd testsite
~/test/testsite/testsite$ ls
여러 파이썬 파일을 볼 수 있네요.
__init__.py settings.py urls.py wsgi.py
이렇게 나온다면 성공적으로 프로젝트가 만들어졌습니다.
4.장고 프로젝트 실행하기
이제 생성된 프로젝트를 한번 실행해 보겠습니다. manage.py가 위치한 디렉터리로 이동하세요.
~/test/testsite/testsite$ cd ~/test/testsite
그 다음 manage.py를 통해 서버를 실행합니다.
~/test/testsite$ python3 manage.py runserver 0:8000
runserver 다음에 오는 인수는 접속 가능한 ip와 포트 번호를 의미합니다. 0을 통해 아무나 접속 가능하게 했고 포트는 8000번으로 열었습니다.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you appl
y the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 26, 2021 - 13:37:10
Django version 2.2.12, using settings 'testsite.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.
이런 식으로 나온다면 성공적으로 실행이 된 것입니다. 출력된 정보를 보면 이러한 에러 메시지를 볼 수 있습니다.
You have 17 unapplied migration(s). Your project may not work properly until you appl
y the migrations for app(s): admin, auth, contenttypes, sessions.
이것은 프로젝트에서 마이그레이션 이라는 것을 진행하지 않아서 생기는 오류입니다. 마이그레이션을 진행해 보겠습니다.
~/test/testsite$ python3 manage.py migrate
아래와 같은 출력을 볼 수 있습니다.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
마이그레이션은 장고에서 데이터베이스를 준비하는 과정이라고 생각하면 편합니다! 다시 서버를 실행해 보면 migration 관련 에러가 없어진 모습을 볼 수 있습니다.
5. 관리자 ID 생성
createsuperuser를 통해서 관리자 ID를 만들 수 있습니다. 이는 후에 관리자 사이트에 들어가서 사이트를 관리할 때 사용하게 됩니다.
~/test/testsite$ python3 manage.py createsuperuser
원하는 username을 입력하고 엔터를 누르세요
Username (leave blank to use 'ubuntu'): jellyhoho
이메일도 입력하세요.
Email address: jellyho@naver.com
비밀번호를 입력하고 한번 더 입력하세요!
Password:
Password (again):
Superuser created successfully.
관리자 ID가 생성되었습니다.
6. 관리자 페이지 접속하기
그럼 이제 관리자 페이지에 접속해 보겠습니다. 서버를 다시 실행해보세요.
~/test/testsite$ python3 manage.py runserver 0:8000
그다음 주소창에 인스턴스의 퍼블릭 IP:8000/admin/을 입력하세요. 인스턴스의 퍼블릭 IP는 우분투 터미널의 왼쪽아래에 나오거나 인스턴스 목록 화면에서 확인할 수 있답니다.
이런, 오류가 생겼네요. 일단 접속이 되어서 반응이 되긴 하는데 허가되지 않았다고 나옵니다. 그 이유는 현재 주소창에 친 주소는 장고에서 허가된 접속 주소가 아니기 때문입니다. settings.py 에서 허가해 주겠습니다.
우분투 내장 에디터로 settings.py 를 열어주겠습니다. 현재 위치하고 있는 디렉터리가 어디인지 주의하세요.
~/test/testsite$ cd testsite
~/test/testsite/testsite$ vim settings.py
vim 에디터로 settings.py 를 열었습니다. ALLOWED_HOSTS = []
로 되어있는데 이것을 어떤 호스트이든 접속할 수 있도록 ALLOWED_HOSTS = ['*']
로 바꾸어 주겠습니다.
i를 눌러서 INSERT 모드에 진입하여 값을 바꾸어 주세요.
값을 바꾸었다면 ESC를 눌러 INSERT 모드를 나오고 :wq를 누르고 엔터를 눌러 파일을 저장하고 나옵니다.
그 다음 runserver
으로 다시 서버를 실행하고 주소창을 열어 인스턴스의 퍼블릭 IP:8000/admin/ 에 접속합니다.
아래와 같이 로그인 화면이 나옵니다!
아까 만들어준 관리자 ID와 비밀번호로 접속합니다.
이런 화면이 나온다면 성공적으로 로그인하여 관리자 사이트에 접속한 것입니다.
성공적으로 Ubuntu 인스턴스에 장고를 설치했습니다. 앞으로 장고를 공부하기 위해서는 vim 에디터를 열었던 것 처럼 파일을 수정하고 추가하고 해야합니다. 그렇지만 계속 vim에디터로 작업을 해아할까요? 그렇게 되면 굉장히 불편할거에요.ㅜㅜ 다음 포스트에서는 Git을 통해서 프로젝트를 외부에서 작업할 수 있도록 하겠습니다. 그럼 안녕!
Django Ubuntu