mod_Pythonのマニュアル

Edit
Codecの定義

プログラムの2行目あたりにこのCodec設定を記述します。

# -*- coding: euc_jp
# -*- coding: Shift_JIS
# -*- coding: UTF-8

Edit
Python2.7.14 の導入

注意)Python2.7系は、Yumが動かなくなりますので、2.4を残しておいた方がよい場合があります。
その場合、/usr/bin/yum の起動 python のバージョンを古いものを指定しておくと良い。

#!/usr/bin/python2.6

Edit
Install

# unset PYTHONHOME      <- なぜか2.5は再install時に環境変数があるとinstallで転ける
# cd /usr/local/src
# wget http://python.org/ftp/python/2.7.3/Python-2.7.14.tgz
# tar zxvf Python-2.7.14.tgz
# cd Python-2.7.14/Modules/zlib
# ./configure && make && make install
# cd ../..
# ./configure --enable-shared
# make
# make install

setuptoolsをインストールする。

# wget https://bootstrap.pypa.io/ez_setup.py -O - | python
# easy_install pip

Edit
enable-sharedオプションをつけるときは、soファイルの環境設定を行う。

# emacs /etc/ld.so.conf.d/python2.7.conf
  /usr/local/lib/python2.7/
# ldconfig              <- ldconfigを実行してLIBの再設定

キャッシュにライブラリが登録されたか確認

# ldconfig -p | grep python

Edit
できあがった最新をコピー

# rm /usr/bin/python
# ln -s /usr/local/bin/python /usr/bin/python

一応、動作確認

# python
>> import os
>> exit()

Edit
Python2.4.5 の導入

2.4系ではsoファイルを必要としないように./configureオプションを選択します。

Edit
Install

# cd /usr/local/src
# wget http://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz
# ./configure
# make
# make install

Edit
できあがった最新をコピー

# ln -s /usr/local/bin/python2.4.5 /usr/bin/python2.4.5

一応、動作確認

# python2.4.5
>> import os
>> exit()
# python2.4.5 -V           < version check

Edit
mod_python

mod_pythonのインストール
mod_pythonのマニュアル
mod_pythonの公式ページ
このページの添付に、PDFのマニュアルがあります?

# wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz
# tar zxvf mod_python-3.3.1.tgz
# cd mod_python-3.3.1
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/bin/python
# make
# make install

もしapache起動時に「**.so : cannot restore segment prot after reloc: Permission denied」というメッセージがでたら、以下のコマンドを実行して、SELinuxの設定を変更する。

# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t **.so

mod_pythonの src の中にある「connobject.c」には、バグがあり以下の修正が必要

while ((bytes_read < len || len == 0) &&
 !(b == APR_BRIGADE_SENTINEL(b) ||
 APR_BUCKET_IS_EOS(b) || APR_BUCKET_IS_FLUSH(b))) {

この b を、下記のように bb にする

 !(b == APR_BRIGADE_SENTINEL(bb) ||

Edit
Apacheファイルの追加

# emacs /usr/local/apache2/conf/extra/python.conf
  #
  # Mod Python load
  #
  LoadModule python_module modules/mod_python.so

Edit
mod_pythonの代替え mod_wsgi

apacheでは、mod_pythonなどの古いインターフェイスの代わりに、より洗練されたmod_wsgi(Web Server Gateway Interface)を提供している。

Edit
mod_wsgiのhttpd.confの設定

ディレクティブ概要
WSGIReloadMechanism ProcessDaemonProcessで起動されるwsgiスクリプト (index.wsgi など) のファイル内容が変更されると、自動的にpythonが再起動して、インタプリタ環境が再起動される。
WSGIDaemonProcessDaemonProcessの起動に関する各種設定を行う。グループ毎の指定が可能
WSGIProcessGroupプロセスのグループ名を指定

Edit
PyCXX (Python C++ Connector)のインストール

Sourceはここ
PyCXX 解説ページ

# wget http://nchc.dl.sourceforge.net/sourceforge/cxx/pycxx-5.4.1.tar.gz
# tar zxvf pycxx-5.4.1.tar.gz
# cd pycxx-5.4.1
# python setup.py build
# python setup.py istall

Edit
気になった点

  1. mod_pythonのhttpd.conf設定で、<location> と <Directory>に動作の違いがあるようです。mod_pythonでは、handlerディレクティブの指定されたディレクトリのパスを、sys.path に追加されますが、<location>を利用したディレクトリ指定では、pathに追加されていないようです。たぶん。

Edit
Pythonのimportの仕組み

ここのHPが非常に丁寧且つ分かり易く説明しています

Edit
Importに関するその他のテスト

# python                              <- Pythonを軌道
>>> import sys                        <- Sys ライブラリを読み込む
>>> sys.path                          <- ライブラリのサーチパスを表示する
>>> sys.exec_path                     <- 実行パスを表示する
>>> from distutils.sysconfig import get_python_lib
>>> print get_python_lib()            <- ライブラリの表示

Edit
コマンドラインからの代表的なPythonコマンド

Edit
iPython

Python専用のコマンドシェルであり、Python上でプログラムをするには非常に軽くて軽快に動作する。ECLIPSEなどのIDEよりもiPythonとさくらエディッタの組み合わせがお勧めと考える。

Edit
Install for Linux

# wget http://ipython.scipy.org/dist/ipython-0.9.1.tar.gz
# tar zxvf ipython-0.9.1.tar.gz
# cd ipython-0.9.1
# python setup.py install

Edit
Distribute (distutils)

# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.8.tar.gz
# tar zxvf distribute-0.6.8.tar.gz
# cd distribute-0.6.8
# python setup.py install

Edit
setuptools

setuptoolsは、python eggなど優れたインストール環境を提供するツールです。多くのpythonアプリで利用されている。
公式サイト
Installl

# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
# tar zxvf setuptools-0.6c11.tar.gz
# cd setuptools-0.6c11
# python setup.py install

Edit
Doc Utilitys

Edit
Install

# wget http://docutils.sourceforge.net/docutils-snapshot.tgz
# tar zxvf 
# cd docutils
# python setup.py install

easy_install http://docutils.sourceforge.net/docutils-snapshot.tgz の方が簡単。

Edit
ちょっとした便利コマンド

Edit
トラブルシューティング

Edit
Yumが起動しない。

主に、python のバージョンを2.4 から 2.5以上のバージョンにアップさせると、発生するトラブル。yum のプログラムが 2.4 のpythonライブラリにしか入っていないためだ。よって、まずは、/usr/bin/yum に記載されている python のバージョンを 2.4 にする。

#!/usr/bin/python   ->      #!/usr/bin/python2.4

ほかにも、なぜか libepat.so.0 が無いと言い出す場合があるので、念のために下記の設定を行う。

# vi /etc/ld.so.conf.d/local.conf
  /usr/local/lib
# ldconfig
# export  LD_LIBRARY_PATH=/usr/local/lib

その後、念の為にyumのキャシュをクリアする。

# rm -rf /var/lib/rpm/__db.*
# rpm --rebuilddb
# yum clean all
# yum makecache

Edit
child pid exit signal Segmentation fault (11)

Expatのバージョンが違っている場合にでる可能性がある。

Edit
参考リンク

添付ファイル: filemodpython.pdf 2738件 [詳細]