Hatena::ブログ(Diary)

yoshiringの日記

2010年06月09日 [Linux][Ubuntu] Ubuntu8.04 で Django1.2.1 を使う為に色々と(3) このエントリーを含むブックマーク

PostgreSQL初期化

Ubuntu で PostgreSQL を使ってみよう(続編)

PostgreSQL Ubuntuにインストール

//Ubuntuでは自動的に初期化されている?

PostgreSQLデータベーステンプレートを作成

$ su - postgres
$ createdb -E UTF8 template_postgis
$ createlang -d template_postgis plpgsql
$ psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
$ psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
$ psql -d template_postgis
template_postgis=# GRANT ALL ON geometry_columns TO PUBLIC;
template_postgis=# GRANT ALL ON spatial_ref_sys TO PUBLIC;

Djangoアプリケーションで利用するデータベースの作成

$ createuser djangobook
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
$ createdb -U postgres -O djangobook -T template_postgis manoush

Djangoでsyncdb

Postgresql pg_hba.conf設定

$ cd /path/to/project
$ python manage.py syncdb
 _cursor
    self.connection = Database.connect(**conn_params)
psycopg2.OperationalError: FATAL:  Ident authentication failed for user "djangobook"
//エラー発生

//PostgreSQLの設定ファイルを編集
# vi /etc/postgresql/8.3/main/postgresql.conf
---#listen_addresses = ‘localhost’
+++listen_addresses = ‘*'
# vi pg_hba.conf
記述要調査
# /etc/init.d/postgresql-8.3 restart

2010年06月04日

[][] お名前.comのVPS01でDjango

yumインストール

$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/m2crypto-0.16-6.el5.6.x86_64.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm
$ wget http://ftp.iij.ad.jp/pub/linux/ceentos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm

# rpm -ivh m2crypto-0.16-6.el5.6.x86_64.rpm
# rpm -ivh python-elementtree-1.2.6-5.x86_64.rpm
# rpm -ivh yum-metadata-parser-1.1.2-3.el5. centos.x86_64.rpm
# rpm -ivh python-urlgrabber-3.1.0-5.el5.noarch.rpm
# rpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpm
# rpm -ivh python-sqlite-1.1.7-1.2.1.x86_64.rpm
# rpm --import http://mirror.centos.org/centos-5/5.3/o s/i386/RPM-GPG-KEY-CentOS-5
# rpm -ivh yum-3.2.22-26.el5.centos.noarch.rpm yum-fasttestmirror-1.1.16-14.el5.centos.noarch.rpm

Python2.5とDjangoインストール

wget http://python.org/ftp/python/2.5.2/Python-2.5.2 .tgz
tar xvfz Python-2.5.2.tgz
cd Python-2.5.2
./configure --prefix=/opt/python2.5 --with-threa ds --enable-shared
vi ./Modules/Setup
make
make install
vi opt-python2.5.conf
/sbin/ldconfig
ln -s /opt/python2.5/bin/python /usr/bin/python2.5
wget http://pypi.python.org/packages/2.5/s/setuptool s/setuptools-0.6c9-py2.5.egg
sh setuptools-0.6c11-py2.5.egg --prefix=/opt/python2 .5
curl -O http://peak.telecommunity.com/dist/ez_se tup.py
easy_install Django

パス周り

$ vi .bash_profile
--- PATH=$PATH:$HOME/bin
+++ PATH=$PATH:$HOME/bin:/opt/python2.5/bin/
$ vi .bashrc
+++ alias python='python2.5'
$ source ~/.bash_profile
$ source ~/.bashrc

Djangoのバージョン確認

django-admin.py --version
1.2.1

デプロイ

# httpd -v
Server version: Apache/2.2.3
Server built:   Oct 14 2009 20:27:59
cd etc
$ find . -name httpd.conf -print
./httpd/conf/httpd.conf

//mod_pythonのインストール
# yum -y install httpd-devel
# cd DOWNLOAD_DIR
# wget http://ftp.kddilabs.jp/infosystems/apache/httpd/modpython/mod_python-3.3.1.tgz
# tar xfz mod_python-3.3.1.tgz
# cd mod_python-3.3.1
# ./configure --with-python=/opt/python2.5/bin/python2.5 --with-apxs=/usr/sbin/apxs
# make
# make install

//Django+mod_python
# chown stamp109.com /var/www/vhosts/stamp109.com/httpdocs
$ cd /var/www/vhosts/stamp109.com/httpdocs
$ django-admin.py startapp polls #Djangoチュートリアルアプリ作成
# vi /etc/httpd/conf.d/python.conf
LoadModule python_module modules/mod_python.so
<Location "/stamprally/">
    SetHandler python-program
    PythonPath "['/var/www/vhosts/mydomain/httpdocs']+sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv PYTHON_EGG_CACHE /var/www/vhosts/mydomain/httpdocs/stamprally/.python-eggs 
    SetEnv DJANGO_SETTINGS_MODULE stamprally.settings
    PythonDebug On
</Location>

# vi /etc/httpd/conf/httpd.conf
<Location "/stamprally/">
    SetHandler python-program
    PythonPath "['/var/www/html/']+sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE stamprally.settings
    PythonOption django.root /stamprally
    PythonDebug On
    PythonPath "['/var/www/vhosts/mydomain/httpdocs'] + sys.path"
</Location>
# /sbin/service httpd configtest
# /sbin/service httpd restart

画像ライブラリPILのインストール

# wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
# tar zxvf Imaging-1.1.7.tar.gz
# cd Imaging-1.1.7
# /opt/python2.5/bin/python setup.py build
# /opt/python2.5/bin/python setup.py install
//必要なライブラリの追加
# yum install libjpeg
# yum install libjpeg-devel
# yum install zlib       
# yum install zlib-devel 

デプロイの続き

ここでブラウザからアクセスするとmod_pythonのエラー
ImportError: No module named django.core.handlers.modpython

シンボリックリンクを作成してみる
# ln -s django /opt/python2.5/lib/python2.5/site-packages

エラーが変わった
SystemError: NULL result without error in PyObject_Call

# chmod a+x /var/www/vhosts/mydomain/httpdocs/

pysqliteのインストール

//pysqliteのインストール
# /opt/python2.5/bin/easy_install pysqlite
エラー発生:command 'gcc' failed with exit status

//gccのインストール
# yum install gcc

//再度pysqliteのインストール
# /opt/python2.5/bin/easy_install pysqlite
エラー発生:/usr/bin/ld: cannot find -lpython2.5

//ソースからpysqliteをインストール
# wget http://pysqlite.googlecode.com/files/pysqlite-2.6.0.tar.gz
# tar xvzf pysqlite-2.6.0.tar.gz
# cd pysqlite-2.6.0
# vi setup.cfg
以下の様に修正
include_dirs=/opt/python2.5
librarly_dirs=/opt/python2.5/lib
# /opt/python2.5/bin/python setup.py build
# /opt/python2.5/bin/python setup.py install --prefix=/opt/python2.5

//インストール完了の確認
# /opt/python2.5/bin/python
>>> import sys
>>> sys.path.append('/opt/python2.5/lib/python2.5/site-packages/')
>>> import pysqlite2
Apacheを再起動してブラウザからアクセスするとエラーが変わった
DatabaseError: unable to open database file

データベースファイルの親ディレクトリのパーミッションを変更すると、画面にアクセスできました☆
http://www.mail-archive.com/django-users@googlegroups.com/msg16740.html
References
  1. お名前.comのVPSサーバを使うまで
  2. お名前.com の VPS の CentOS5.3 に、Python 2.6.4 と Django 1.1.1 と、mod_wsgi を設定した覚え書き
  3. yumを間違って削除しちゃった場合の手順
  4. CentOS5.3にPython2.6でDjango1.1の開発環境を作成する
  5. パス(PATH)の確認と設定方法は?
  6. Apache と mod_python で Django を動かす
  7. mod_python のインストール
  8. CentOS5にpython2.6+Django+mod_python+色々の環境を整える
  9. PIL(Python Image Library)の導入
  10. CentOS に Django をデプロイ - with python2.6, mod_python
  11. はまったところ/pysqliteのインストール

2010年05月01日

[] Djangoデプロイ on Ubuntu

apache2-dev のインストール

sudo apt-get install apache2-thread-dev

mod_pythonインストール

Synaptic から libapache2-mod-python をインストール

apache2.conf に以下の行を追記

<Location "/mysite/">  //←環境に合わせて変更
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite  //←環境に合わせて変更
    PythonDebug On
    PythonPath "['/path/to/project'] + sys.path"  //←環境に合わせて変更
</Location>

ソースの配置 (to be continued ...)

データベースの親ディレクトリのアクセス権を変更

apache2 の再起動

sudo /etc/init.d/apache2 restart

ブラウザで表示確認

http://localhost/mysite/admin/
References
  1. can’t install apache2-dev
  2. Ubuntu 8.10 にソースから Python 2.6 いれて mod_python もうごかした
  3. Apache と mod_python で Django を動かす
  4. WD-WD.org 公開しました