Ubuntu Weekly Recipe

第41回クライアント・サーバ環境の活用(2)

サーバを準備して利用すると便利なアプリケーションには様々な種類がありますが、その中でも特に便利なのはWikiやチケットシステムといった、⁠思いついたことをまとめておく」ためのシステムです。今回はWikiとチケットシステムをサーバ上に構築し、複数のマシンから使うレシピをお届けします。

howmを使う

第25回で紹介した通り、Emacs特有のキーバインドによる取っつきにくさこそあるものの、もっともお手軽に利用できるWiki類似システムの一つです[1]⁠。

複数のマシンを利用した環境でhowmを利用する場合、⁠どのマシンでhowmにメモを取ったのかが分からなくなり、データが行方不明になる」ことが問題になります。これまでに紹介してきたレシピを組み合わせて、複数台のマシンからうまく使う方法を考えてみましょう。

sshを使う

一つの方法は、第21回で紹介したようにSSHを使うことです。ここではすでにサーバマシンにopenssh-serverパッケージが導入されていることを仮定しています。もしインストールされていない場合は、第21回のレシピの通りにインストールしてください。

Emacsはターミナル上でも起動できますから、⁠アプリケーション⁠⁠→⁠アクセサリ⁠⁠→⁠端末]を開いて次のように操作し、サーバマシンにログインすれば利用することができます。ここではサーバマシンが192.168.200.10に存在することにしていますが、お使いの環境に合わせて読み替えてください。

client$ ssh 192.168.200.10
192.168.200.10$ emacs

ターミナル上でEmacsを使うことになりますので、次のような画面になるはずです。

図1 ssh越しにEmacsを使う
図1 ssh越しにEmacsを使う

ターミナル経由では使いにくい、という場合、以前のレシピで紹介したようにX転送を利用しましょう。

client$ ssh -X 192.168.200.10
192.168.200.10$ emacs

この操作で通常のEmacsの画面を手元に引き寄せることができますので、図2のように、手元でEmacsを起動したのと全く同じような画面になります。

図2 X転送を用いてEmacsを使う
図2 X転送を用いてEmacsを使う

いずれの場合も、実際に利用されるファイルはサーバにあるものですから、⁠データがどこにあるか分からない」という問題を避けることができます。

NFSを使う

前回のレシピで紹介したNFSサーバを利用している環境の場合、より簡単な利用方法があります。

データのあるマシンが分からなくなるのが問題なのですから、howmのデータ領域をNFS上に置いてしまえば、まったく意識せずに利用することができるでしょう。標準ではhowmのディレクトリは~/howm以下にセットされますので、前回紹介したようにNFS領域を/nfs/192.168.200.20以下に準備した上で、次のようにシンボリックリンクを張ります。

$ ln -s /nfs/192.168.200.10/home/howm ~/howm

この状態でローカルのEmacsを起動し、howmを利用すれば、サーバマシン上のデータをそのまま閲覧・更新できるようになります。

Tracを使う

howmは使い始めると非常に便利なツールなのですが、やはり手慣れたブラウザを用いてWikiにアクセスしたい、という方も多いでしょう。今回はgihyo.jp内でもおなじみの、TracをUbuntu環境で構築してみましょう。

Tracはバグ管理(BTS)のためのチケットシステム[2]やWikiを兼ねた、ソフトウェア開発者が利用するのに適したツールです。⁠開発者向け」というと何となく身構えてしまうかもしれませんが、実際に使ってみると非常に簡単なツールです。

Tracのインストール

TracはHTTPサーバを起動させ、その上で動作させるサーバアプリケーションです。利用するにはいくつかの方法があります。ひとつは「tracd」という、Tracに内蔵されたHTTPサーバを用いて利用する方法です。これは設定が簡単な反面、自動起動させようとすると少々面倒です。

ここでは10月末にリリースされるUbuntu 8.10上でApache2とmod_pythonを用い、Tracを利用する方法を説明します。Tracの利用には、Tracパッケージの他に、いくつかのパッケージが必要になります。以下のようにインストールしてください。

$ sudo apt-get install trac apache2  libapache2-mod-python libapache2-svn

Tracパッケージのインストールが終了したら、まずデータ領域の作成を行います。次のように操作し、Subversionのデータ領域と、Tracを展開する領域を作成します。ここではデータ領域の名前に「gihyo」というものを使っていますが、必要に応じて読み替えてください。

$ sudo mkdir -p /srv/svn
$ sudo mkdir -p /srv/gihyo
$ sudo svnadmin create /srv/svn/gihyo
$ sudo trac-admin /srv/trac/gihyo initenv

/etc/apache2/sites-available/tracというファイルに、次の記述を行います。ServerNameでは「trac.example.com」という名前を使っていますが、お使いのマシン名に合わせてください。

<Location /trac>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /srv/trac
    PythonOption TracUriRoot /trac
    PythonOption PYTHON_EGG_CACHE /tmp
</Location>

サイトの有効化を行います。

$ sudo a2ensite default trac
$ sudo /etc/init.d/apache2 reload

Tracの初期設定を行います。ここではプロジェクト名を「gihyo.jp Demo」としていますが、どんな名前でも構いません。

$ sudo trac-admin /srv/trac/ initenv 
Creating a new Trac environment at /srv/trac

Trac will first ask a few questions about your environment 
in order to initalize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Project Name [My Project]> gihyo.jp Demo

(..省略..)

Database connection string [sqlite:db/trac.db]>  (そのままENTERを押す)

 Please specify the type of version control system,
 By default, it will be svn.

 If you don't want to use Trac with version control integration, 
 choose the default here and don't specify a repository directory. 
 in the next question.

Repository type [svn]>  (そのままENTERを押す)

 Please specify the absolute path to the version control 
 repository, or leave it blank to use Trac without a repository.
 You can also set the repository location later.

Path to repository [/path/to/repos]> /srv/svn/gihyo                  

Creating and Initializing Project
 Installing default wiki pages

(..省略..)

---------------------------------------------------------------------
Project environment for 'gihyo.jp Demo' created.

You may now configure the environment by editing the file:

  /srv/trac/gihyo/conf/trac.ini

(..省略..)

Congratulations!

Trac環境をApacheから利用できるように変更します。

$ sudo chown -R www-data /srv/trac/gihyo/

この状態でFirefoxでhttp://localhost/trac を開くと、図3のような画面が、そしてリンクをたどると図4のような画面が表示されるようになっているはずです。ただし、このままではチケットを作成したり、Wikiページとして利用することはできません。

図3 /tracのトップページ
図3 /tracのトップページ
図4 Tracの画面
図4 Tracの画面

ちょっとした利用だけであれば、以下のようにguest(Anonymous)ユーザにチケットやWikiの作成・編集権限を与えてしまう、という手もあります。ただし、この方法は誰でも書き込めてしまいますし、チケットの所有者が「Anonymous」となってしまい、あまりきれいではありません。

※本文にもある通り、この手順では誰でも書き込めるようになります。それでも問題ない場合のみ利用してください。通常は本文の先にある、HTTPS+BASIC認証による認証を行うようにします。

$ sudo trac-admin /srv/trac/gihyo
Trac [/srv/trac/gihyo]> permission add anonymous TICKET_CREATE  TICKET_MODIFY WIKI_CREATE WIKI_MODIFY

そこで、ここではApache2でhttpsを利用できる状態にした上で、さらに個別のユーザ認証が行えるようにしてみましょう。SSLを利用するには証明書が必要です。次のコマンドを用いることで、いわゆる「おれおれ証明書」を作成し、Webサーバに導入することができます。

$ sudo make-ssl-cert generate-default-snakeoil
$ sudo a2ensite default-ssl
$ sudo /etc/init.d/apache2 reload

さらに、証明書のフィンガープリント情報を得るため、次のコマンドを入力します。

$ openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -fingerprint -sha1 -noout
$ openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -fingerprint -md5 -noou

この状態でhttps://localhost/tracへアクセスすると、図5のような警告が表示されます。

図5 Firefoxでアクセスした際に表示される警告
図5 Firefoxでアクセスした際に表示される警告

ここでは証明書のフィンガープリントを用いてサイトが正しいことを確認できますので「例外を追加」を押して「証明書の取得」を行います。

証明書のフィンガープリントを確認できますので、先ほど出力したものと完全に一致するかを確認し、例外を承認してください。これにより、以降はブラウザがフィンガープリントの一致を確認してくれますので、問題なくアクセスできるようになります。フィンガープリントの一致確認は、Tracを利用するマシンごと・ユーザごとに行う必要があります。

ここまでの準備ができたら、Tracにアクセスできるユーザを作成します。ここではfyoshidaというユーザを作成していますが、適宜読み替えてください。

$ sudo htpasswd -c /etc/apache2/.htpasswd fyoshida
New password: (Tracへのアクセスに使いたいパスワードをセット)
Re-type new password: (Tracへのアクセスに使いたいパスワードを再入力)
Adding password for user fyoshida

さらに、/etc/apache2/sites-available/tracの中身を、以下のものに変更します。

<Location /trac>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /srv/trac
    PythonOption TracUriRoot /trac
    PythonOption PYTHON_EGG_CACHE /tmp
    AuthType Basic
    AuthName "Trac User Auth"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Location>

変更を反映するためにApache2をリロードします。

$ sudo /etc/init.d/apache2 reload

この状態でhttps://localhost/tracへアクセスすると、ユーザ認証が要求されるようになります。設定したユーザ名とパスワードでログインすることで、チケットの作成やWikiページの作成・編集が行えるようになります。

おすすめ記事

記事・ニュース一覧