Tracを1.0.1にアップグレードしました
くりすです。
本サイトのTrac
を0.12.3から1.0.1にアップグレードしましたので、その手順をメモしておきます。
もくじ
- ねらい
- 構成の細分化とは
virtualenv
って何だ
- アップグレードの実行
virtualenv
のセットアップvirtualenv
を使った、最新版TracのインストールTrac
を0.12.3から1.0.1にアップグレードするuwsgi
の設定を書き換える
1. ねらい
今回Trac
を1.0.1にアップグレードするにあたって、単なるアップグレードではなく、サーバの構成をより細分化することも目的としました。
1.1. 構成の細分化とは
ここでいう構成の細分化とは、システムに搭載する個々のアプリケーションの影響範囲をできるだけ小さくする工夫です。
さて、私が使っているUbuntu 12.04 LTS
のサーバには、パッケージマネージャを使ってTrac
をインストールすることができます:
# apt-get install trac
ところが、パッケージマネージャを使う方法には次のようなデメリットがあります:
- パッケージマネージャで提供されるアプリケーションは必ずしも最新版ではない
- システム全体に対してインストールすることになってしまうので、サーバの構成への影響が大きい
- レンタルサーバなどを使っていてroot権限を持っていない場合などは、そもそもこの方法を用いることができない
そこで、virtualenv
を用いて、専用のPython環境を構築することにしました。
1.2. virtualenv
って何だ
virtualenv
とは、Python環境のセットを好きなだけ錬成するしくみ、つまりPythonの仮想環境です。
virtualenv
を使うと、
- システムのPythonに影響を及ぼさない
- 一般ユーザの権限でもライブラリのインストールが容易
/etc
や/usr
などに余計なファイルを作らない- パッケージマネージャで入れたライブラリと競合しない
- 必要なだけ専用のPython環境を作ることができる
- Pythonのバージョンが選べる
といったメリットを得ることができます。
2. アップグレードの実行
以下、例示しているディレクトリは/home/trac/cur
が従来のTrac環境、/home/trac/new
が新しいTrac環境を表します。各自の環境に合わせて読み替えてください。
2.1. virtualenv
のセットアップ
virtualenv
はサラのUbuntuには入っていませんでしたので、インストール。
# apt-get install python-virtualenv
- まず、現在のデータをコピーします。
$ rsync -a /home/trac/cur/ /home/trac/new
rsyncコマンドにおいて、末尾の`/`のあるなしは極めて重要です。
/home/trac/new
下にvirtualenv
を生成します。root権限は必要ありません(したがってsudoも不要)$ cd /home/trac/new $ virtualenv env
そうすると、5秒ほどで専用のPython環境/home/trac/new/env
が爆誕します。コマンド引数の内容は任意で、たとえば$ virtualenv trac_python_env
とすれば、/home/trac/new/trac_python_env
が生まれます。
- 新しく作ったPython環境を起動します。
$ source env/bin/activate
そうすると、先ほど生成したPython仮想環境が起動し、(env)$
というプロンプトに変化します。(env)
という表示は、env
という名称のvirtualenv
を使用していることを示します。
2.2. virtualenv
を使った、最新版Tracのインストール
新しく作ったPython環境においては、基本的にeasy_install
あるいはpip
を用いて追加モジュールのインストールをします。中にはGenshi
(後述)などコンパイルを要するモジュールもあるので、build-essential
を用意しておいたほうがよいでしょう。
# apt-get install build-essential
(env)
が起動している状態で、pip install trac
を実行します。root権限やsudoは不要。(env)$ pip install trac
Tip:Trac
がレンダリングに用いるGenshi
というモジュールは、高速化のためにPython.h
というC++ヘッダファイルを使ってコンパイルするので、# apt-get install python-dev
としてこれをインストールしてやると、Genshi
の高速化機能の恩恵を受けることができます。
2.3. Trac
を0.12.3から1.0.1にアップグレードする
Trac
のアップグレードについては詳しい手順は公式ドキュメントに譲ります。要約するとこんな感じです:
(env)$ cd /home/trac (env)$ trac-admin new upgrade (env)$ trac-admin new wiki upgrade
これで、Trac
は最新版(1.0.1)になりました。最後に、uwsgi
の設定を更新しましょう。
2.4. uwsgi
の設定を書き換える
本ブログの一番最初の記事に記載していますtrac.xml
がベースです。これを/etc/uwsgi/sites-available/trac.xml
として準備します。
Note: これはuwsgi
1.0.3-debian 用の設定です。最新版のuwsgi
(2.0)では異なる部分が結構あるので、その場合以下は参考にできないかもしれません。
-
.xml
old new 1 1 <uwsgi> 2 2 <socket>127.0.0.1:7777</socket> 3 3 <plugin>python</plugin> 4 <env>TRAC_ENV=/home/trac/cur</env> 4 <env>TRAC_ENV=/home/trac/new</env> 5 <virtualenv>/home/trac/new/env</virtualenv> 5 6 <module>trac.web.main:dispatch_request</module> 6 7 </uwsgi>
Note: アップグレードなので/etc/uwsgi/sites-enabled/trac.xml
は既に/etc/uwsgi/sites-available/trac.xml
のシンボリックリンクとして存在します。
nginx
の設定には変更はありません。
最後に、uwsgi
を再起動してアップグレード作業は完了です。
# service uwsgi restart
次はnginx
を1.4.4に、uwsgi
を2.0にアップグレードしたいので勉強します。
あとUpstart
を用いて、uwsgi
をソケットアクティベーション型の運用にしたいですね。
Running uWSGI via Upstart --- uWSGI 2.0 Documentation
Comments
No comments.