레이블이 svn인 게시물을 표시합니다. 모든 게시물 표시
레이블이 svn인 게시물을 표시합니다. 모든 게시물 표시

2017년 3월 4일 토요일

Subversionのインストールと設定 - centOS

Subversionのインストールと設定

社内のソースコードの管理に使おうかということになり、サーバにインストールしてみることになりました。とりあえずお勉強になったので、備忘録をまとめてみました。
最初はソースコードからコンパイルしてインストールすることを考えていたのですが、これがまた思ったよりめんどくさい感じだったので、やっぱりyumをインストールしてから作業することに...。
作業にあたり下記URLが大変参考になりました。
http://blog.fkoji.com/2010/04081036.html
基本的にそのまんま作業です。CentOSのバージョンが同じだったもんで、問題なくyumインストール完了。インストール後、yumのアップデートを行ないました。ネットは便利ですね。知りたいことが大抵見つかります。情報を公開していただいた方に感謝!
◆◆◆まずはyumのインストール◆◆◆
→OSのバージョン調査
cat /etc/redhat-release
CentOS release 5.4 (Final)
→unameでシステム情報を参照
uname -a
Linux xxxxxx.xx 2.6.18-028stab068.5 #1 SMP Fri Mar 12 13:55:49 MSK 2010 i686 i686 i386 GNU/Linux
i386とあるので http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/ からyumのrpmを取得。
cd /usr/local/src
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-3.2.22-20.el5.centos.noarch.rpm
→ダウンロード後、インストール。
rpm -ivh yum-3.2.22-20.el5.centos.noarch.rpm
warning: yum-3.2.22-20.el5.centos.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
error: Failed dependencies:
python-elementtree is needed by yum-3.2.22-20.el5.centos.noarch
python-iniparse is needed by yum-3.2.22-20.el5.centos.noarch
python-sqlite is needed by yum-3.2.22-20.el5.centos.noarch
rpm-python is needed by yum-3.2.22-20.el5.centos.noarch
urlgrabber >= 3.1.0 is needed by yum-3.2.22-20.el5.centos.noarch
yum-fastestmirror is needed by yum-3.2.22-20.el5.centos.noarch
yum-metadata-parser >= 1.1.0 is needed by yum-3.2.22-20.el5.centos.noarch
お、やっぱりエラーだ。リストアップされてる各パッケージをダウンロードして...
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-elementtree-1.2.6-5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/rpm-python-4.4.2.3-18.el5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/m2crypto-0.16-6.el5.6.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/libxml2-2.6.26-2.1.2.8.i386.rpm
→再度、インストール。
rpm -ivh *
→インストール後、一応アップデートしてみました。
yum update
これでyumはインストール完了。

◆◆◆今度は本命のSubversionのインストール◆◆◆
作業にあたり、このサイトが設定に役立ちました。こちらも情報ありがとうございます!
http://d.hatena.ne.jp/foldrr/20090717/p2

→では、インストール。楽だぁ~全自動ですよ。
yum install subversion
yum install mod_dav_svn

◆◆◆Subversionの設定◆◆◆
→では、設定ファイルの編集を。
vi /etc/httpd/conf.d/subversion.conf
まずは公開設定を試してみました。以下のようにしてみました。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be readable and writable by the 'apache' user. Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www. Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#
#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
#
<Location /repos>
 DAV svn
 SVNParentPath /var/www/svn
</Location>
→次いで、リポジトリを作ってみました。
cd /var/www/svn
svnadmin create hogehoge
chown -R apache:apache hogehoge
chmod -R o+w hogehoge
→最後にapacheの再起動。
service httpd restart
これで最低限の設定はいいはずなのですが...
なんと「Could not open the requested SVN filesystem」のエラーに翻弄されることに...。
いろいろ試行錯誤する羽目になったのですが、結果的にsvnディレクトリのオーナー権限、グループ権限に問題があったことが分かりました。
svnディレクトリのオーナー、グループはsvnではなく、apacheじゃないとダメなんですね...。ふぅ。
chown -R apache:apache svn
実は、このsvnディレクトリ、svnのインストールの際に、自動的に「/home/svn/」に自動で生成されたものをcp -aしてきたものなんです。当然自動で生成されたディレクトリだから、オーナー権限、グループ権限は変更せずにsvnのままコピーしたのですが、それでハマってしまったわけです...。因みに「subversion.conf」内の設定例では「/var/www/svn」となっていて、今回はそのようにしてみたのですが、それは結果的にどっちでもいいらしいです。
それじゃ、今度は非公開(ベーシック認証)の設定をしてみるかということで、該当部分のコメントアウト外してみたのですが...
<Location /repos>
 DAV svn
 SVNParentPath /var/www/svn
 # Limit write permission to list of valid users.
 <LimitExcept GET PROPFIND OPTIONS REPORT>
  # Require SSL connection for password protection.
  # SSLRequireSSL
  AuthType Basic
  AuthName "Authorization Realm"
  AuthUserFile /var/www/svn/.htpasswd
  Require valid-user
 </LimitExcept>
</Location>
htpasswd -c /var/www/svn/.htpasswd hogehoge
New password: hogehoge
Re-type new password: hogehoge
service httpd restart
以上で、設定完了ですが、なぜかIDとパスワードを聞かずにスルっと通してしまうのです。ワケが分からない...。ネットで見つけたとある情報に基づき、httpd.confで設定されているDocumentRoot下にリポジトリを変更してみたりしたのですがそれでもダメでした。
とりあえず、セキュリティ面はIPで制限を掛けることとして、今回は妥協してみました。なんでダメなんだろ。
<Location /repos>
 DAV svn
 SVNParentPath /var/www/svn
 order deny,allow
 deny from all
 allow from 127.0.0.1 
 allow from xxx.xxx.xxx.xxx ←通すIPにします。
</Location>
service httpd restart
修行は続く。

Linux-UbuntuでのSubversionのインストールと使い方


最近GitHubの方に現を抜かしていたせいで、Subversionの使い方を忘れていた自分が居たので使い方をまとめておきます。
環境はLinux-Ubuntuです。
まずはSubversionのインストールから

Subversion:インストール

1
$ sudo apt-get install subversion subversion-tools libapache2-svn
subversion-toolsはリポジトリのバックアップやファイルのマージ等を行うツール群がパッケージされています。
libapache2-svnはリポジトリをApache2を利用して公開するためのパッケージという事です。

Subversion:設定

インストールが終わったら、Subversionリポジトリをウェブサーバーで公開できるようにApache2の設定をしましょう。
1
$ sudo vim /etc/apache2/mods-enabled/dav_svn.conf
開いてみるとほぼ全文コメントアウトみたいな状態だと思います。
該当箇所だけコメントアウトを外すのは面倒くさいので、ファイルの一番下に
1
2
3
4
<Location /svn>
  DAV svn
  SVNParentPath /home/svn
</Location>
を追記してあげるといいと思います。
終わったら設定反映の為にApacheの再起動
1
$ sudo apache2ctl restart

Subversion:リポジトリの作成

さて設定が終わったので早速リポジトリを作成しましょう。
リポジトリの場所は本来好きな場所に設定する事ができますが、
上の方でApache2のSVN用公開ディレクトリを
SVNParentPath /home/svn
に設定していますのでココにディレクトリを作成し、リポジトリを作ります。
1
2
3
$ sudo mkdir /home/svn/
$ cd /home/svn/
$ sudo svnadmin create test
svnadmin create リポジトリ名
を実行すると自動的にSubversionを使うにあたって必要なファイル郡が作成されます。

Subversionファイル郡のユーザーグループ設定

このままではsudoによりroot権限でリポジトリ「test」を作成してしまった手前、
Apache2の権限ではSubversionファイル郡に触れる事ができません。ので
ユーザーを変更してあげる必要があります。
ちなみにApache2はwww-dataというユーザーで動いていますので~
1
$ sudo chown -R www-data:www-data test
chown -Rの-Rでディレクトリの中のすべてのディレクトリ、ファイルを一度にユーザー:www-data,グループ:www-dataに変更してしまう事ができます。
後はsvnコマンドのimportやcheckoutオプションを使ってファイルのインポートやチェックアウトが可能になります。

Subversion:運用の参考

参考:インポート

1
2
3
4
5
6
7
8
9
10
11
$ cd
$ mkdir test
$ cd test
$ cat > test
aaa
bb
ccc
^D
$ cd ../
$ svn import test/  http://localhost/svn/test/ -m "import test"
追加しています              test/test

参考:チェックアウト

1
2
3
$ svn checkout http://localhost/svn/test
A    test/test
リビジョン 1 をチェックアウトしました。
また、Apache2によってwebserver上にリポジトリが公開されていますので
ブラウザ等を開き、アドレス欄にdomain/svn/リポジトリ名/と入力
(先ほどの例ではdomain/svn/test/になりますね。)
する事でインポートしたファイルの一覧を見ることができるようになっています。
Linux自体から参照する場合は当然、http://localhost/svn/test/に
またIPで示すならばlocalhostを表わす http://127.0.0.1/svn/test/で
リポジトリを参照する事ができます。
Windowsからチェックアウトする時にはTortoiseSVNなどを使ってチェックアウトしてあげるとはかどります。
以上
尚、この記事を書くにあたり
すらすら はてなさんのサイト
を参考にさせていただきました。ありがとうございます。

UbuntuにApache2でSubversionサーバーを構築する

Ubuntu Apache2 Subversion
間違ってVirtualBoxのvdiファイルを削除してしまったためにやり直し・・・トホホ。

Apache2のインストール

$ sudo apt-get install apache2

Subversionのインストール

$ sudo apt-get install subversion subversion-tools libapache2-svn
subversion-toolsはレポジトリのバックアップやファイルのマージなどのツール群。
libapache2-svnレポジトリをApache2を利用して公開するためのModule。

Subversionの設定

/etc/apache2/mods-enabled/dav_svn.confを編集する。
$ sudo gedit /etc/apache2/mods-enabled/dav_svn.conf
中身はほとんどコメントアウトされてる(#で始まる行がコメント)なので下のように書き換える。
<Location /svn>
  DAV svn
  SVNParentPath /home/svn
</Location>
この設定は 「http://localhost/svn/testにアクセスすると/home/svn/testのレポジトリを参照するよー」という設定(たぶん)
設定を反映させるためにApacheの再起動
$ sudo apache2ctl restart

Subversionのテスト

testという名前でレポジトリを作成する。
$ sudo mkdir /home/svn/
$ cd /home/svn/
$ sudo svnadmin create test
レポジトリを作るとフォルダができて、その中にいろんなファイルができる。
Subversionを使う上で、この辺のファイルを直接いじることはまずない。
$ ls
test
$ cd test
$ ls
README.txt  conf  dav  db  format  hooks  locks
ローカルで使う場合はこのままでも良いが、Apacheを通じてレポジトリを公開するときはApache側からアクセスできるようにファイルの所有者・グループを変更しておく。
apacheはwww-dataというユーザーで動いているらしい
$ ps aux | grep apache2
root      5685  0.0  1.0  10164  2600 ?        Ss   22:33   0:00 /usr/sbin/apache2 -k start
www-data  5686  0.0  0.7   9936  1848 ?        S    22:33   0:00 /usr/sbin/apache2 -k start
www-data  5687  0.0  1.1 231500  2904 ?        Sl   22:33   0:00 /usr/sbin/apache2 -k start
www-data  5689  0.0  1.1 231500  2820 ?        Sl   22:33   0:00 /usr/sbin/apache2 -k start
というわけでtestディレクトリに対して以下のような操作をすればOK
$ sudo chown -R www-data.www-data test
確認
$ ls -al
合計 12
drwxr-xr-x 3 root     root     4096 2007-11-22 22:53 .
drwxr-xr-x 4 root     root     4096 2007-11-22 22:51 ..
drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 test
$ cd test
$ ls -al
合計 36
drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 .
drwxr-xr-x 3 root     root     4096 2007-11-22 22:53 ..
-rw-r--r-- 1 www-data www-data  229 2007-11-22 22:53 README.txt
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 conf
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 dav
drwxr-sr-x 5 www-data www-data 4096 2007-11-22 22:53 db
-r--r--r-- 1 www-data www-data    2 2007-11-22 22:53 format
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 hooks
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 locks

testディレクトリとtestファイルを作成し、testレポジトリにインポートする。
$ cd
$ mkdir test
$ cd test
$ cat > test
aaa
bb
ccc
^D
$ cd ../
$ svn import test/  http://localhost/svn/test/ -m "import test"
追加しています              test/test

リビジョン 1 をコミットしました。
チェックアウトしてみる
$ svn checkout http://localhost/svn/test
A    test/test
リビジョン 1 をチェックアウトしました。
http://localhost/svn/test/にアクセスして 「Revision 1: /」とか表示されてればOK