Apache SubversionまたはSVNは、ApacheSoftwareFoundationによって開発されたオープンソースのバージョン管理およびリビジョン管理ソフトウェアです。これは、ソースコード、ドキュメント、およびWebページの現在および過去のバージョンを維持するために使用されます。
Subversionは、多くのソフトウェア開発者や、Apache Software Foundation、FreeBSD、GCC、SourceForgeなどのオープンソースプロジェクトで使用されています。
この記事では、最新のCentOS7サーバーでApacheSubversionを設定する方法を紹介します。 ApacheをWebサーバーとして使用してsvnソフトウェアをインストールおよび構成し、Let'sEncryptでユーザーの「基本認証」をアクティブ化して保護します。
- CentOS7サーバー
- root権限
- CentOS7にApacheHttpdをインストールする
- Subversionのインストール
- Subversionリポジトリを構成する
- CentOSApacheHttpd用のSSLLetsencryptを生成する
- ApacheHttpdでSubversion仮想ホストを構成する
- テスト
このガイドの最初のステップは、Apachehttpdパッケージをシステムにインストールすることです。
以下のyumコマンドを使用してApachehttpdをインストールします。
yum -y install httpd httpd-tools mod_ssl
インストールが完了したら、HTTPサービスをfirewalldサービスリストに追加する必要があります。
以下のfirewall-cmdコマンドを実行します。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
次に、httpdサービスを開始し、ブート時に開始するように追加します。
systemctl start httpd
systemctl enable httpd
Apachehttpdがサーバー上で稼働しています。
このチュートリアルでは、ベースのCentOS7リポジトリからsubversionパッケージをインストールします。
以下のyumコマンドを使用して、Subversionと必要なすべてのパッケージをインストールします。
yum -y install subversion subversion-tools mod_dav_svn
すべてのパッケージがインストールされるまで待ってから、svnバージョンを確認してください。
svn --version
ステップ3-Subversion(SVN)リポジトリを構成する
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リポジトリが作成されました。
注:
SELinuxユーザーの場合は、以下のコマンドを実行してください。
chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project
このチュートリアルでは、「svn.hakase-labs.io」という名前のドメインでHTTPS接続を使用するようにsvnサーバーを構成します。 certbotツールで生成できる無料のLet'sEncryptSSL証明書を使用します。
以下のyumコマンドを使用してCentOSサーバーにcertbotをインストールします。
yum -y install certbot
インストールが完了したら、HTTPSサービスをfirewalldサービスリストに追加する必要があります。
以下のfirewalldコマンドを実行します。
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload
ここでhttpdサービスを停止し、「スタンドアロン」の一時Webサーバーを使用してSSLLetsencryptを生成できるようにします。
systemctl stop httpd
以下のcertbotコマンドを使用して、ドメイン名「svn.hakase-labs.io」のLetsencryptSSL証明書を生成します。
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/httpd/conf.d'ディレクトリに移動し、新しいsvn構成'svn.conf'を作成します。
cd /etc/httpd/conf.d/
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 logs/svn_error_log TransferLog logs/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 logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
ファイルを保存してエディタを終了します。
次に、ファイルを表示してリポジトリにコミットできるユーザーの新しいリストを作成する必要があります。
以下のhtpasswdコマンドを使用して、「hakase」という名前の新しいユーザーを作成します。
sudo htpasswd -cm /etc/subversion/svn.users hakase
次に、Apachehttpdサービスを再起動します。
systemctl restart httpd
'hakase'ユーザーは、ソースコードを表示して'hakase-project'リポジトリにコミットするためのアクセス権を持っています。
ウェブブラウザを開いてサーバーの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ディレクトリを作成してアップロードした後、リポジトリのクローンを作成するか、ローカル環境にコピーします。
新しい通常のユーザーを作成し、そのユーザーにログインします。
useradd -m -s /bin/bash misaka
su - misaka
「hakase-project」リポジトリの「myproject」という名前のローカルディレクトリを「hakase」ユーザーとして複製します。
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
そして、以下でそれらについて再度尋ねられます。
- 「p」と入力して、Letsencrypt証明書を永続的に追加します。
- 「hakase」のユーザーとパスワードを入力します。
- 「yes」と入力して、暗号化されていないパスワードの保存について確認します。
完了したら、新しい「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ブラウザーからリポジトリーを確認すると、すべてのファイルがリポジトリーに追加されていることがわかります。
CentOS7でのHTTPSLetsencryptを使用したApacheSubversionのインストールと構成が正常に完了しました。