バージョン管理のためにApacheSubversionSVNとTortoiseSVNを設定するための究極のガイド


定期的に更新されるドキュメント、Webページ、およびその他の種類のファイルを処理する必要がある場合、まだ行っていない場合は、バージョン管理メカニズムを使用することをお勧めします。

特に、これにより、特定のファイルに加えられた変更を追跡でき、問題が発生した場合、または更新によって期待される結果が得られなかった場合に、以前のバージョンにロールバックできます。 。

自由ソフトウェアエコシステムでは、最も広く使用されているバージョン管理システムはApache Subversion(または略してSVN)と呼ばれます。 mod_dav_svn(ApacheのSubversion用モジュール)を使用すると、HTTPとWebサーバーを使用してSubversionリポジトリにアクセスできます。

そうは言っても、袖をまくり上げて、これらのツールをRHEL/CentOS 7、Fedora 22-24、Debian 8/7、Ubuntu16.04-15.04サーバーにインストールしましょう。テストでは、IP192.168.0.100のCentOS7サーバーを使用します。

クライアント側(Windows 7マシン)では、SVNへのインターフェイスとしてTortoiseSVN(Apache Subversionに基づく)をインストールして使用します。

Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

ステップ1-LinuxへのSVNのインストールと構成

先ほど述べたように、Webインターフェイスを使用してSVNリポジトリにアクセスするためにApacheに依存します。まだインストールされていない場合は、以下に示すように、必ずパッケージのリストに追加してください。

------------------ On CentOS / RHEL / Fedora ------------------ 
# yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
# apt-get update && apt-get install libapache2-svn subversion apache2 -y 

CentOS 7へのインストール中に、SVNのApache構成ファイルが/etc/httpd/conf.modules.d/10-subversion.confとして作成されます。ファイルを開き、次の構成ブロックを追加します。

<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

注:Debian/Ubuntuでは、 /etc/apache2/mods-enabled/dav_svn.conf ファイルに以下の行を追加する必要があります。

<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Debian/Ubuntuでは、dav_svnApacheモジュールを有効にする必要があります。

# a2enmod dav_svn

いくつかの説明:

  1. The SVNParentPath directive indicates the directory where our repositories will be later created. If this directory does not exist (which is most likely the case), create it with:
    # mkdir -p /websrv/svn
    

    It is important to note that this directory must NOT be located inside, or overlap, the DocumentRoot of a virtual host currently being served by Apache. This is a showstopper!

  2. The AuthUserFile directive indicates the file where the credentials of a valid user will be stored. If you want to allow everyone to access SVN without authentication, remove the last four lines in the Location block. If that is the case, skip Step 2 and head directly to Step 3.
  3. Although you may be tempted to restart Apache in order to apply these recent changes, don’t do it yet as we still need to create the authentication file with valid users for SVN, and the repository itself.

ステップ2–SVNへのアクセスを許可されたユーザーを追加する

ここで、htpasswdを使用して、SVNへのアクセスを許可するアカウントのパスワードを作成します。最初のユーザーの場合のみ、 -c オプションが必要になります。

許可されたアカウントとbcryptで暗号化されたパスワード( -B )は、キーと値のペアで/ etc/httpd/subversion-authに保存されます。今日の標準では、htpasswdで使用されるデフォルトのMD5またはSHA暗号化は安全でないと見なされていることに注意してください。

------------------ On CentOS / RHEL / Fedora ------------------ 
# htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
# htpasswd -cB /etc/apache2/subversion-auth tecmint

認証ファイルに適切な所有権と権限を設定することを忘れないでください。

------------------ On CentOS / RHEL / Fedora ------------------ 
# chgrp apache /etc/httpd/subversion-auth
# chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
# chgrp www-data /etc/apache2/subversion-auth
# chmod 660 /etc/apache2/subversion-auth

ステップ3–セキュリティを追加してSVNリポジトリを作成する

Webインターフェイスを介してSVNにアクセスするため、ファイアウォールを通過するHTTP(およびオプションでHTTPS)トラフィックを許可する必要があります。

------------------ On CentOS / RHEL / Fedora ------------------ 
# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent
# firewall-cmd --reload 

-reload を使用してファイアウォール構成を再ロードすることにより、永続的な設定がすぐに有効になります。

tecmintと呼ばれる最初のSVNリポジトリを作成します。

# svnadmin create /websrv/svn/tecmint

所有者とグループ所有者を再帰的にapacheに変更します。

------------------ On CentOS / RHEL / Fedora ------------------ 
# chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
# chown -R www-data:www-data /websrv/svn/tecmint

最後に、/websrv/svn/tecmint のセキュリティコンテキストを変更する必要があります(後で他のリポジトリを作成する場合は、この手順を繰り返す必要があることに注意してください)。

------------------ On CentOS / RHEL / Fedora ------------------ 
# chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
# chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

注:SELinuxが無効になっているVPSにSVNをインストールする場合、最後の2つのコマンドが適用されない場合があります。

Apacheを再起動し、リポジトリが使用可能であることを確認します。

------------------ On CentOS / RHEL / Fedora ------------------ 
# systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
# systemctl restart apache2

次に、Webブラウザーを起動し、 http://192.168.0.100/svn/tecmint をポイントします。手順1で作成した有効なユーザーの資格情報を入力すると、出力は次のようになります。

この時点では、リポジトリにコードを追加していません。しかし、私たちはすぐにそれを行います。

ステップ4– Windows7クライアントにTortoiseSVNをインストールする

冒頭で述べたように、TortoiseSVNはApacheSubversionへのユーザーフレンドリーなインターフェースです。これはGPLの下でライセンスされた自由ソフトウェアであり、 https://tortoisesvn.net/downloads.htmlからダウンロードできます。

続行する前に、マシンに対応するアーキテクチャ(32ビットまたは64ビット)を選択し、プログラムをインストールしてください。

ステップ5–クライアントマシンにSVNリポジトリをセットアップする

このステップでは、Documents内で webapp という名前のフォルダーを使用します。このフォルダーには、HTMLファイルと、バージョンコントロールに追加するJavascriptファイルとCSSファイル(それぞれscript.jsとstyles.css)を含むscriptsとstylesという名前の2つのフォルダーが含まれています。

webappを右クリックし、SVNチェックアウトを選択します。これにより、リモートリポジトリ(現時点では空)のローカルコピーが作成され、バージョン管理用にフォルダが初期化されます。

リポジトリのURLに http://192.168.0.100/svn/tecmint と入力し、ローカルのチェックアウトディレクトリが同じであることを確認して、[OK]をクリックします。

ユーザー名とパスワードを入力し(手順2を参照)、[OK]をクリックします。

空でないディレクトリにチェックアウトするかどうかを尋ねられます。チェックアウトを続行することを確認します。完了すると、フォルダ名の横に緑色のチェックマークが表示されます。

ステップ6–変更をコミットしてファイルをリモートSVNリポジトリにデプロイする

もう一度 webapp を右クリックし、今度は[コミット]を選択します。次に、後でこのコミットを識別するための説明的なコメントを記述し、リポジトリにデプロイするファイルとフォルダーを確認します。最後に、[OK]をクリックします。

ファイルのサイズにもよりますが、コミットには1分以上かかることはありません。完了すると、Webインターフェイスにリストされているバージョンとファイルに一致するリビジョン1になっていることがわかります。

同じファイルで作業している人が複数いる場合は、ローカルコピーを更新して、最新バージョンで作業できるようにする必要があります。これを行うには、 webapp を右クリックし、コンテキストメニューから[更新]を選択します。

おめでとう!これで、SVNサーバーが正常にセットアップされ、バージョン管理下で単純なプロジェクトがコミット/更新されました。

概要

この記事では、CentOS7サーバーにApacheSubversionリポジトリサーバーをインストールして構成する方法と、TortoiseSVNを使用してそのリポジトリに変更をコミットする方法について説明しました。

SVNとTortoiseSVNには、ここで十分にカバーできるもの(特に以前のリビジョンに戻す方法)よりもはるかに多くのものがあることに注意してください。したがって、公式ドキュメント( SVNおよび TortoiseSVN)を参照してください。

いつものように、ご不明な点がございましたら、お気軽にお問い合わせください。以下のコメントフォームを使用して、いつでもお気軽にご連絡ください。