django 설치, 환경설정
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
django 설치, 환경설정
저는 django를 다뤄본지는 오래되지 않았고, django와 python의 철학을 너무 좋아하는 개발자 중 한 사람 입니다. python의 철학 중에 "언어와, 국경, 인종, 성별의 차별없이 평등한 뭐시기..." 가 기억은 안나지만 너무 좋았고, django girls 등의 tutorial이 너무 좋았습죠. 전 엄청 빠삭하게 알고 있는 것도 아니고 시니어 개발자도 아닙니다. 재미로 python을 자주 만져보던 개발자입니다. 따라서 django게시판에 정리하는 내용들은 주로 어떻게 뭐를 해결했다는 팩트가 주를 이룰 것이고, 자세하게 설명을 다루지는 못할 것 같습니다.
대신 장담할 수 있는것은 직접 돌려보고 되었던 것만을 기록으로 남겨서(저도 나중에 봐야하니까요), 다른 사람이 실수 하지 않도록 인도하고 싶은 마음이 큽니다.
다들 답답하잖아요. 설명을 정말 자세히 읽었는데, 명령어 돌려보면 안되는 경험 다들 해봤잖아요 ㅋㅋ
저는 그냥 CLI명령만 남겨놓아서 나중에 보기 편하게 명령어 리스트, 환경설정과정만 남겨놓겠습니다...
python설치, pip ungrade, virtualenv 설치, django 설치
python 설치
윈도우, 맥, 리눅스
https://www.python.org/downloads/
에서 OS에 맞는 python 설치파일을 다운로드 받습니다.
리눅스에서 CLI로 설치
만약 GUI가 지원되지 않는 서버환경에 터미널로 설치한다면 wget명령어를 사용해야겠죠?? (예를 들면 AWS EC2 인스턴스에 설치할 경우 등등)
그리고 해당 tar ball을 다운받은후 /usr/local/bin/ 등의 디렉터리 아래에 옮겨놓거나 해당 위치에 심볼릭링크를 만들어놓겠죠. 해당 과정은 생략하고 나중에 추가해보겠습니다.
설치 되었는지 확인
윈도우 > 명령프롬프트(도스)창을 열어서 아래 명령어 입력
$ python -V
맥 OS > 터미널을 열어서 아래 명령어 입력
$ python -V
저는 아래와 같이 나타나네요.
$ Python 2.7.13
저는 2.7.x 를 사용한다는 전제하에 django 개발을 시작해보도록 하겠습니다. python3를 사용하고 싶지만, 이미 기존에 python 2.7.x를 사용하는 회사들의 저변이 아직까지도 너무 넓기도 하고 아직 일단은 2.7.x에 익숙해서리... 2.7.x로 정리해볼까 합니다. 향후 프로젝트가 커지면 3.x 대로 마이그레이션 하고자 합니다. 저도 3.x 정말 쓰고 싶습니다. 유니코드가 완벽하게 지원된다는게 너무 끌려서요 ㅋㅋ
pip upgrade
$ pip install --upgrade pip
이 명령어를 사용하신다면 pip 의 버전이 업그레이드 될 것입니다. pip가 뭔지 간략하게 나마 몇 개의 문장으로만 정리해보겠습니다.
pip는 python 패키지 관리 유틸입니다. 파이썬을 설치했다면 기본으로 존재하지만, 최신 버전으로 업그레이드를 하면 차후 개발시 의존성 트리가 잘 깨지는 현상을 방지할 수 있습니다.
virtualenv 설치
윈도우
$ pip install virtualenv
맥OS
$ sudo pip install virtualenv
또는
$ sudo easy_install virtualenv
로 설치가 가능합니다.
가상환경 설정
django 바이너리를 사용하기 위한 가상환경을 세팅한다. 여기서는 ~/workspace/env라는 디렉터리를 만들어서 진행하도록 하겠습니다. 윈도우의 경우에는 C:
\Users\[사용자명]\workspace 디렉터리를 만드시고 그 안에 env 디렉터리를 만들면 됩니다.
$ cd ~/workspace $ mkdir env $ cd env $ virtualenv pyscrapper $ source pyscrapper/bin/activate (pyscrapper) $
django 설치
방금전 만들어뒀던 'pyscrapper'라는 가상환경 내에서 django를 pip로 설치합니다. 이렇게 하면 전역으로 설치된 pip에 django를 설치하는 것이 아닌, virtualenv로 지정한 특정디렉터리에 설치되게 됩니다. 이렇게 하는 이유는 프로젝트마다 django의 버전을 다르게 하여 의존성이 깨질수도 있는 현상을 방지하기 위해서입니다.
pip freeze : pip를 통해 설치한 패키지들의 이름을 출력하는 명령어입니다.
(pyscrapper) $ pip install django (pyscrapper) $ pip freeze Django==1.11.12 pytz==2018.3
가상환경 진입을 위한 스크립트 작성 및 의존성 트리 txt파일 보관
(pyscrapper) $ cd ~/workspace/pyscrapper (pyscrapper) $ pip freeze > requirements.txt (pyscrapper) $ vim env_activate.sh source ~/workspace/env/pyscrapper/bin/activate [ESC]키 누르고, :wq! 입력 후 엔터
여기서 진행한 명령은 의존성 트리의 명세서를 requirements.txt로 남겨두고 가상환경으로 진입하는 스크립트를 만든 것입니다.
의존성 트리로 남겨놓은 것은 깃허브에 따로 저장소를 두어 저장하고, 다른 PC에서도 git clone 후 작업할수 있게끔 미리 작업을 해둔 것입니다.
django 프로젝트 생성
프로젝트의 디렉터리는 임의로 ~/workspace/pyscrapper로 지정했습니다.
(pyscrapper) $ cd ~/workspace/pyscrapper (pyscrapper) $ django-admin.py startproject scrapper (pyscrapper) $ tree . ├── env_activate.sh ├── requirements.txt └── scrapper ├── manage.py └── scrapper ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 2 directories, 8 files
어플리케이션 생성
django 프로젝트를 django-admin.py 파일을 이용해 생성했다고 해도 환경설정이 끝난것이 아닙니다. django는 하나의 프로젝트 내에 여러가지의 웹 어플리케이션을 담아둘 수 있습니다. 현재 pyscrapper라는 프로젝트 내에 상관성 분석을 위한 앱을 만들기 위한 것이 목적이므로 따로 프로젝트 내에 웹앱을 구성하도록 하겠습니다. 명령어는 아래와 같습니다.
(pyscrapper) $ cd ~/workspace/pyscrapper/scrapper (pyscrapper) $ python manage.py startapp relational_analysis (pyscrapper) $ tree . ├── manage.py ├── relational_analysis │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py └── scrapper ├── __init__.py ├── __init__.pyc ├── settings.py ├── settings.pyc ├── urls.py └── wsgi.py 3 directories, 14 files
Postgresql python connector 설치, DBMS 유저 생성 및 권한 지정, Database 생성
# 1. postgresql python connector 설치 (pyscrapper) $ pip install psycopg2 Collecting psycopg2 Downloading psycopg2-2.7.4-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (1.7MB) 100% |████████████████████████████████| 1.7MB 444kB/s Installing collected packages: psycopg2 Successfully installed psycopg2-2.7.4 # 2. dbms user 생성 및 설정 (pyscrapper) $ createuser -d -P -U postgres scrapper # postgres라는 유저로 로그인해서 scrapper라는 유저를 생성하겠다는 의미 # -U : 유저 'postgres'로 로그인 하겠다 # -d : scrapper에게 db생성권한을 부여하겠다는 옵션 # -P : 여기서 바로 비밀번호를 지정하겠다 Enter password for new role: Enter it again: Password: # 3. Database 생성 (pyscrapper) $ createdb -U scrapper scrapper_repo # scrapper 유저로 로그인해서 scrapper_repo 라는 db를 만들겠다는 의미 Password: # 저는 모든 비밀번호를 1111로 세팅했습니다.
Django 내부 DATABASE 접속 설정
django-admin.py startproject scrapper 라는 명령어로 생성된 scrapper 디렉터리에는 같은이름의 서브 디렉터리로 scrapper 디렉터리가 생성되어 있는데 이 서브 디렉터리는 주로 웹앱들의 관리를 위한 설정파일들이 위치하고 있습니다. 저는 여기에서 DB설정을 해주기 위해 아래와 같이 서브 디렉터리로 이동후 settings.py를 수정하겠습니다. 그리고 향후 호칭을 할때는 관리디렉터리 scrapper라고 부를께요.
# cd ~/workspace/pyscrapper/scrapper/scrapper # 서브디렉터리는 프로젝트 관리 용도의 디렉터리입니다. (pyscrapper) $ cd scrapper # vim ~/workspace/pyscrapper/scrapper/scrapper/settings.py (pyscrapper) $ vim settings.py # DATABASE라고 적힌 부분을 찾아서 아래와 같이 수정합니다. DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', 'ENGINE' : 'django.db.backends.postgresql_psycopg2', 'NAME' : 'scrapper_repo', 'USER' : 'scrapper', 'PASSWORD' : ' 1111 ', 'HOST': 'localhost', 'PORT' : ' 5432 ', } }
settings.py에 기술하는 Database 관련 설정들 및 드라이버 이름들에 대한 설명들은 아래에 굉장히 자세히, 정확하게 적혀있으니 참고바랍니다.
django-girls tutorial korean
https://jinpark-dg.gitbooks.io/django-girls-extended-tutorial-korean/content/optional_postgresql_installation/index.html
djangoproject.com
https://docs.djangoproject.com/ko/2.0/intro/tutorial02/
postgresql 설치하기
https://tutorial-extensions.djangogirls.org/ko/optional_postgresql_installation/
PostgresSQL Database 설치
이 내용은 django girls에 너무 자세히 잘 설명되어 있는 관계로 아래 URL로 대체하도록 하겠습니다.
pycharm 설정
django로 웹 프로젝트를 진행할 때 주로 사용하는 pycharm기준으로 개발환경 설정과정을 정리해보겠습니다. pycharm은 jetbrain사에서 내놓은 IDE이고, 대표적인 제품군으로 Intellij, DataGrip 등이 있습니다. 네~ 제가 가장 자주 사용하는 IDE는 intellij, DataGrip, pycharm입니다. 그중에서 DataGrip을 가장 많이 자주 사용하고 있구요.
jetbrain 제품군은 License 구매시 Personal을 선택후, 학생일 경우 1년동안 무료로 제공해주고 그 다음 해부터 비용이 점점 저렴해지다가 3년 째 부터는 동결됩니다. 자세한 내용은 인터넷을 찾아보시면 되구요. 추후 시간이 된다면 pycharm community edition (PyCharm CE) 기반의 환경설정법도 다뤄볼 생각입니다.
pycharm 아이콘을 선택했을 때 나타나는 화면입니다. 우리는 이미 프로젝트 생성을 마친 상태이므로 Open버튼을 클릭합니다.
우리가 생성했던 프로젝트 경로가 기억나시죠? ~/workspace/pyscrapper입니다. pyscrapper를 최상단 디렉터리로 선택하시면 됩니다.
런처(시작화면)에서 IDE로 진입하면 위와 같은 화면이 나타나는데 여기서 [Preference]를 찾아서 선택했을때의 모습입니다.
여기서 오른쪽의 톱니바퀴 버튼을 클릭해서 [Add Local...] 을 선택합니다.
맥 OS에서 Preference로 진입하기 위한 단축키는 [Command] + , 입니다.
윈도우 OS에 대해서는 저도 잘 모릅니다. (찾아보셔요)
(현재 자취방에 PC용 윈도우 OS가 없는 관계로 모든 프로그래밍은 맥os를 사용중입니다.
추후 본가에 갔을때 시간이 된다면 윈도우 OS 단축키관련 내용을 업데이트 하도록 하겠습니다 )
Project Interpreter 메뉴를 선택하시고 나타나는 팝업에서 Exisiting environment 항목을 체크 > 오른쪽의 [...] 버튼 클릭
트리구조에서 가상환경을 생성했던 경로인 ~/workspace/env/pyscrapper/bin/을 찾아서 들어갑니다.
~/workspace/env/pyscrapper/bin 에서 python2.7을 클릭 > [OK]버튼 클릭
[OK]버튼 클릭
Apply 버튼 클릭
좌측 [Languages & Frameworks] 메뉴 클릭>하위 메뉴중 [Django] 클릭,
우측 화면에서 [Enable Django Support]체크,
Django project root (django 프로젝트 루트 경로) : [...]버튼 눌러서 ~/worksapce/pyscrapper/scrapper 로 지정 (위에서 터미널로 지정한 환경)
Settings : scrapper/settings.py 지정
[Apply]버튼 클릭, [OK] 버튼 클릭
우측 상단의 아래 방향 화살표 클릭 (빨간 네모 표시부분 참고)
Configuration 설정창이 열리는데 여기서 Name을 scrapper로 지정해주고
Python Interpreter는 우리가 가상환경으로 지정했던 pyscrapper를 지정해주면됩니다.
(~/workspace/env/pyscrapper/bin/python2.7)
Test DB 연동
여기서는 DB를 제대로 읽어들이는지만 확인하기 위해 'Test'라는 테이블을 만들어서 django에서 실제로 정상동작하는지 확인해보겠습니다.
먼저 PgAdmin에서 방금전 만들었던 scrapper_repo라는 database를 선택합니다.
그리고 tables 항목을 찾아서 create > table을 선택하고
위와 같이 column name을 oid, Data Type은 bigint[]로 입력해주고 Save 버튼을 클릭합니다. 아직은 Test용도로 만든 테이블이므로 아무 의미 없습니다.
이제 PyCharm 화면으로 이동해서 Alt + R 또는 Opt + R 버튼을 눌러서 manage.py 콘솔을 열어서 아래와 같은 명령을 입력합니다.
$ migrate
...
...
Process finished with exit code 0
이제 서버를 구동시켜 봅기위해 manage.py 콘솔에 아래의 명령을 입력하고 Enter
$ runserver
Performing system checks...
System check identified no issues (0 silenced).
April 10, 2018 - 13:15:30
Django version 1.11.12, using settings 'scrapper.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
웹 브라우저를 열어서 http://127.0.0.1:8000 으로 접속해보면 아래와 같은 화면이 나타납니다.
프로젝트 관리자 계정 생성, 프로젝트 관리자 페이지 접속
프로젝트 이름인 scrapper를 관리하는 관리자 id, password 를 생성합니다. 향후 Model을 생성해서 SQL이나 Database 클라이언트 접속 프로그램으로 직접 데이터를 INSERT/DELETE/UPDATE/READ 를 할수 있겠지만 별도의 관리자 페이지를 django에서는 기본으로 제공합니다. 관리자 페이지의 UI와 구조는 커스텀으로 수정할 수 있는데요. 이에 대해서는 상관성분석 웹 프로젝트가 아닌 공부용도로 따로 앱을 생성해서 커스텀으로 관라하는 부분을 정리할 예정입니다.
$python manage.py createsuperuser $ python manage.py createsuperuser Username (leave blank to use 'soon'): scrapper Email address: scrapper@gmail.com Password: Password (again): Superuser created successfully.
사용자 생성이 끝났으면 아래의 명령어로 서버를 구동시키고
$python manage.py runserver
웹 브라우저에서 http://127.0.0.1:8000/admin/ 에 접속합니다.
접속을 하고 나면 아래와 같은 화면이 나타납니다.
아직은 python manage.py makemigrations 라는 명령을 입력하지 않았기 때문에 우리가 만든 DB가 나타나지 않습니다. 아직 models.py에 테이블의 필드들을 매핑해주지 않았기 때문에 위에서 makemigrations 명령을 내리는 과정을 생략했습니다. 만약 화면에서 우리가 만든 테이블을 보이게 하고 싶다면 아래의 과정을 거치면 됩니다.
~/workspace/pyscrapper/scrapper/relational_analysis/ 에 models.py를 생성하고 아래와 같이 작성해줍니다.
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models # Create your models here. class Test ( models . Model ): oid = models.BigIntegerField(primary_key=True ) def __unicode__ ( self ): return self .oid
터미널이나 윈도우 프롬프트에서 아래와 같이 명령어를 입력하면
$python manage.py makemigrations $python manage.py migrate
앱 이름/migrations/ 디렉터리에 0001_initial.py와 같은 파일들이 생성될 것입니다.
모델에 따른 데이터모델에 대해 django에서 생성한 파일입니다.
이번 글에서 저는 따로 모델을 만들지는 않았습니다. 사용하지 않을 테이블이기 때문입니다. 나중에 상관성 분석 프로젝트를 만들어보면서 django ORM에서 자주 쓰일 듯한 타입들을 정리해볼까 합니다. 직접 테이블을 생성해서 쓰는 것이 아니라, models.py에 필드명, 컬럼 등을 입력하면 연결해놓은 DBMS에 맞게 django에서 알아서 테이블을 생성해줍니다. (물론 makemigrations, migrate 명령어를 사용할 경우에만요)
makemigration, migrate 명령어의 용도를 설명해놓겠습니다.
makemigration 명령
어플리케이션 디렉터리내부에 마이그레이션 파일들(ex. 0001_initial.py 등등) 을 생성
어플리케이션 디렉터리내부에 마이그레이션 파일들(ex. 0001_initial.py 등등) 을 생성 migrate 명령
만들어진 마이그레이션 파일들을 토대로 데이터베이스에 테이블을 만드는 역할을 수행
django ORM 의 필드, 타입, keyword 인자에 대한 설명들이 자세히 설명된 참고자료 입니다.
마치면서...
django 개발환경 설정법을 언젠가는 꼭 기록으로 남겨야지 하면서 굉장히 오래 끌다가 이제야 남겼네요. 이전에 github에 MD파일로 기록해둔 내용이 있었는데 그 내용들이 도움이 많이 되었습니다. 역시 기록과 메모의 힘이란...
로컬 서버환경(위에서 정리한 내용들이 로컬 서버환경입니다)에서 어느정도 와꾸가 완성되면.. 그 후에는 크롤링을 할때 AWS의 Event였던가? Event와 Trigger개념, Lambda, S3, EC2등을 이용해서 특정 시점마다 데이터를 끌어와서 자동으로 저장하는 스크립트들을 작성할 계획입니다. AWS의 기술을 그저 사용해보는 것은 그리 어려운 개념이 아닙니다. 초기 개발단계에서 만들어진 코어를 얼마나 스케일업을 잘하느냐가 항상 중요한 것이겠죠.
아직은 DB 설계를 할 생각은 없습니다. 지금 당장에는 csv에 데이터들을 저장한 후에 이를 highchart.js로 데이터의 변화량을 표시하는 프로젝트를 계속 수행할 것이고, csv기반 데이터를 pandas로 읽어들인 후에 날씨정보와 다른 데이터를 상관성 분석하는 프로젝트가 될것 같습니다.
그 다음은 전기사용량 API를 공공데이터 포털에서 가죠오고, 11번가 API에서 항공권 정보들을 가져오는 등의 작업이 될 것 같습니다.
다음 글은 아마도 일주일치 데이터를 가져온 후 csv에 우선적으로 저장하고 기본적인 html페이지에 Bootstrap으로 레이아웃을 반응형으로 잡고 highchart.js로 데이터의 변화량을 표시하는 예제가 될 것 같습니다. 저는 어서 빨리 Tensorflow, Numpy 라이브러리로 상관성 분석 로직을 작성하고 싶은 마음이 너무 큽니다!!! 하지만 글쓰는게 너무 힘드네요. 캡처가 제일 힘들어요 ㅠㅜ
from http://silentcargo.tistory.com/116 by ccl(A) rewrite - 2020-03-06 19:54:38
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기