エックスサーバーにSubversionをインストールする

これからソフトウェアやコンテンツを作成する上で、要求管理システムを利用したいと考えました。そこでチケット(要求やバグ・レポート)を管理できるTracの導入を考えます。

本稿では、エックスサーバーに、Tracと連動するバージョン管理システムであるSubversionをインストールし、リポジトリを作成するまでを解説します。またSubversionのWindows用クライアントソフトであるTortoiseSVNをローカルにインストールし、SSH経由でサーバーのSubversionに接続してみます。

(2014年6月20日追記:「Subversion+Tracにプロジェクトを作成する」の投稿に伴い、他記事への誘導等を追記しました。)

はじめに

ちょっと前に、本ブログのテーマの自作を開始したのですが、まず最初に(自分の)要求の管理の必要性を感じました。ディスクトップの付箋で管理もできそうですが、私のディスクトップはすでに付箋でいっぱいです。

そこで要件管理ツールとしてTracを導入し、チケットで管理することを考えました。チケットとは要求やバグの報告を書いた付箋のイメージです。Tracにはチケット管理の他にもWiki機能と、Subversion等のリポジトリを見る機能があります。

Subversionとは、ソフトウェア開発でよく使われているバージョン管理システムです。ファイルの更新や派生バージョンを登録していきます。すると任意の時点のバージョンや、派生バージョンなどを取り出すことができます。コミュニティでも文書管理に使えるのではないかと思います。

TracはGit(バージョン管理システム)とも連動できるようです。しかし、まず最初はトラディショナル(?)なSubversionを導入し、Gitは必要があればその時に導入を考えることにします。

TracはPython(スクリプト言語)で書かれていますので、まずPythonをインストールし、次にSubversionをインストールします。そしてWindowsにTortoiseSVNというクライアントソフトをインストールし、サーバーと接続してみます。

尚、本稿ではエックスサーバーにSSH接続してLinuxのコマンドを打ち込んでいきますので、UNIXやUNIXクローン(Linux、BSD、Cygwin等)の経験がある読者を対象としております。(といいつつも、私は10年以上Linux、Cygwinを触っていませんでしたので、だいぶ忘れています。特にvi。^^)

SSH接続環境につきましては「PoderosaでエックスサーバーにSSH接続する」に記載いたしましたので、環境がない方はご参照頂ければと思います。またPoderosaを使っていましたら、この記事からClrl+cでコマンドをコピーし、Alt+vでターミナルにペーストすることができます。。(Ctrlはターミナルで予約されていますので、Ctrl+vは使えません。しかしよく間違えてしまいます。)

OSSの紹介

本稿でインストールするOSS(オープン・ソース・ソフトウェア)と、そのプロジェクトサイトを紹介します。

(2014年6月20日追記)

以降のインストールの手順において、wgetコマンドでアーカイブを取得しようとしたときに、もはやURLが変わってしまって取得できないことがあると思います。その際は以下のサイトからアーカイブのダウンロードURLを調べ、置き換えてダウンロードして下さい。

またwgetコマンドでSSLに転送され、サーバー証明書がない旨のエラーが表示されることもありました。その際はエラー表示に従って、「–no-check-certificate」オプションを指定してダウンロードして下さい。

(2014年6月20日追記:ここまで。)

Sqlite

http://www.sqlite.org/

軽量なデータベースです。Tracで利用するのですが、Pythonと連携させるために、Pythonの前にインストールします。

Python

http://www.python.org/

Tracが書かれているスクリプト言語です。

エックスサーバーでは既に複数のバージョンのPythonがインストールされていますが、sqliteがimportできませんでした。そこでTracの要件に適合するPython-2.7.5を新たにインストールします。

Subversionが参照できるように、Subversionの前にインストールします。

Swig

http://www.swig.org/

C、C++のプログラムとPythonなどのスクリプト言語のインタフェイスとなるライブラリです。これもSubversionの前にインストールします。

Subversion

http://subversion.apache.org/

今回のメインである、バージョン管理システムです。いつのまにかApacheプロジェクトに入っていますねえ。

PuTTY

http://www.chiark.greenend.org.uk/~sgtatham/putty/

今回はputtygenという鍵ペア生成ソフトを使い、Poderosaで作成した秘密鍵ファイルを変換します。

PuTTyは著名なターミナルソフトウェアです。

TortoiseSVN

http://sourceforge.net/projects/tortoisesvn/

TortoiseSVNはWindowsのSubversionクライアントで、エクスプローラーに統合されていることを特徴としています。

以上、OSSの紹介でした。

Sqlite3のインストール

ではここより、SSH接続した後のコマンド入力を書いていきます。

順調に進めているように見えますが、実際はかなりの試行錯誤を繰り返しています。以下の記事では、この順番が一番スマートであろう、という手順を書いています。

まず最初に、Sqlite3からインストールします。

各システムは~/local以下にインストールし、パッケージの展開と構築は~/tmp以下で行うことにします。

[user@srv ~]$ mkdir local tmp
[user@srv ~]$ cd tmp
[user@srv tmp]$ wget http://www.sqlite.org/2013/sqlite-autoconf-3080100.tar.gz
[user@srv tmp]$ tar xzf sqlite-autoconf-3080100.tar.gz 
[user@srv tmp]$ cd sqlite-autoconf-3080100
[user@srv sqlite-autoconf-3080100]$ ./configure --prefix=$HOME/local
[user@srv sqlite-autoconf-3080100]$ make
[user@srv sqlite-autoconf-3080100]$ make install 

以上は入力するコマンドのみで、サーバーの表示は省略しています。(以下、確認のコマンドのレスポンス以外は同様に省略します。)

またプロンプト([user@srv ~])も異なりますので読み替えてください。

インストールまでエラーなく完了したら、コマンドを打って確認をします。

[user@srv sqlite-autoconf-3080100]$ ~/local/bin/sqlite3 --version
3.8.1 2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a

Pythonのインストールと設定

次にPython2.7.5をインストールします。

Pythonのインストール

以下のコマンドを入力していきます。

[user@srv sqlite-autoconf-3080100]$ cd ..
[user@srv tmp]$ wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
[user@srv tmp]$ tar xzf Python-2.7.5.tgz 
[user@srv tmp]$ cd Python-2.7.5
[user@srv Python-2.7.5]$ ./configure --prefix=$HOME/local --includedir=$HOME/local/include --libdir=$HOME/local/lib
[user@srv Python-2.7.5]$ make
[user@srv Python-2.7.5]$ make install 

pythonコマンドで確認します。

[user@srv Python-2.7.5]$ ~/local/bin/python -V
Python 2.7.5
[user@srv Python-2.7.5]$ ~/local/bin/python -c "import sqlite3"

3行ではエラーが表示されないことを確認しています。

sitecustomize.pyの作成

日本語でエラーが出ないように、sitecustomize.pyという設定ファイルを作成します。

[user@sv813 Python-2.7.5]$ vi ~/local/lib/python2.7/site-packages/sitecustomize.py 

このコマンドで、viというスクリーン・エディタを起動しています。viはWindowsで一般的なテキストエディタと異なり、いきなり編集できません。「編集コマンド入力→インサートモードで編集→ESCでコマンドモードに戻る→コマンド入力→…」という流れになります。(viの操作が面倒なら、Windows上で作成し、FTPでPUTしてもかまわないと思います。その場合は改行コードにご注意ください。)

viを起動したら’i’を入力してインサートモードに入り、以下を入力します。

import sys
sys.setdefaultencoding('utf-8')

ESCを押してインサートモードを抜けた後、’:wq’を入力して、ファイルを保存、かつviの終了をします。

[user@srv Python-2.7.5]$ ~/local/bin/python -c "import sys; print sys.getdefaultencoding()"
utf-8

sitecustomize.pyの内容が正しければ’utf-8’と表示されます。間違いがある場合は再び先のviコマンドよりviを起動し、sitecustomize.pyを編集します。

viのコマンド

参考までに最低限のviのコマンドをまとめておきます。viの使い方や他のコマンドについては他のサイトをご参照ください。

コマンド 動作
a インサートモードに入る。カーソルの後ろにテキストを挿入する。
i インサートモードに入る。カーソルの前にテキストを挿入する。
o インサートモードに入る。カーソルの下に行を挿入する。
O インサートモードに入る。カーソルの上に行を挿入する。
ESC インサートモードを抜ける。
x カーソル上の文字を削除。
X カーソルの前の文字を削除。
:w ファイルを保存。
:wq ファイルを保存して終了。
:q! ファイルを保存せずに強制終了。

カーソル移動もコマンド(英字入力)ですが、カーソルキーで動くようですね。

.bashrcの編集

次に.bashrcを編集して、環境変数PATHと環境変数PYTHONPATHの設定をします。

[user@srv Python-2.7.5]$ cd ~
[user@srv ~]$ vi .bashrc 

ファイルの最後の行「# User specific aliases and functions」に移動した後、’o’を入力してインサートモードに入り、以下の2行を追加します。

export PATH=/home/user/local/bin:$PATH
export PYTHONPATH=/home/user/local/lib/python2.7/site-packages 

‘user’は各位のユーザー名になります。(以下同様。)

.bashrcを読み込んで、設定が有効になったことを確認します。

[user@srv ~]$ source .bashrc
[user@srv ~]$ python -V
Python 2.7.5

~/local/binにパスが通りました。

(パスが~/local/binに通っていない場合は、/usr/binにあるpythonのバージョン2.4.3が表示されます。)

Swigのインストール

続いてSwigをインストールします。

[user@srv ~]$ cd tmp
[user@srv tmp]$ wget http://prdownloads.sourceforge.net/swig/swig-2.0.11.tar.gz
[user@srv tmp]$ tar xzf swig-2.0.11.tar.gz 
[user@srv tmp]$ cd swig-2.0.11
[user@srv swig-2.0.11]$ ./configure --prefix=$HOME/local
[user@srv swig-2.0.11]$ make
[user@srv swig-2.0.11]$ make install 

確認します。

[user@srv swig-2.0.11]$ swig -version

SWIG Version 2.0.11
(略)

Subversionのインストールと設定

続いてSubversionをインストールし、リポジトリ(データの貯蔵庫)を作成します。

Subversionのインストール

以下の様にコマンドを入力していきます。

[user@srv swig-2.0.11]$ cd ..
[user@srv tmp]$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/subversion/subversion-1.8.4.tar.gz
[user@srv tmp]$ tar xzf subversion-1.8.4.tar.gz
[user@srv tmp]$ wget http://www.sqlite.org/2013/sqlite-amalgamation-3080100.zip
[user@srv tmp]$ unzip sqlite-amalgamation-3080100.zip
[user@srv tmp]$ mv sqlite-amalgamation-3080100 subversion-1.8.4/sqlite-amalgamation
[user@srv tmp]$ cd subversion-1.8.4
[user@srv subversion-1.8.4]$ ./configure --prefix=$HOME/local
[user@srv subversion-1.8.4]$ make
[user@srv subversion-1.8.4]$ make install
[user@srv subversion-1.8.4]$ make swig-py
[user@srv subversion-1.8.4]$ make install-swig-py

(2014年6月20日追記)2行の明星大学のミラーサーバーがデッドリンクになっていました。2014年6月20日現在は筑波大学のミラーサーバーから1.8.9がダウンロード可能です。「http://ftp.tsukuba.wide.ad.jp/software/apache/subversion/subversion-1.8.9.tar.gz」(このURLを利用する場合は以降のコマンドの「1.8.4」を「1.8.9」に読み替えてください。)

(2014年6月20日追記:ここまで。)

8行の./configureの後に「Rubyが古い」というメッセージが出ていますが、ときにRubyから使う予定はないのでスルーします。

11,12行はTracと連携するときに必要になります。

[user@srv subversion-1.8.4]$ svn --version
svn, version 1.8.4 (r1534716)
   compiled Nov  5 2013, 16:19:34 on x86_64-unknown-linux-gnu
(略)

svnコマンドが動作することを確認しました。

(2014年6月20日追記:以降、リポジトリを作成しTortoiseSVNで接続する記事が続きます。しかしTracとの連動をお考えの場合は、ここより「エックスサーバーにTracをインストールする」にお進みいただくことをおすすめします。リポジトリの作成についても、Tracと連動したより実践的な記事を新たに投稿しました。)

リポジトリの作成

~/svn/repo にリポジトリを作成します。

[user@srv subversion-1.8.4]$ cd ~
[user@srv ~]$ mkdir svn
[user@srv ~]$ svnadmin create svn/repo
[user@srv ~]$ ls svn/repo
README.txt  conf  db  format  hooks  locks

4行は確認のためのコマンドです。

以上でリポジトリの作成は終了です。

プロジェクトの作成

実験用に、リポジトリに空のプロジェクトを作成します。

[user@srv ~]$ mkdir -p tmp/projects/first-project
[user@srv ~]$ cd tmp/projects/first-project/
[user@srv first-project]$ mkdir trunk branches tags
[user@srv first-project]$ cd ..
[user@srv projects]$ svn import . file://$HOME/svn/repo --message 'Initial dirs.'
Adding         first-project
Adding         first-project/branches
Adding         first-project/tags
Adding         first-project/trunk
Committed revision 1. 

first-projectというプロジェクトを作成し、リポジトリに登録しました。

(2013年11月9日追記:一プロジェクト一リポジトリが都合がよさそうなので、5行はsvn import first-projectで良かったと思います。いずれにせよ実運用ではこのsvn/repoは削除するつもりです。)

trunk、branches、tagsは、推奨されているディレクトリ構成です。trunkがご本家で、通常はここを更新していきます。きりが良いところ(例えばパッケージにバージョンを付けるタイミング)でtagsにコピーを作成します。branchesでは、本家の更新に影響を受けない形で改変やバグフィックスをしたい場合に、本家からコピーを作成し独自に改変を進めます。目的を達成したら本家に改変を反映させます。

以上で、サーバー上での作業は終了です。

鍵ファイルの作成

続いてローカルのWindowsでの作業になります。

今回用いるSubversionクライアントのTortoiseSVNは、秘密鍵のファイルがPutty形式でないと受け付けてくれません。(SSH接続するのにPutty派生のプログラムを使うらしいです。)

PoderosaでエックスサーバーにSSH接続する」で書きましたように、私はターミナルソフトとしてPoderosaを選択しています。そこでまず、Poderosaで作成した秘密鍵をPutty形式に変換します。変換には鍵生成ソフトであるputtygenを使用します。

ターミナルソフトにPuttyを使う場合は、puttygenで鍵ペアを生成し、公開鍵をエックスサーバーに登録する、という手順になりますので、本章は飛ばしてください。

puttygenのダウンロード

PuTTY Download Pageをブラウザで開きます。「For Windows on Intel x86」のセクションに、「PuTTYgen:」という行がありますので、その右の「puttygen.exe」をクリックしてダウンロードします。

鍵ファイルの変換

puttygen.exeを起動します。

puttygenの起動後画面

「Load」をクリックします。ファイル指定ダイアログが開きますので、Poderosaで作成した秘密鍵(先の記事ではprivatekey.txt)を指定します。

パスフレーズの入力ダイアログ

パスフレーズが聞かれますので、入力して「OK」をクリックします。

インポートの成功のダイアログ

無事インポートできました。「OK」をクリックします。

鍵インポート後のputtygenの画面

「Save private key」をクリックします。ファイルの保存ダイアログが開きますので、保存場所とファイル名(privatekey.ppkなど)を指定して「保存」をクリックします。(ファイル名の指定には、拡張子.ppkまでしっかり書く必要があります。)

以上でPutty形式の秘密鍵ファイルができました。

TortoiseSVNのインストールと設定

ローカルのWindowsにTortoiseSVNをインストールし、サーバーに接続してみます。

TortoiseSVNのインストール

ダウンロードページから、Windowsのbit数にあったインストーラーと、下方にあるJapaneseのLanguage Packをダウンロードします。(ダウンロードページからのリンクで自動ダウンロードが始まります。飛ばされるページ上の「Download」ボタンはおそらく広告です。)

本体のインストーラー(TortoiseSVN-….msi)、Language Packのインストーラー(LanguagePack_…-ja.msi)の順に実行し、通常のアプリと同様にインストールします。

TortoiseSVNの設定

エクスプローラーの右クリックメニュー

エクスプローラーの上で右クリックすると、メニューに「TortoiseSVN」が追加されています。それをポイントし、サブメニューから「Settings」をクリックします。

TortoiseSVNの設定ダイアログ:一般設定

「Language」に日本語を選択します。

TortoiseSVNの設定ダイアログ:ネットワーク設定

次に左側のツリーからNetworkを選択し、右のパネルのSSH clientに以下を設定します。

"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -ssh -P 10022 -l (ユーザー名) -i (秘密鍵ファイルへのパス) -pw (パスフレーズ)

(ユーザー名)にはSSH接続するときのユーザー名を、(秘密鍵ファイルへのパス)には各位の秘密鍵ファイル(先のprivatekey.ppk)までのパスを、(パスフレーズ)にはパスフレーズを指定してください。-Pオプションはポートの指定で、エックスサーバーの場合は10022になります。

以上で「OK」をクリックします。以降、TortoiseSVNのメニューやダイアログは日本語になります。

(2014年6月20日追記:さくらレンタルサーバーの場合は、秘密鍵は必要ありませんので、「SSHクライアント」には以下を指定します。
"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -ssh -l (ユーザー名) -pw (パスワード)」)

プロジェクトのチェックアウト

プロジェクトの作成」の節で作成したfirst-projectをローカルに展開してみましょう。

適当なフォルダを作成し、そのフォルダをエクスプローラーで開きます。

エクスプローラーの右クリックメニュー

右の空欄を右クリックして、メニューから「SVNチェックアクト」をクリックします。

TortoiseSVNのチェックアウトダイアログ

リポジトリのURLに、svn+ssh://user.xsrv.jp/home/user/svn/repo/first-projectのように指定します。(userは各位のユーザー名になります。)

「OK」をクリックします。

TortoiseSVNのチェックアウト終了後のダイアログ

チェックアウトが終了しました。「OK」をクリックします。

チェックアウト終了後のフォルダ

first-projectの中に上のフォルダが作成され、無事プロジェクトがチェックアウトできました。(.svnは隠しフォルダです。)

trunk以下にファイルやフォルダを作成し、TortoiseSVNメニューから「追加」や「コミット」を選択することでファイルのバージョン管理ができます。(TortoiseSVNの本格的な使い方は他のサイトをご参照ください。)

実務では、チェックアウトの際にsvn+ssh://user.xsrv.jp/home/user/svn/repo/first-project/trunkのように、本家であるtrunkだけ、あるいはさらに下の必要な部分だけチェックアウトして作業したりします。

課題

以上にて、エックスサーバー上にSubversionを構築し、クライアントからアクセスできるようになりました。

しかしSSH接続のアカウントは管理者のみです。皆で作業するのにそれをばら撒くわけにはいきません。またHTTP接続するにはSubversionに付属のモジュールをApacheに組み込む必要があるのですが、共用サーバーではそれもできません。

そこでWEBインタフェイスのファイル管理ツールをサーバーにデプロイし、そのバックエンドでSubversionが動くようなしくみが必要です。

といいますか、WEBインタフェイスのファイル管理ツールにバージョン管理機能があれば、Subversionは必要ないです。(爆

まとめ

  • エックスサーバーにSubversionをインストールし、リポジトリを作成しました。
  • またローカルのWindowsにTortoiseSVNをインストールし、サーバーに接続しました。
  • しかし有効利用するには、WEBインタフェイスのファイル管理ツールとの協働が必要になります。

次回はTracをインストールします。

3 thoughts on “エックスサーバーにSubversionをインストールする

  1. hoge太郎

    XSERVERへのSVNインストールと、Windows(10、64bit)からのTortoiseSVNでのクライアント利用を行いたく参考にさせていただいております。
    しかしながら、TortoiseSVNからチェックアウト時に以下エラーが出てチェックアウトできません。
    エラー: Unable to connect to a repository at URL
    エラー: ‘svn+ssh://[user].xsrv.jp/home/[user]/local/svn/repos/test’
    エラー: To better debug SSH connection problems, remove the -q option from ‘ssh’ in the
    エラー: [tunnels] section of your Subversion configuration file.

    TortoiseSVN>設定>ネットワーク>SSHクライアント設定
    “C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe” -ssh -P 10022 -l [user] -pw [password] -i “D:/ssh/[ppkファイル名]”
    ppkファイルはPoderosaから秘密鍵生成⇒PuTTYgenで変換を行ったものになります。

    PoderosaでのSSH接続はできているのでSVNの設定周りになんらかの誤りがあるのだと思いますが、見当がつきません。
    ※ひとつ気になる点は、「TortoiseSVN>設定>ネットワーク>SSHクライアント設定」がconfigに反映されないことです。
    上記情報から何か原因となりそうな点が思い当たりましたらご指摘いただけませんでしょうか。

    Reply
    1. 長田@悠雀堂 Post author

      申し訳ありませんが、現在はXSERVER、TortoiseSVNともに環境がありませんので試すことができません。
      私も、SVN周りのように思います。以下を試してみては如何でしょうか?
      ・ご利用のバージョンの、TortoiseSVN、TortoisePlink.exeの仕様の確認。
      ・古い安定したバージョンをインストールしてみる。
      ・Windows10でないマシンがあれば、試してみる。

      Reply
  2. Pingback: sshではまる。パスワード設定を省略する | ブログとメルマガのある暮らし

コメントを残す