2012/01/08

さくらのVPSへSubversion1.7.2+Submin2.0.2を導入


さくらのVPS(CentOS 5.7 final)に、
Subversion1.7.2と、Submin2.0.2を導入してみました。

■この記事の内容は、Masanoriのメモ帳へまとめました:
さくらインターネット/さくらのVPSのメモ - Masanoriのメモ帳

以下は右往左往しながら試した結果です(^^;)
ライブラリなどのパスはそれぞれ環境によって異なる場合もあるかと思いますので
参考程度にしてください。
また、細かいところ、もっと色々つまづいたのですが...それは端折ってます((>ω<;)

[補足]
  • Apache: 2.2.21
  • さくらのVPSにはデフォルトでPython 2.4がインストールされていますが、
    これでは古いので、こちらのとおり Python 2.7をソースからビルドし、
    /usr/local/bin/python2.7/ へインストールして共存させている環境です。
まず、前準備としてライブラリをyumでインストール。
$ sudo yum install swig openssl-devel libtool python-devel
SQLiteも入れておく。記事執筆時の最新版です。
$ cd ~
$ wget  http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz
$ tar vxf sqlite-autoconf-3070900.tar.gz
$ cd sqlite-autoconf-3070900
$ ./configure
$ make
$ sudo make install
$ cd ..
Subversionをインストールします。(2011/12/29 現在最新版:1.7.2)
尚、Subversionの古いバージョンがインストールされている場合は、yum eraseで削除しておきます。
$ cd ~
$ wget http://ftp.kddilabs.jp/infosystems/apache/subversion/subversion-1.7.2.tar.bz2
$ tar vxf subversion-1.7.2.tar.bz2
$ cd subversion-1.7.2
$ ./configure  \
> --prefix=/usr/local/svn \
> --with-apxs=/usr/sbin/apxs \
> --with-apr=/usr/bin/apr-1-config \
> --with-apr-util=/usr/bin/apu-1-config \
> --with-neon=/usr/include/neon \
> --with-swig=/usr/bin/swig --without-jdk
$ make
$ make install
次に、SubversionのPython用モジュールをビルドしてインストールします。
$ make swig-py
$ sudo make install-swig-py
これに、Python2.7のライブラリディレクトリ上へシンボリックリンクを張ります。
$ sudo ln -s /usr/local/lib/svn-python /usr/local/lib/python2.7/site-packages/svn-python
$ sudo ln -s /usr/local/lib/svn-python/svn /usr/local/lib/python2.7/site-packages/svn
$ sudo ln -s /usr/local/lib/svn-python/libsvn /usr/local/lib/python2.7/site-packages/libsvn
次に、Subversionの初期設定。
リポジトリ用のディレクトリを作成し、リポジトリを作ります。
ディレクトリの権限の設定も。

$ sudo mkdir /var/svn
$ sudo chown -R apache:apache /var/svn
$ svnadmin create /var/svn/test

次に、WSGI(mod_wsgi)のインストール。
ここではmod_wsgi 3.3をインストールします。
$ cd ~
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
$ tar vxf mod_wsgi-3.3.tar.gz
$ cd mod_wsgi-3.3
$ ./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/local/bin/python2.7
$ make
$ sudo make install

次に、共有ライブラリのパスを設定
$ sudo vi /etc/ld.so.conf
”/usr/local/lib ”を追加しておきます。記述しました。
include ld.so.conf.d/*.conf
/usr/local/lib
次に、mod_pythonのインストール
mod_pythonが既に2.4に向けて入っていたのですが、これをインストールし直します。
$ wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz
$ tar vxf mod_python-3.3.1.tgz
$ cd mod_python-3.3.1
$ ./configure --with-apxs=/usr/sbin/apxs
$ make
$ sudo make install
そして、Submin2のインストール。最新版のSubmin2.0.2。
$ wget http://supermind.nl/submin/current/submin-2.0.2.tar.gz
$ tar zxvf submin-2.0.2.tar.gz
$ cd submin-2.0.2
$ sudo python setup.py install
続いて、Submin2の初期設定を行ないます
submin2-adminを用いて、/var/lib/subminに対して環境を作成します。
このとき入力するメールアドレスは、パスワードリセットに使うらしく、
後から変更もできるのでとりあえず正しいものを。
$ sudo python submin2-admin /var/lib/submin initenv your@email.address
 Please provide a location for the Subversion repositories. For new Subversion
repositories, the default setting is ok. If the path is not absolute, it will
be relative to the submin environment. If you want to use an existing
repository, please provide the full pathname to the Subversion parent
directory (ie. /var/lib/svn).
Path to the repository? [svn]> /var/svn //Subversionのリポジトリパスを入力
Please provide a location for the git repositories. For new git repositories,
the default setting is ok. If the path is not absolute, it will be relative to
the submin environment. If you want to use an existing repository, please
provide the full pathname to the git parent directory (ie. /var/lib/git).
Path to the git repositories? [git]>
Please provide a location for the parent dir of Trac environments. For a new
installation, the default setting is ok. If you don't want to use Trac, the
default setting is also ok. For existing Trac environments, please provide
the full path.
Path to trac environment? [trac]>
Please provide a hostname that can be used to reach the web interface. This
hostname will be used in communication to the user (a link in email, links
in the web interface).
Hostname? [~~]> example.com //ホスト名を入力
The HTTP path tells Submin where the website is located relative to the root.
This is needed for proper working of the website. Submin will be accesible
from <http base>/submin, Subversion will be accessible from <http base>/svn.
If you use Trac, it will be accessible from <http base>/trac.
HTTP base? [/]>
Apache file created: /var/lib/submin/conf/apache.cgi.conf
   Please include this in your apache config. Also make sure that you have
   the appropriate modules installed and enabled. Depending on your choices,
   these may include: mod_dav_svn, mod_authz_svn, mod_wsgi, mod_dbd,
   mod_authn_dbd and mod_python

Apache file created: /var/lib/submin/conf/apache.wsgi.conf
   Please include this in your apache config. Also make sure that you have
   the appropriate modules installed and enabled. Depending on your  choices,
   these may include: mod_dav_svn, mod_authz_svn, mod_wsgi, mod_dbd,
   mod_authn_dbd and mod_python 

さらに、Apacheの設定(httpd.conf)で...
次のモジュールをLoadModuleさせます:
mod_dav_svn, mod_authz_svn, mod_wsgi, mod_dbd, mod_authn_dbd and mod_python

これで準備完了か・・・ということで、
http://****/submin/submin.cgi へブラウザからアクセス・・・。

が、500エラー
Apacheのエラーログ:

 [Fri Dec 30 01:41:45 2011] [error] [client ***.***.**.**] ImportError: No module named submin.dispatch.cgirunner
 [Fri Dec 30 01:41:45 2011] [error] [client ***.***.**.**] Premature end of script headers: submin.cgi
submin.dispatch.cgirunnerがロードできていないそうで。

確認のため、
/var/lib/submin/cgi-bin/submin.cgi
直接実行すると、ちゃんと実行される。(エラー画面のHTMLが出力される)

となると...Apache側で実行している設定がおかしいのか。
/var/lib/submin/cgi-bin/submin.cgiを書き換える。

# vi /var/lib/submin/cgi-bin/submin.cgi

もう・・・この際なんで適当にw
#!/usr/bin/env python
import sys
print print "Content-Type:text/html; charset=UTF-8\n\n"
print sys.path
sys.exit()
としてしまう。

そして、再度アクセス・・・

['/usr/lib/python2.4/site-packages/Genshi-0.6-py2.4.egg',
 '/usr/lib/python2.4/site-packages/Trac-0.11.6.ja1-py2.4.egg', '/usr/lib64/python24.zip', '/usr/lib64/python2.4', '/usr/lib64/python2.4/plat-linux2',
 '/usr/lib64/python2.4/lib-tk', '/usr/lib64/python2.4/lib-dynload', '/usr/lib64/python2.4/site-packages',
 '/usr/lib64/python2.4/site-packages/Numeric', '/usr/lib64/python2.4/site-packages/gtk-2.0', '/usr/lib/python2.4/site-packages']
・・・はい。そうですか...そうですか...www
python2.4のほうを・・・。PATHも設定したはずなのにね。

というわけで、Apacheが渡す環境変数の値(env)をどうにかすべきなんだろうけども...
(ちなみにApacheは、suからservice httpd startで実行させてる)
...面倒くさいので、とりあえず、
# vi /var/lib/submin/cgi-bin/submin.cgi
submin.cgiを次のように書きかえてしまう。pythonのパスを直接指定。
#!/usr/local/bin/python2.7
from submin.dispatch.cgirunner import run
run() 
そして、http://****/submin/submin.cgi へ再度、ブラウザからアクセス・・・。

・・・お。

0 件のコメント:

コメントを投稿

お気軽にコメントをお寄せください m(_ _)m♪
"コメントの記入者"欄から[名前/URL]を選ぶと、登録なしでコメント投稿していただけます。