장고(Django) 개발 환경: 리눅스 운영서버에 설치하기

히즈웨드 |

    작년에 장고(Django) 프레임워크로 프로젝트를 진행하면서 정리했던 개발 지식을 블로그에 다시 한번 정리하려고 합니다. 리눅스 운영서버를 구성하는 것부터 윈도우 개발환경 구성, 개발 도구 분석이 일단 한 단락이고, 이 후에는 장고 프레임워크의 사용방법을 정리할 것입니다.


    개인 위키에 정리했던 것을 옮기는 수준이라 친절한 설명은 어려울 것 같지만, 댓글 남기시면 설명해드릴 의향은 있습니다 :) 말투가 존대와 반말이 섞여있어도 이해바랍니다.





    먼저, 리눅스 운영서버에 장고 프레임워크를 설치/구성하는 방법부터 살펴보자.


    1 대상 및 준비

    2 Python 설치 및 설정, 실행

    3 Django 설치 및 설정, 실행

    4 SQLite 설치 및 설정

    5 MySQL 설치 및 설정

    6 Django 프로젝트 시작

    7 파이썬 가상 환경 설치 : virtualenv

    9 참고




    1 대상 및 준비

    대상

    • 리눅스 환경(CentOS 6.5)의 서버
    • Python 2.x가 이미 설치된 CentOS 6.5

    파이썬 버전 확인

    [root@centos6dev ~]# python -V
    Python 2.6.6



    2 Python 설치 및 설정, 실행

    Python 소스코드 설치

    Python 2.x의 최신 버전(2.7.8) 설치

    cd /tmp
    wget -N https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
    tar xzf Python-2.7.8.tgz
    cd Python-2.7.8
    ./configure
    make
    make altinstall

    기존 usr/bin/의 python 바꾸기

    mv /usr/bin/python /usr/bin/python_old
    cp /usr/local/bin/python2.8 /usr/bin/python

    새 python 버전 확인

    [root@centos6dev ~]# python -V
    Python 2.7.8

    yum 버전 오류 수정

    yum 명령에 아래와 같은 오류가 발생 했다면,

    [root@centos6dev ~]# yum
    There was a problem importing one of the Python modules
    required to run yum. The error leading to this problem was:
       No module named yum
    Please install a package which provides this module, or
    verify that the module is installed correctly.
    It's possible that the above module doesn't match the
    current version of Python, which is:
    2.7.7 (default, Jun 23 201413:23:29)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]
    If you cannot solve this problem yourself, please go to
    the yum faq at:
      http://yum.baseurl.org/wiki/Faq

    yum 설정에 (CentOS에 기본으로 설치되어 있던) 낮은 버전의 파이썬이 등록되어 있는게 문제이다. 아래 명령으로 수정하자.

    [root@centos6dev ~]# cp /usr/bin/yum /usr/bin/yum_old
    [root@centos6dev ~]# sed -i 's/\/usr\/bin\/python/\/usr\/bin\/python2.6/g' /usr/bin/yum
    [root@centos6dev ~]# diff /usr/bin/yum_old /usr/bin/yum
    1c1
    < #!/usr/bin/python
    ---
    > #!/usr/bin/python2.6

    파이썬 보조 프로그램 설치

    yum install python-pip, python-setuptools



    3 Django 설치 및 설정, 실행

    Django 설치

    pip를 사용하여 설치

    pip install Django==1.6.5

    python에 들어가서 아래 스크립트 실행하여 장고 버전 확인

    [root@centos6dev tmp]# python
    >>> import django
    >>> print(django.get_version())
    1.6.5



    4 SQLite 설치 및 설정

    장고의 기본 DB는 SQLite 인데, SQLite와 파이썬 연동 모듈을 따로 설치해줘야 한다.

    //SQLite 설치
    yum install sqlite-devel
     
    // 파이썬-SQLite 연동 모듈 설치
    pip install pysqlite



    5 MySQL 설치 및 설정

    MySQL 설치

    소스 설치 방법

    현재 yum으로 설치된 상태이며, 운영환경을 구축할 때 소스 설치하며 작성 예정

    참고 : http://blog.keypointer.co.kr/?p=53

    http://blog.blueweb.co.kr/119

    YUM 설치 방법

    참고 : APM 설치 기본 - Apache, PHP, MySQL 서버 구축

    Python-MySQL 연동 모듈 설치

    pip install mysql-python

    MySQL을 소스로 설치한 경우, pip 자동 설치로는 제대로 작동하지 않을 수 있다.

    DB와 사용자 생성

    장고 프로젝트의 settings.py에 입력할 DB이름과 DB사용자이름, DB사용자비밀번호가 아래 명령으로 생성된다.

    $ mysql -u root -p
    # 비밀번호 입력
     
    // DB 생성
    mysql> create database DB이름;
     
    // 로컬접속 허용 User 생성
    mysql> grant all privileges on DB이름.* to 사용자이름@localhost identified by '사용자비밀번호';
    // 외부접속 허용 User 생성
    mysql> grant all privileges on DB이름.* to 사용자이름@'%' identified by '사용자비밀번호';
     
    mysql> flush privileges;



    6 Django 프로젝트 시작

    새로운 프로젝트 만들기

    생성하고자 하는 디렉토리로 이동 후,

    django-admin.py startproject 프로젝트명

    프로젝트 설정하기

    프로젝트명/프로젝트명/settings.py 수정 : DB, 언어, 시간 등

    기본 SQLite3를 사용하는 경우의 설정

    #이외의 설정은 기본 설정을 따름
    DATABASES = {
        'default': {
            'ENGINE''django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    DATABASE_OPTIONS = {'charset''utf8'}
      
    LANGUAGE_CODE = 'ko-kr'
    TIME_ZONE = 'Asia/Seoul'

    MySQL을 사용하는 경우의 설정

    #이외의 설정은 기본 설정을 따름
    DATABASES = {
        'default': {
            'ENGINE''django.db.backends.mysql',           # 'postgresql_psycopg2''mysql''sqlite3' or 'oracle'
            'NAME''DB 이름',
            'USER''DB 사용자 이름',
            'PASSWORD''DB 사용자 비밀번호',
            'HOST''',                                     # 입력안하는 경우, 기본: localhost
            'PORT''',                                     # 입력안하는 경우, 기본 포트: 3306
        }
    }
    DATABASE_OPTIONS = {'charset''utf8'}
      
    LANGUAGE_CODE = 'ko-kr'
    TIME_ZONE = 'Asia/Seoul'

    프로젝트를 DB와 Sync

    새로운 프로젝트로 들어가서, DB 싱크

    python manager.py syncdb

    프로젝트를 테스트 서버에서 실행

    Python 내장 서버는 개발 및 테스트용으로 사용함

    [runean@centos6dev mysite]$ python manager.py runserver
    Validating models...
    0 errors found
    June 232014 06:58:33
    Django version 1.6.5, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
     
    #외부 접근 가능하게 하려면,
    Python manage.py runserver 0.0.0.0:포트번호

    브라우저에서,

    초기 페이지 : 127.0.0.1:8000
    관리자 페이지 : 127.0.0.1:8000/admin



    7 파이썬 가상 환경 설치 : virtualenv

    vitualenv는 파이썬 패키지를 프로젝트별로 다르게 설치 및 사용하기위해, 리눅스 사용자마다 다른 파이썬 환경을 제공하는 도구이다.

    # 설치
    $ pip install virtualenv
     
    # 해당 계정의 가상 파이썬 환경 저장
    virtualenv 폴더명(보통 venv로 사용함)
     
    # 가상 파이썬 환경 활성화
    . venv/bin/activate

    (venv)$ pip install 패키지명 : 현재의 가상 파이썬 환경에 설치
    (venv)$ sudo pip install 패키지명 : 실제 파이썬 환경에 설치



    8 참고