ウェブサイト検索

バージョン管理用に Apache Subversion SVN および TortoiseSVN をセットアップするための究極ガイド


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

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

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

とはいえ、気を引き締めてこれらのツールをRHEL/CentOS 7Fedora 22-24Debian 8/7 にインストールしましょう。 Ubuntu 16.04 ~ 15.04 サーバー。テストでは、IP 192.168.0.100CentOS 7 サーバーを使用します。

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

弊社のテスト環境


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_svn Apache モジュールを有効にする必要があります。


a2enmod dav_svn

いくつかの説明:

  1. SVNParentPath ディレクティブは、後でリポジトリが作成されるディレクトリを示します。このディレクトリが存在しない場合 (おそらくそうなります)、次のコマンドを使用して作成します。

    
    mkdir -p /websrv/svn
    

    このディレクトリは、現在 Apache によって提供されている仮想ホストのDocumentRoot 内に配置したり、 DocumentRoot と重複したりしてはいけないことに注意することが重要です。 これは注目の的です!

  2. AuthUserFile ディレクティブは、有効なユーザーの認証情報が保存されるファイルを示します。誰もが認証なしで SVN にアクセスできるようにするには、Location ブロックの最後の 4 行を削除します。その場合は、ステップ 2 をスキップして、ステップ 3 に直接進んでください。
  3. これらの最近の変更を適用するために Apache を再起動したくなるかもしれませんが、SVN の有効なユーザーを使用して認証ファイルとリポジトリ自体を作成する必要があるため、まだ再起動しないでください。

ステップ 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 つのコマンドは適用されない可能性があります。

推奨読書: Linux で SELinux を一時的または永続的に無効にする方法について学びます

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


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

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

次に、Web ブラウザを起動して、http://192.168.0.100/svn/tecmint を指定します。 ステップ 1 で作成した有効なユーザーの認証情報を入力すると、出力は次のようになります。

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

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

冒頭で述べたように、TortoiseSVN は Apache Subversion への使いやすいインターフェイスです。これは GPL に基づいてライセンスされたフリー ソフトウェアであり、https://tortoisesvn.net/downloads.html からダウンロードできます。

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

SVNTortoiseSVN には、ここで十分に説明できる内容よりもさらに多くの機能があることに注意してください (特に、以前のリビジョンに戻す方法)。そのため、公式を参照することをお勧めします。詳細と構成ケースについては、ドキュメント (SVN および TortoiseSVN) を参照してください。

いつものように、ご質問がございましたら、お気軽にお問い合わせください。いつでも下記のコメントフォームをご利用ください。