DebianにSVNリポジトリサーバを立てる

今まで、SVNリポジトリサーバを、apache+svnにnginxからリバースプロキシして利用していた。よくわからないけど、これがうまくいく時とうまくいかない時があり、もうしびれを切らして、nginxを省くことにした。

ついでに、今までVMWareFusion上でDebian6を運用していたが、VirtualBoxに変えるのとDebian7を使ってみることにした。VMWareFusionはサーバ用途には挙動が信用ならないと思っている。

ディスクからDebian7のインストール

この時点で、ホスト名には、公開用のホスト名を設定した。

apt-getがディスクから読み取りになっているので、コメントアウト

apt-getの取得先を変更する

#vi /etc/apt/sources.list
deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 DVD Binary-1 20130615-23:06]/ wheezy contrib main
↓
# deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 DVD Binary-1 20130615-23:06]/ wheezy contrib main

固定IPの設定

#vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.XXX
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.XXX

どうも、最初"allow-hotplug eth0"となったいたが、
これだけでは起動時自動的に接続可能状態にまでならないので、
"auto eth0"とする必要がある。

Guest-Additionのインストール

VirtualBoxのツールのインストール。一応入れておく。

#apt-get update
#apt-get upgrade
#apt-get install build-essential module-assistant
#/media/cdrom/GuestAdditionLinux.run

apache2のインストール

SubversionSSL上で運用する。一応、PHPも入れておく。

#apt-get install apache2
#apt-get install libapache2-mod-php5
#apt-get install libapache2-svn libapache2-mod-encoding

80番を使えないようにする

#a2dissite default

ports.confで、80番をコメントアウト、443番を有効化する。

#vi /etc/apache2/ports.conf
NameVirtualHost *:80
Listen 80
↓
#NameVirtualHost *:80
#Listen 80
<IfModule mod_ssl.c>
    Listen 443
</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

443番を構築する。

通常ページは、"Options Indexes"を外しておく。

#vi /etc/apache2/sites-available/default-ssl
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin XXX@XXX.com
    DocumentRoot /var/www/html
    ServerName XXX.XXX.com

    LogLevel warn
    ErrorLog /var/log/apache2/svn.error.log

    ServerSignature Off

    # ----------------------------------------
    # 通常のページ
    # ----------------------------------------
    <Directory /var/www/html>
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /var/www/cgi-bin
    <Directory "/var/www/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    # ----------------------------------------
    # SVN
    # ----------------------------------------
    <Location /svn/>
        DAV svn
        DAVMinTImeout 0
        SVNParentPath /var/svn/

        AuthType Basic
        AuthName "svn"
        AuthUserFile /etc/apache2/basic.passwd
        Require valid-user
    </Location>

    # ----------------------------------------
    # SSL設定
    # ----------------------------------------
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/ssl.key

</VirtualHost>
</IfModule>

証明書については、以下を参照。/etc/apache2/ssl/に格納する。

ウチでは、Subversionのユーザは、apacheBasic認証でOKにしている。

SVNディレクトリを引っ越しする

前のサーバから、リポジトリのダンプを出力する。

#svnadmin dump /var/svn/myrep > /home/user/myrep.svndump

このファイルを、新しいサーバに持ってきて、新しいサーバでリポジトリを作る。

#mkdir -p /var/svn/myrep
#svnadmin create /var/svn/myrep
#svnadmin load /var/svn/myrep < /home/user/myrep.svndump

Apacheにアクセス権限を与える。横着して、所有者にしている。

#chown -R www-data:www-data /var/svn/myrep
#service apache2 reload
#service apache2 restart

テスト

$svn checkout https://XXX.XXX/svn/myrep