====== 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