| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==Django 運用環境の構築== [Django][Python] {{amazon|4048672096}} *[http://www.python.jp/doc/contrib/modpython/index.html mod_python マニュアル] ====…」
==Django 運用環境の構築==
[Django][Python]

{{amazon|4048672096}}

*[http://www.python.jp/doc/contrib/modpython/index.html mod_python マニュアル]

=====注意点=====
#Pythonのバージョンにより mod_python をソースからコンパイルする
#httpd_devel をインストールしないと、mod_python がコンパイルできない
#PostgreSQLの共有ライブラリを /usr/lib 等にコピーして利用できるようにしておく必要あり

===インストール===
====mod_python のインストール====
=====Apache、Python は以下のバージョン(うまくいかなければ改めてソースから・・・)=====
*mod_python 3.2.8-3.1
*httpd-2.2.3-5
*python 2.6.2 r262

<blockquote>Pythonを 2.4 から 2.6にしていたため、yumで取得したバイナリとは Pythonのバージョンが異なり失敗。以下、ソースからコンパイルを行う。2.4 なら問題ない。</blockquote>

# yum install mod_python
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mod_python to pack into transaction set.
mod_python-3.2.8-3.1.i386 100% |=========================| 26 kB 00:00
---> Package mod_python.i386 0:3.2.8-3.1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
mod_python i386 3.2.8-3.1 core 257 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 257 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): mod_python-3.2.8-3 100% |=========================| 257 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: mod_python ######################### [1/1]

Installed: mod_python.i386 0:3.2.8-3.1
Complete!

====Windows 用に以下のサイトでバイナリが配布されている====
*http://ftp.riken.jp/net/apache/httpd/modpython/win/3.3.1/
<blockquote>Python2.6 用は提供されていない模様 2010/01/21時点</blockquote>
===ソースからインストール===
*http://httpd.apache.org/modules/python-download.cgi
====ソースのダウンロード====
# wget http://ftp.kddilabs.jp/infosystems/apache/httpd/modpython/mod_python-3.3.1.tgz
====解凍====
# tar xvf mod_python-3.3.1.tgz
mod_python-3.3.1/
mod_python-3.3.1/test/
mod_python-3.3.1/test/testconf.py.in
mod_python-3.3.1/test/httpdconf.py
:
====httpd-devel のインストール====
=====mod_so.c が存在するかを確認=====
# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
=====httpd-devel のインストール=====
# yum install httpd-devel

i386 0:2.1.22-4 db4-devel.i386 0:4.3.29-9.fc6 expat-devel.i386 0:1.95.8-8.2.1 openldap-devel.i386 0:2.3.30-3.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 openldap.i386 0:2.3.30-3.fc6
Complete!

=====apxs がどこにインストールされたかな=====
# find / | grep apxs
/usr/share/man/man8/apxs.8.gz
/usr/sbin/apxs
====コンパイル====
=====configure=====
*apxs および Pythonのバージョンも正しく検知されたっぽい
# ./configure --with-apxs=/usr/sbin/apxs
:
checking for --with-apxs... /usr/sbin/apxs executable, good
:
checking for --with-python... no
checking for python... /usr/local/bin/python
checking Python version... 2.6
checking Python install prefix... /usr/local
checking checking where python libraries are installed... /usr/local/lib/python2.6
config.status: creating dist/Makefile
:
=====make=====
# make
:
Compiling for DSO.
:
Now su and make install
(or, if you only want to perform a partial install,
you can use make install_dso and make install_py_lib)

=====make install=====
#make install
Performing DSO installation.

/usr/bin/install -c -d /usr/lib/httpd/modules
/usr/bin/install -c src/mod_python.so /usr/lib/httpd/modules

Now don't forget to edit your main config and add
LoadModule python_module /usr/lib/httpd/modules/mod_python.so
and if your configuration uses ClearModuleList, then also
AddModule mod_python.c
:

===テスト===
*mod_python が動作しているかテストする
=====Httpサーバーのドキュメントルート /var/www/html/ に、pytest というフォルダを作成し、mptest.py ファイルを置く=====
*mptest.py
from mod_python import apache

def handler(req):
req.write("mod_python worked!")
return apache.OK

=====/etc/httpd/conf/httpd.conf に以下の記述を追加=====
<Directory "/var/www/html/pytest">
AddHandler mod_python .py
PythonHandler mptest
PythonDebug On
</Directory>

LoadModule python_module /usr/lib/httpd/modules/mod_python.so


=====Apache を再起動し、mptest.pyにアクセス=====
*再起動
# /sbin/service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

*http://192.168.24.14/pytest/mptest.py
[[File:0347_mod_py01.jpg]]
===Django の設定===
====httpd.confの編集====
*http://michilu.com/django/doc-ja/modpython/
*http://www.python.jp/doc/contrib/modpython/inst-configure.html

*以下を追記
**[http://www.python.jp/doc/contrib/modpython/dir-other-pp.html PythonPath ディレクティブ]でプロジェクトのパスを指定
<Location "/py/mysite">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonPath "sys.path+['/var/www/html/py']"
PythonDebug On
</Location>

*ソースコードからコンパイルした場合、以下も忘れずに追記
LoadModule python_module /usr/lib/httpd/modules/mod_python.so

=====以下のエラー=====
<blockquote>yum でバイナリをインストールしたため、以下のエラー。ソースコードから再インストールを行う。</blockquote>
*現在の環境は、もともとPython2.4 がデフォルトで入っていたところに、[Django インストール] [2.6を入れいている]が、mod_python 自体もバイナリは Python2.4 でコンパイルされている?
Mod_python error: "PythonHandler django.core.handlers.modpython"

Traceback (most recent call last):

File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch
log=debug)

File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 461, in import_module
f, p, d = imp.find_module(parts[i], path)

ImportError: No module named django

*いったん削除
# yum erase mod_python

Running Transaction
Removing : mod_python ######################### [1/1]

Removed: mod_python.i386 0:3.2.8-3.1
Complete!

====[Django 最初のアプリケーション 1] [チュートリアルで作成したアプリケーション]を呼び出してみる。====
*http://192.168.24.14/py/mysite/polls/
=====エラー=====
ImproperlyConfigured: Error loading psycopg2 module: libpq.so.5: cannot open shared object file: No such file or directory

*[http://wiki.minaco.net/index.php?cmd=read&page=Python%2FDjango%2F%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB [バックエンドに設定|PostgreSQL 8.3.5 インストール]]した、[PostgreSQLのライブラリを認識していないようだ]

# cp /usr/local/pgsql/lib/libpq.so.5 /usr/lib
# ldconfig

====テスト====
=====mysite.urls.py=====
urlpatterns = patterns('',
(r'^py/mysite/firsttest/$', 'mysite.firsttest.views.index'),
)

=====mysite.firsttest.views.py=====
# -*- encoding: utf-8 -*-
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello Django!')
=====OK=====
[[File:0348_mod_py02.jpg]]

案内メニュー