Django 1.3 のインストール
インストールそのものは簡単。
前に DJango をインストールした時と同様に easy_install で一発。
[paraches@localhost myTest]$ sudo easy_install Django
こんだけ。
一応、確認。
[paraches@localhost myTest]$ python Python 2.7.1 (r271:86832, Apr 19 2011, 01:31:25) [GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.VERSION (1, 3, 0, 'final', 0) >>> [paraches@localhost myTest]$
ちゃんと Django 1.3 がインストールされた。
テスト用の Web サーバ云々は前に Django 1.2.3 をインストールした時と同じなので省略。
mod_wsgi で Django を使う設定
まずは Django のプロジェクトを置くフォルダの場所を決める。
今回は
/var/www/django
にした。
Django のプロジェクトは myApps にする。
[paraches@localhost www]$ sudo mkdir django [paraches@localhost www]$ cd django [paraches@localhost django]$ sudo django-admin.py startproject myApps [paraches@localhost django]$ ls myApps
次に mod_wsgi の設定のファイル myDjango.wsgi を myApps の中に作る。(この辺は Django のドキュメントに書いてある。)
[paraches@localhost django]$ cd myApps [paraches@localhost django]$ vi myDjango.wsgi [paraches@localhost myApps]$ cat myDjango.wsgi import os, sys sys.path.append('/var/www/django') os.environ['DJANGO_SETTINGS_MODULE'] = 'myApps.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() [paraches@localhost myApps]$
最後に apache の設定。
まずは /etc/httpd/conf/httpd.conf の最後に
LoadModule wsgi_module modules/mod_wsgi.so
を加える。
これで mod_wsgi が読み込まれる。
次に、Virtualhost の設定。
/etc/httpd/conf.d/virtualhost.conf を作る。
[paraches@localhost conf.d]$ sudo vi virtualhost.conf [paraches@localhost conf.d]$ cat virtualhost.conf <VirtualHost *:80> ServerName django.hoge.com WSGIScriptAlias /django /var/www/django/myApps/myDjango.wsgi <Directory /var/www/django/myApps> Order allow,deny Allow from all </Directory> </VirtualHost> [paraches@localhost conf.d]$
これで、サーバの /django にアクセスすると /var/www/django/myApps/myDjango.wsgi が呼ばれる。
で、設定ができたら apache に設定を読み込ませる。
[paraches@localhost conf.d]$ sudo /etc/init.d/httpd reload httpd を再読み込み中: [ OK ] [paraches@localhost conf.d]$
これで http://localhost/django にアクセスすれば、取り敢えずは以下の画面まで行ける!
Django 1.3 の設定を少し
後は Django の設定の話。
Django のドキュメントにチュートリアルがあるのだけど、Django 1.3 だと settings.py の中身がちょっと違ってたりするのでメモ。
まずは settings.py のデータベースの設定。
[paraches@localhost myApps]$ cat settings.py <省略> import os DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': os.path.realpath(os.path.dirname(__file__)) + os.sep + 'db.sqlite3', # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD': '', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } } <省略>
データベースは sqlite3 が「ENGINE」と「NAME」を設定するだけで良いので簡単。
データベースのファイル db.sqlite3 は、プロジェクトの myApps フォルダに作る設定にした。
で、suncdb すると…
[paraches@localhost myApps]$ python manage.py syncdb Traceback (most recent call last): <省略> sqlite3.OperationalError: unable to open database file
はい、エラー。
今回の場合、myApps に(たぶん apache さん)が書き込めないとダメ。今は 755 なので 757 にして再度トライ。
[paraches@localhost myApps]$ sudo chmod 757 . [paraches@localhost myApps]$ python manage.py syncdb Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_user_permissions Creating table auth_user_groups Creating table auth_user Creating table auth_message 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): yes Username (Leave blank to use 'paraches'): E-mail address: hoge@hoge.com Password: Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... No fixtures found. [paraches@localhost myApps]$
完了。
で、チュートリアルに従って polls アプリを作ってみる。
[paraches@localhost myApps]$ python manage.py startapp polls [paraches@localhost myApps]$ ls __init__.py db.sqlite3 myDjango.wsgi settings.py urls.py __init__.pyc manage.py polls settings.pyc urls.pyc [paraches@localhost myApps]$
ちゃんとできてる。
次に admin 関係のメモ。
チュートリアルを進めて、settings.py のアプリケーションの部分と url.py の admin を有効にする。
[paraches@localhost myApps]$ cat settings.py <省略> INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'myApps.polls' ) <省略>
[paraches@localhost myApps]$ cat urls.py from django.conf.urls.defaults import patterns, include, url # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'myApps.views.home', name='home'), # url(r'^myApps/', include('myApps.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), ) [paraches@localhost myApps]$
そしてブラウザでアクセス!
はい、エラー。
db.sqlite3 が 644 なのでまた apache さんが書き込めない。db.sqlite3 を apache さんの物にしちゃえば良い。
あと、db.sqlite3 が apache の物になったら、myApps は誰でも書ける状態じゃなくても良いので元に戻しておく。
[paraches@localhost myApps]$ sudo chown apache:apache db.sqlite3 [paraches@localhost myApps]$ cd .. [paraches@localhost django]$ sudo chmod 755 myApps/
今度こそ!
はい、アクセスできたけど、css が読み込めてない。
admin の media フォルダへのパスを通さなきゃダメ。
前の Django 1.2.3 の時は settings.py での設定が
ADMIN_MEDIA_PREFIX = '/media/'
となっていたので
[paraches@centos html]$ sudo ln -s /usr/local/lib/python2.6/site-packages/Django-1.2.3-py2.6.egg/django/contrib/admin/media/ media
でいけたけど、Django 1.3 は static とか出てきてちょっと違う。
settings.py での設定が
ADMIN_MEDIA_PREFIX = '/static/admin/'
となっているので、/var/www/html/ に static フォルダを作って、そこからリンクを張る。
[paraches@localhost html]$ sudo mkdir static [paraches@localhost html]$ cd static/ [paraches@localhost static]$ sudo ln -s /usr/local/lib/python2.7/site-packages/django/contrib/admin/media/ admin
これでちゃんと css が読み込めて綺麗に表示される。
取り敢えず以上で設定はできたかな。
パーミション関係で出てくるエラーが面倒だけど、なんとかこの状態で動いてる。
後は自分のアプリケーションを作って動かすだけだけど、テンプレートの位置や static だの media の位置がまた面倒な気がする。
その辺りはまた時間があったら…