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

웨드   SW 개발/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 참고