====== Django ======
===== Install Django =====
데비안 패키지가 없기 때문에 직접 소스를 다운로드 받아서 설치한다.
# cd /usr/local/src
# wget http://www.djangoproject.com/download/0.95/tarball/
# tar xzvf Django-0.95.tar.gz
# cd Django-0.95
# python setup.py install
===== 장고 프로젝트 생성 =====
# cd /path/to/workspace
# django-admin.py startproject projectname
위와 같이 프로젝트를 생성하면 /path/to/workspace/projectname 에 프로젝트가 자동으로 생성된다.
해당 디렉토리 밑에는 다은과 같은 파일이 존재한다.
projectname/
__init__.py
manage.py
settings.py
urls.py
===== 개발용 장고서버 실행 =====
# cd /path/to/workspace/projectname
# python manage.py runserver 0.0.0.0:8000
Validating models...
0 errors found.
Django version 0.95, using settings 'www.settings'
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
위와 같이 실행하면 장고 웹서버가 실행이 된 것이다.
웹브라우저에서 http://아이피주소:8000/ 로 연결할 수 있다.
개발을 위해서 간단하게 실행할 수 있으며, 실제 운영에서는 Apache + mod_python 과 연동하여 사용하게 될 것이다. 그러니, Control-C 를 눌러서 서버를 멈추도록 하자.
===== 장고 DB 설정 =====
프로젝트에서 사용할 DB 를 설정하려면 projectname 에 자동으로 생성된 settings.py 의 DB관련 내용을 수정하면 된다.
현재는 postgresql, mysql, sqlite 를 지원하고 있으며, 앞으로 더 많은 DB 를 지원할 예정이다.
필자는 postgresql 을 좋아하므로 아래와 같이 설정하였다.
# vi settings.py
DATABASE_ENGINE = 'postgresql'
DATABASE_NAME = '디비이름'
DATABASE_USER = '아이디'
DATABASE_PASSWORD = '비밀번호'
DATABASE_HOST = 'localhost'
DATABASE_PORT = '5432'
===== INSTALLED_APPS 설정 =====
settings.py 내용 중 INSTALLED_APPS 이 있는데 이 안에는 4가지 Application이 포함되어 있다.
이 Application을 사용하려면 DB 에 테이블을 생성해야 한다.
* django.contrib.auth
* django.contrib.contenttypes
* django.contrib.sessions
* django.contrib.sites
다음과 같이 테이블을 생성한다.
# python manage.py syncdb
Creating table auth_message
Creating table auth_group
Creating table auth_user
Creating table auth_permission
Creating many-to-many tables for Group model
Creating many-to-many tables for User model
Creating table django_content_type
Creating table django_session
Creating table django_site
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):
Please enter either "yes" or "no": yes
Username (Leave blank to use 'root'):
E-mail address: mattabu@eec.co.kr
Password: openwatcher
Password (again): openwatcher
Superuser created successfully.
Adding permission 'message | Can add message'
Adding permission 'message | Can change message'
Adding permission 'message | Can delete message'
Adding permission 'group | Can add group'
...
다음과 같이 DB 에 테이블이 생성된 것을 확인할 수 있다.
# psql -d 디비이름 -U 아이디 -W
Password:
Welcome to psql 7.4.7, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
openwatcher=> \dt
List of relations
Schema | Name | Type | Owner
--------+----------------------------+-------+-------------
public | auth_group | table | openwatcher
public | auth_group_permissions | table | openwatcher
public | auth_message | table | openwatcher
public | auth_permission | table | openwatcher
public | auth_user | table | openwatcher
public | auth_user_groups | table | openwatcher
public | auth_user_user_permissions | table | openwatcher
public | django_content_type | table | openwatcher
public | django_session | table | openwatcher
public | django_site | table | openwatcher
(10 rows)
openwatcher=>
===== Admin 사이트 활성화 =====
* INSTALLED_APPS 에 "django.contrib.admin"를 추가한다.
* python manage.py syncdb를 실행한다. INSTALLED_APPS라는 새로운 application을 추가하였으므로 관련 DB 테이블들이 생성될 것이다..
* mysite/urls.py 파일을 열어서 "Uncomment this for admin:" 밑에 있는 것의 주석을 풀어준다.
이제, 개발서버를 다시 실행시키고, 웹브라우저에서 http://아이피주소:8000/admin/ 로 접근하면 로그인 페이지를 볼 수 있다.
===== Apache, mod_python 연동 =====
==== Install Apache, mod_python ====
# apt-get install apache2 libapache2-mod-python
==== Configure apache ====
# vi /etc/apache2/sites-enabled/000-default
NameVirtualHost 아이피주소:포트
ServerName 도메인
DocumentRoot /path/to/workspace/projectname/
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/path/to/workspace'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE projectname.settings
PythonInterpreter projectname
PythonDebug On
PythonAutoReload On
SetHandler None
SetHandler None
Apache 와 연동하면 admin 사이트의 CSS 가 적용이 되지 않는다.
admin 사이트의 CSS 적용을 하려면 다음과 같이 링크를 걸어준다.
# cd /path/to/workspace/projectname
# ln -s /usr/lib/python2.3/site-packages/Django-0.95-py2.3.egg/django/contrib/admin/media media
우분투 리눅스에서는 python 2.4 가 기본으로 설치되어 있으므로 다음과 같이 해주어야 한다.
# cd /path/to/workspace/projectname
# ln -s /usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/contrib/admin/media media