CentOS6.x Subversion

Subversionサーバをブラウザで管理できるSVNManagerをインストールします



本編は「導入編」です。SVNManagerのセットアップからリポジトリの作成と、クライアントからのアクセス(WebDAV)までをひと通りできる様にします

ユーザの追加やアクセス制限の設定、既存リポジトリのSVNManagerへの取り込み等については[CentOS]Subversionサーバをブラウザで管理できるSVNManagerを使おう - 運用編に記載します


SVNManagerを使うと、リポジトリの追加や削除、ユーザ・グループの追加やリポジトリ毎のアクセス権限がブラウザから設定できる様になりますのでとても便利です

ちなみに、Subminも同様にブラウザで管理できます

Submin2による構築記録は[CentOS6.x]Submin2でSVNサーバをブラウザで管理するに記載していますのであわせてどうぞ

Recommend Book

Subversionを実用的に使おう

安心のオライリー本です

前提条件

SVNManagerは、リポジトリに関する管理情報をMySQLに保持しますので、MySQLサーバも利用可能な状態となっていることを前提とします

MySQLサーバのインストールについては[CentOS]MySQLの導入を参照してください

また、SVNManagerはPHPアプリケーションですのでApache2+PHPな環境が必要です

Subversionサーバについては既に構築済みの状態でも問題はありませんが一部注意しなければならない点があります

SVNManager概要

SVNManagerはPHPで実装されているWEBアプリケーションです

PHPからsvnコマンドを発行し、リポジトリの作成等を行ってくれます

リポジトリの情報やリポジトリにアクセスするユーザやグループの情報をMySQLデータベースに保持しつつ、同時にSubversionアクセス制限設定ファイル(authzsvn.conf)や認証ファイルを自動で作成してくれます

構築する環境

以下に、構築する環境を記載します

SVNManagerインストール先/usr/local/svnmanager
MySQLデータベース名svnmanager
MySQL接続ユーザsvnmanager_user
MySQL接続ユーザパスワードpwd
Subversionリポジトリ ルートディレクトリ/home/svn/repos/
SVNアクセス制御ファイル/home/svn/conf/svn.authz.conf
SVN認証ファイル/home/svn/conf/svn.passwd
SVNManagerアクセスURLhttp://ホスト名/svnmanager/
リポジトリ基底URL(WebDAV)http://ホスト名/svn/

Apache2+PHPな環境の構築

既に環境がある場合は不要です

いろんなサイトに構築手順は載っていますので、ここでは簡単に記載するだけとします

インストール

# yum install httpd php php-mysql php-mbstring php-pear

Apache2の設定

/etc/httpd/conf/httpd.confの以下の部分を変更

ServerName localhost.localdomain:80
#AddDefaultCharset UTF-8
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ServerTokens ProductOnly
ServerSignature Off

Apache2起動時環境変数の設定

この後インストールするPEARモジュール「VersionControl_SVN」で文字化けを起こさない様にする為、Apache2の環境変数「HTTPD_LANG」を「ja_JP.utf8」に設定します

具体的には/etc/sysconfig/httpdファイルに以下を追記します

HTTPD_LANG=ja_JP.utf8

PHP.INIの変更

PHP5.3よりdate.timezoneが設定されていないとエラーとなってしまうので設定しておきます

/etc/php.iniを以下の様に変更します

date.timezone = "Asia/Tokyo"

PHP-PEARモジュール "VersionControl_SVN" のインストール

SVNManagerは、PEARモジュール "VersionControl_SVN" を必要としますのでインストールします

# pear install VersionControl_SVN
Failed to download pear/VersionControl_SVN within preferred state "stable", latest release is version 0.5.1, stability "alpha", use "channel://pear.php.net/VersionControl_SVN-0.5.1" to install
install failed

うーん。エラーになりましたね

いろいろ試した結果、バージョン0.4.0でないとうまく動かない様なので、バージョン指定でインストールします

(*)バージョン0.5.1だと、PEAR_ErrorStackが無い旨のエラーとなり、SVNManagerがうまくうごきませんでした

# pear install VersionControl_SVN-0.4.0
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
WARNING: "pear/XML_Parser" is deprecated in favor of "pear/XML_Parser2"
downloading VersionControl_SVN-0.4.0.tgz ...
Starting to download VersionControl_SVN-0.4.0.tgz (40,187 bytes)
...........done: 40,187 bytes
downloading XML_Parser-1.3.4.tgz ...
Starting to download XML_Parser-1.3.4.tgz (16,040 bytes)
...done: 16,040 bytes
install ok: channel://pear.php.net/XML_Parser-1.3.4
install ok: channel://pear.php.net/VersionControl_SVN-0.4.0

はい。インストールされました

MySQLデータベースの準備

SVNManagerが利用するデータベース及び接続ユーザを作成します

$ mysql -u root -p
Enter password:
mysql> create database svnmanager default charset utf8;
Query OK, 1 row affected (0.02 sec)
mysql> grant all privileges on svnmanager.* to svnmanager_user@localhost identified by 'pwd';
Query OK, 0 rows affected (0.06 sec)

Subversionの導入

Subversionをインストールします

WebDAV経由(http)でリポジトリにアクセスできる様にする為、mod_dav_svnパッケージもあわせてインストールします

既にSubversionを運用中の場合は不要です

# yum install subversion mod_dav_svn

また、SVNリポジトリを格納するディレクトリを作成します

# mkdir -p /home/svn/{repos,config,conf}
# chown -R apache:apache /home/svn

SVNManagerのダウンロード及びインストール

SVNManager 公式サイトより、最新のSVNManagerをダウンロードします

執筆時点ではv1.0.9が最新ですので、svnmanager-1.0.9.tar.gzをダウンロードします

# wget http://downloads.sourceforge.net/project/svnmanager/svnmanager/1.09/svnmanager-1.09.tar.gz?r=http%3A%2F%2Fsvnmanager.sourceforge.net%2F&ts=1375956025&use_mirror=jaist

ダウンロード後、ファイルを/usr/local/下に展開し、ファイル一式のオーナーをapacheにします

# tar xvzf svnmanager-1.09.tar.gz -C /usr/local/
# chown -R apache.apache /usr/local/svnmanager-1.09

ついでにシンボリックリンクも作っておきましょう

# ln -s /usr/local/svnmanager-1.09 /usr/local/svnmanager

メモ

SELinuxが有効になっている場合、作成したディレクトリにSELinux関連の属性も設定しておいてください

でないと、SVNManagerからの書き込み時にパーミッションエラーとなります

SVNManagerの設定

SVNManagerの設定を行います

インストール先(/usr/local/svnmanager/)に、設定ファイルのサンプル(config.php.linux or config.php.win)があります

今回はLinuxでの構築になりますので、config.php.linuxをコピーしてconfig.phpを新規に作成します

# cp -s /usr/local/svnmanager/config.php.linux /usr/local/svnmanager/config.php

/usr/local/svnmanager/config.phpの内容を以下の様に設定します(変更箇所のみ記載)

$lang                                 = "ja_JP.UTF-8";
$svn_cmd                              = "/usr/bin/svn";
$svn_config_dir                       = "/home/svn/config";
$svn_repos_loc                        = "/home/svn/repos";
$svn_passwd_file                      = "/home/svn/conf/svn.passwd";
$svn_access_file                      = "/home/svn/conf/svn.authz.conf";
$dsn                                  = "mysqli://svnmanager_user:pwd@localhost/svnmanager";
$smtp_server                          = "localhost";

注意

SVNアクセス制御ファイルとSVN認証ファイルはSVNManagerが自動生成します

既にSubversionを運用中の場合は、ファイルがSVNManagerで上書きされない様、上記設定($svn_passwd_file,$svn_access_file)を変えてください

なお、リポジトリルートディレクトリ(/home/svn/repos/)は現行運用中と同一でも問題はありません(SVNManagerには取り込み機能がある)

Apacheの設定

http://ホスト名/svnmanager/ でアクセスできる様、apacheの設定を行います

/etc/httpd/conf.d/svnmanager.confを新規に作成します

ファイルの内容は以下です

#SVNManager
Alias /svnmanager /usr/local/svnmanager
#<Location /svnmanager>
#    php_value date.timezone Asia/Tokyo
#    php_value default_charset UTF-8
#</Location>

(*)PHP関連の設定はコメントアウトしていますが、サーバのPHP環境によっては必要かもしれません

ファイル設置後は、apacheを再起動します

# /etc/rc.d/init.d/httpd restart

SVNManager画面へのアクセス

ブラウザにて、SVNManager管理画面にアクセスします

アクセスするURLは、http://localhost/svnmanager/ です

SVNManagerは、初回アクセス時にMySQLデータベースに必要なテーブルを作成する為、ブラウザ上に以下の文字が表示されます

All tables are missing.
Creating requried tables...

Please reload page!

どうやらテーブルの作成に成功した模様なので、指示に従い、ページを再表示すると以下の様な画面が表示されます

ここで、ユーザ名とパスワードにそれぞれ「admin」「admin」と指定し、管理者としてログインします

注意

上記管理者ユーザとパスワードは、SVNManager設定ファイルである/usr/local/svnmanager/config.phpに記載されています

初期値として、admin/adminと設定されている為、上ではその様に指定しました

ログインに成功すると、以下の様な画面になります

リポジトリ管理者の作成

先ほどログインしたユーザ"admin"は一時的な管理者です

SVNManagerを運用するに当たり、正式な管理者ユーザをここで登録します

ここでは、ユーザ名を「system」、パスワードを「manager」として管理者権限を持ったユーザを作成します

先ほどの、adminでログインした直後の画面の左メニュー「User Admin」をクリックし、「Add a new user to the repository system」を実行します

上記画面の通り、必要事項を記入します

大事なことは、「admin」項目にチェックをし、このユーザ「system」に管理者権限を付与することです

なお、入力項目最後の「Password」には、現在ログインしているユーザ「admin」のパスワードである「admin」を指定します

作成後はログアウトします

注意

最初にログインした「admin」ユーザは、初期セットアップ時だけ有効なユーザですので、必ず管理者ユーザを作成してください

ちなみに「admin」というユーザでも作成できます

SVNManagerへの再ログイン

先ほど作成した管理者ユーザ「system」でログインします

すると、メニューに選択肢が増えています

各メニューの機能の概要は以下です

User Adminリポジトリ利用者の登録や変更・削除を行います
Group Adminリポジトリ利用者をグループ化する為のグループの登録や変更等を行います
Repository Adminリポジトリを新規に作成したり、リポジトリへのアクセス権限を設定したりします

リポジトリの新規作成

では、まずリポジトリを作ってみましょう

[Repository Admin]-[Create a new Repository]を実行してリポジトリを作成します

ここでは「sandbox」というリポジトリを作成することとします

メモ

SELinuxが有効になっている場合、作成時にパーミッション絡みのエラーがでる場合があります

SELinuxのラベルを/home/svn/以下に正しく設定するか、SELinuxをpermissiveにするなどしてください

作成に成功すると、リポジトリ基底ディレクトリ以下にリポジトリが作成されていることが確認できます

[root@localhost ~]# ls -al /home/svn/repos/
合計 12
drwxr-xr-x. 3 apache apache 4096  8月  9 21:07 2013 .
drwxr-xr-x. 5 apache apache 4096  8月  9 19:52 2013 ..
drwxr-xr-x. 6 apache apache 4096  8月  9 21:07 2013 test1
[root@localhost ~]#

また、/home/svn/conf以下に、Subversionアクセス制御用ファイルと認証ファイルが生成されたことが確認できます

[root@localhost svn]# ls -al /home/svn/conf
合計 16
drwxr-xr-x. 2 apache apache 4096  8月  9 21:24 2013 .
drwxr-xr-x. 5 apache apache 4096  8月  9 19:52 2013 ..
-rw-r--r--. 1 apache apache   33  8月  9 21:24 2013 svn.authz.conf
-rw-r--r--. 1 apache apache   45  8月  9 21:23 2013 svn.passwd

Subversionアクセス制御用ファイル(/home/svn/conf/svn.authz.conf)の内容は以下の通りです

[groups]

[test1:/]
system = rw

リポジトリ「test1」について、リポジトリを作成した「system」ユーザが「読み込み・書き込み」権限を持つような設定になっていることが撹乱できます

また、認証フアイル(/home/svn/conf/svn.passwd)の内容は以下となっています

system:$apr1$9vvsIsNb$c6vdFfgj9TxiAhwwCwPac0

システムユーザのパスワードのようです

この状態であれば、リポジトリ「test1」に対してユーザ「system」がアクセスできそうなので、WebDAV(apache)の設定を行なってみます

Apacheの設定(WebDav関連)

Subversionアクセス制御ファイルや認証ファイルの位置を、SVNManagerが自動生成するファイルの位置を指す様に変更します

Subversionを構築していない場合は以下の内容を、ファイル /etc/httpd/conf.d/subversion.conf をに追加します

(*)/etc/httpd/conf.d/subversion.confは、mod_dav_svnパッケージをインストールした際に生成されるフアイルです

<Location /svn>
    Order allow,deny
    Allow from all
    DAV svn
    SVNParentPath /home/svn/repos
    # our access control policy
    AuthzSVNAccessFile /home/svn/conf/svn.authz.conf
    # only authenticated users may access the repository
    Require valid-user
    # Subversion認証情報
    AuthType Basic
    AuthName "Subversion Repository authenticated zone"
    AuthUserFile /home/svn/conf/svn.passwd
</Location>

ファイル変更または設置後は、apacheを再起動します

# /etc/rc.d/init.d/httpd restart

SVNクライアントからのアクセス

Windows用クライアントであるTortoiseSVN等から、リポジトリ「test1」をチェックアウトしてみます

リポジトリURLは、http://構築したホストのIPアドレス/svn/test1/ になります

また、認証情報は、ユーザ名がsystemでパスワードがmanagerとなります

リポジトリの中身は今のところ空ですので、他にもチェックアウトされませんがエラーがでなければ成功です

書き込み確認の為、チェックアウトしたリポジトリにフォルダ「docs」と「src」を追加してコミットしてみましょう

このようにコミットが成功したら、SVNManagerの環境の構築は完了したと考えてよいでしょう

続いて・・・・ユーザアクセス制限の設定等

ひとまずSVNManagerによるリポジトリの作成とクライアントからのアクセスができるようになりました

続いてユーザの追加やアクセス制限の設定、更に既存リポジトリの追加等をおこなってみたいと思います

目次

  • Page.1
    • SVNManagerを使おう - 導入編
  • Page.2
    • SVNManagerを使おう - 運用編

関連ページ