Apache SubversionまたはSVNは、ApacheSoftwareFoundationによって開発されたオープンソースのソフトウェアバージョン管理およびリビジョン管理システムです。これは、ソースコード、ドキュメント、およびWebページの現在および過去のバージョンを維持するために使用されます。
大規模なプロジェクトや、Apache Software Foundation、FreeBSD、GCC、SourceForgeなどのオープンソースコミュニティで広く使用されているSubversionまたはsvn
この記事では、Ubuntu18.04LTSサーバーを使用してApacheSubversionをセットアップする方法を紹介します。 ApacheをWebサーバーとして使用してsvnソフトウェアをインストールおよび構成し、ユーザーに対して「基本認証」を有効にし、リポジトリアクセスにLetsencryptSSLを使用してアクセスを保護します。
そして、GITを好む人のために、Ubuntu18.04GITチュートリアルがここにあります。
- Ubuntu 18.04
- root権限
- Ubuntu18.04にApache2Webサーバーをインストールします
- Apache Subversion(SVN)をインストールする
- Subversionリポジトリを構成する
- UbuntuApache2用のSSLLetsencryptを生成する
- Apache2でSubversion仮想ホストを構成する
- テスト
この最初のステップでは、Apache2 Webサーバーをインストールし、ufwファイアウォール構成に新しいサービスsshとHTTPを追加します。
以下のaptコマンドを使用してApache2Webサーバーをインストールします。
sudo apt install apache2 apache2-utils -y
インストールが完了したら、SSHおよびHTTPサービスをufwファイアウォール構成に追加します。
以下のufwコマンドを実行します。
ufw allow ssh
ufw allow http
ファイアウォールを有効にします。
ufw enable
次に、Apache2サービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start apache2
systemctl enable apache2
Apache2 Webサーバーが稼働しており、SSHおよびHTTPサービスがファイアウォールサービスリストに追加されています。
このチュートリアルでは、公式のUbuntuリポジトリからsubversionパッケージとsvnlibapacheパッケージをインストールします。
以下のaptコマンドを使用してSubversionをインストールします。
sudo apt install subversion subversion-tools libapache2-mod-svn -y
次に、svnコマンドを確認します。
svn --version
Apache Subversion(SVN)がUbuntu18.04サーバーにインストールされました。
Subversionのインストール後、マスターSubversionリポジトリディレクトリを構成します。すべてのソースコードとリポジトリを保存するために使用される新しい「svn」ディレクトリを作成します。
新しい「/svn」マスターディレクトリを作成します。
mkdir /svn
そして、以下のsvnadminコマンドを使用して、「hakase-project」という名前の新しいサンプルリポジトリを作成します。
svnadmin create /svn/hakase-project
次に、「/ svn/hakase-project」ディレクトリの所有者を「apache」ユーザーおよびグループに変更します。
sudo chown -R apache:apache /svn/hakase-project
そして、svnリポジトリが作成されました。
このチュートリアルでは、「svn.hakase-labs.io」という名前のドメインでHTTPS接続を使用するようにsvnサーバーを構成します。無料のSSLLetsencryptを使用します。これは、certbotツールを使用して生成できます。
以下のyumコマンドを使用してUbuntuサーバーにcertbotをインストールします。
sudo apt install certbot -y
インストールが完了したら、HTTPSサービスをufwファイアウォールサービスリストに追加する必要があります。
以下のufwコマンドを実行します。
ufw allow https
ufw reload
ここでhttpdサービスを停止し、「スタンドアロン」の一時Webサーバーを使用してSSLLetsencryptを生成できるようにします。
systemctl stop apache2
以下のcertbotコマンドを使用して、ドメイン名「svn.hakase-labs.io」のSSLLetsencryptを生成します。
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io
そして、それが完了すると、「/ etc /letsencrypt/live」ディレクトリ内に証明書ファイルを取得します。
このステップでは、svnアクセス用の新しいApachehttpd構成を作成します。ドメイン名「svn.hakase-labs.io」を使用してsvnリポジトリを構成し、HTTP基本認証を使用して登録ユーザーのみがアクセスできるようにします。
'/ etc/apache2'構成ディレクトリに移動します。
cd /etc/apache2/
'sites-available'ディレクトリに新しいsubversion仮想ホスト構成'svn.conf'を作成します。
cd sites-available/
vim svn.conf
以下の設定を貼り付けてください。
<VirtualHost svn.hakase-labs.io:80> ServerName svn.hakase-labs.io DocumentRoot /var/www/html Redirect permanent / https://svn.hakase-labs.io </VirtualHost> <VirtualHost svn.hakase-labs.io:443> DocumentRoot /var/www/html ServerName svn.hakase-labs.io SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem ErrorLog /var/log/apache2/svn_error_log TransferLog /var/log/apache2/svn_access_log LogLevel warn <location /repo> DAV svn SVNParentPath /svn/ AuthType Basic AuthName "Authorization Realm" AuthUserFile /etc/subversion/svn.users Require valid-user </location> <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog /var/log/apache2/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
保存して終了します。
次に、ファイルを表示してリポジトリにコミットできるユーザーの新しいリストを作成する必要があります。
htpasswdコマンドを使用して、「hakase」という名前の新しいユーザーを作成します。
sudo htpasswd -cm /etc/subversion/svn.users hakase
以下のコマンドを実行して、ApacheでSSLモジュールを有効にし、svn仮想ホストを有効にします。
sudo a2enmod ssl
sudo a2ensite svn
Apache2サービスを再起動します。
systemctl restart apache2
Subversionの仮想ホスト構成が作成され、「hakase」ユーザーがソースコードを表示して「hakase-project」リポジトリにコミットできるようになりました。
Webブラウザーを開き、サーバーのURLを入力します。私のものは以下のURLです。
https://svn.hakase-labs.io/repo/hakase-project/
そして、基本的なユーザー認証が表示されます。
'hakase'ユーザーとパスワードでログインすると、以下のようなページ空白ページリポジトリが表示されます。
次に、svnサンプルプロジェクトテンプレートを「hakase-project」リポジトリにインポートします。
新しいsvn-templatesプロジェクトディレクトリを作成します。
mkdir -p ~/svn-templates/{trunk,branches,tags}
以下のsvnコマンドを使用して、テンプレートディレクトリを「hakase-project」リポジトリに追加します。
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
いくつかのことについて尋ねられ、次のように行動します。
- 「p」と入力して、Letsencrypt証明書を永続的に追加します。
- 「hakase」のユーザーとパスワードを入力します。
- 「yes」と入力して、暗号化されていないパスワードの保存について確認します。
Webブラウザから「hakase-project」を確認すると、すべてのテンプレートディレクトリが表示されます。
svn templateディレクトリを作成してアップロードした後、リポジトリをローカル環境に複製してみます。
非root/通常のユーザーにログインします。
useradd -m -s /bin/bash misaka
su - misaka
'hakase-project'リポジトリに'hakase'ユーザーとして'myproject'という名前のローカルディレクトリのクローンを作成します。
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
新しい「myproject」ディレクトリを確認すると、すべてのsvnテンプレートが取得されます。
tree ~/myproject
'myproject'ディレクトリに移動します。
cd myproject/
'trunk'ディレクトリにいくつかのファイルを作成します。
echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txt
追加してコミット
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Webブラウザからリポジトリを確認すると、すべてのファイルがリポジトリに追加されていることがわかります。
Ubuntu18.04LTSサーバーでのApacheSubversionのインストールと構成が正常に完了しました。