dreamhostでpython2.5とdjangoを使う
dreamhostのサブドメイン取得
僕は酔った勢いで取ったドメインがikoan.orgなので、django.ikoan.org というサブドメインを取得した。
- dreamhostのコンパネにログイン
- Domains>Manage Domains>Add New Domain/Sub Domain
- Domain to Hostの欄にdjango.yourdomain.comを入力。僕の場合django.ikoan.orgと入力した。
- FastCGI Support?のチェックを入れる
- 公開ディレクトリはデフォルトだとdjango.yourdomain.comになるが、django,yourdomain.com/publicとしておく。僕の場合だとdjango.ikonan.org/publicと入力した。
- Fully host this domain now!をクリック
準備
mkdir ~/root mkdir ~/src
python2.5
cd ~/src wget http://www.python.org/ftp/python/2.5/Python-2.5.tgz tar zxf Python-2.5.tgz cd Python-2.5 ./configure --prefix=$HOME/root make && make install
僕はzshを使っているので~/.zshenvに以下を追加
export PYTHONPATH=$HOME/root/lib/python2.5:$HOME/root/lib/python2.5/site-packages export PATH=$HOME/root/bin:$PATH export LD_LIBRARY_PATH=$HOME/root/lib
- 確認
source ~/.zshenv
python -V
で、
Python 2.5
となることを確認する。
setuptools
mkdir ~/src/setuptools
cd ~/src/setuptools
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
MySQLdb
cd ~/src wget http://downloads.sourceforge.net/mysql-python/MySQL-python-1.2.2.tar.gz tar -zxvf MySQL-python-1.2.2.tar.gz cd MySQL-python-1.2.2/ python setup.py bdist_egg cd dist easy_install --prefix=$HOME/root --always-unzip MySQL_python-1.2.2-py2.5-linux-i686.egg
- 確認
% python Python 2.5 (r25:51908, Apr 9 2007, 22:37:20) [GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb >>>
となってエラーが出なければOK
flup
cd ~/src svn co http://svn.saddi.com/flup/trunk flup_trunk cd flup_trunk python setup.py bdist_egg cd dist easy_install --prefix=$HOME/root --always-unzip flup-0.5.dev_r2311-py2.5.egg
django
cd ~/src svn co http://code.djangoproject.com/svn/django/tags/releases/0.96 django-0.96 cd cd django-0.96/ python setup.py install --prefix=$HOME/root
設定
cd ~/django.yourdomain.com mkdir django_templates django_projects cd django_projects django-admin.py startproject sample cd sample vi setting.py
- データベース設定
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_NAME = '' # Or path to database file if using sqlite3. DATABASE_USER = '' # Not used with sqlite3. DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
- DATABASE_NAME, DATABASE_USER , DATABASE_PASSWORD, DATABASE_HOSTは作成したDBの情報を入れる。
- タイムゾーン設定
TIME_ZONE = 'Asia/Tokyo'
- 言語設定?
LANGUAGE_CODE = 'ja'
- メディア設定?
MEDIA_ROOT = '/home/ikoa/django.yourdomain.com/public/media' MEDIA_URL = 'http://django.yourdomain.com/public/media' ADMIN_MEDIA_PREFIX = '/admin_media/'
- テンプレート設定?
TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. "/home/ikoa/django.yourdomain.com/django/django_templates" )
- 管理ツール用設定
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', )
DBとの同期
django-admin.py syncdb
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にして適当にユーザ作る。
vi urls.py
管理ツールの箇所をコメントアウトして以下のようにする
from django.conf.urls.defaults import * urlpatterns = patterns('', # Example: # (r'^sample/', include('sample.foo.urls')), # Uncomment this for admin: (r'^admin/', include('django.contrib.admin.urls')), )
環境変数
vi ~/.zshenv
以下を追加
export DJANGO_SETTINGS_MODULE=sample.settings
PYTHONPATHにdjango_projectへのパスを通す
export PYTHONPATH=$HOME/root/lib/python2.5:$HOME/root/lib/python2.5/site-packages:/home/ikoa/django.yourdomain.com/django/django_projects
反映
source ~/.zshenv
dispatch.fcgi
cd ~/django.yourdomain.com/public/
vi dispatch.fcgi
以下を書く
#!/home/ikoa/root/bin/python # -*- coding: utf-8 -*- import sys,os sys.path.insert(0, '/home/ikoa/root/lib/python2.5/site-packages/django') sys.path.insert(0, '/home/ikoa/django.yourdomain.com/django/django_projects') os.environ['DJANGO_SETTINGS_MODULE'] = 'sample.settings' from django.core.servers.fastcgi import runfastcgi runfastcgi(method="prefork", daemonize="false")
権限設定
chmod 755 dipatch.fcgi
.htaccess
cd ~/django.yourdomain.com/public/
vi .htaccess
以下を書く
AddHandler fastcgi-script .fcgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L]
mediaディレクトリへのシンボリックリンク
cd ~/django.yourdomain.com/public/ ln -s /home/ikoa/root/lib/python2.5/site-packages/django/contrib/admin/media/ admin_media
アクセス
http://django.yourdomain.com/admin
へアクセスしてログイン画面が出ればOK
疑問
python setup.py bdist_egg
出来なかった。理由がわからん。
python setup.py --help-commands
すると確かにbdisg_eggはないね。python setup.py bdist_egg可能なやつだと
python setup.py --help-commands
すると追加で以下のようなのが出る。
Extra commands: rotate delete older distributions, keeping N newest files develop install package in 'development mode' setopt set an option in setup.cfg or another config file saveopts save supplied options to setup.cfg or other config file egg_info create a distribution's .egg-info directory install_egg_info Install an .egg-info directory for the package alias define a shortcut to invoke one or more commands easy_install Find/get/install Python packages bdist_egg create an "egg" distribution test run unit tests after in-place build
とか出る。python初心者の僕には謎。