CentOS7 + Subversion + SSL(certbot)
CentOS7にSubversionを設定したときの覚書。
今回はWebSVNをインストールして、コマンドを打たなくてもリポジトリを管理できる環境を構築してみた。
環境: CentOS 7.8, Subversion 1.10.6
1. Subversionをインストール
前にyum経由でインストールしたリポジトリを流用する。
# vi /etc/yum.repos.d/WANdisco-svn.repo
[WANdisco-svn110]name=WANdisco SVN Repo 1.10enabled=1baseurl=http://opensource.wandisco.com/centos/7/svn-1.10/RPMS/$basearch/gpgcheck=1gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
インストール実行。dnfはyumとほぼ同じ。
# dnf install subversion subversion-perl subversion-python subversion-tools
2.Apache + mod_dav_svnをインストール
yum経由でインストール
# dnf install httpd mod_dav_svn
リポジトリ用ディレクトリを作って権限設定
# mkdir /home/svn
# chown apache. /home/svn/
apacheの設定。アドミンのメールアドレスを変更。
# less /etc/httpd/conf/httpd.conf
ServerAdmin info@dksg.co.jp
起動、自動起動ON、確認
# systemctl start httpd
# systemctl enable httpd
# systemctl list-unit-files -t service
インストール時に生成されたconfは別ディレクトリへ
# cd /etc/httpd/conf.d/
# mkdir bak
# mv *.conf bak/
svn用confファイルを作成
# vi 01_svn.conf
# Needed to do Subversion Apache server.LoadModule dav_svn_module modules/mod_dav_svn.so# Only needed if you decide to do "per-directory" access control.LoadModule authz_svn_module modules/mod_authz_svn.so<VirtualHost *:80>ServerName svn.hoge.co.jp<Location />DAV svnSVNParentPath /home/svnSVNListParentPath on#SVNAutoversioning on</Location></VirtualHost>
再読み込み
# apachectl configtest
# systemctl reload httpd
リポジトリを作ってみる。
# cd /home/svn/
# svnadmin create test
# chown -R apache. test/
ブラウザで「http://svn.hoge.co.jp/」へアクセスするとリポジトリ一覧が見えるはず。
TortoiseSVNでチェックアウトとコミットを試してみる。
3.certbotでSSL化
certbotをインストール。
# dnf install certbot
mod_sslをインストール
# dnf install mod_ssl
認証できるようにApacheのconf設定ファイルを編集。
# cd /etc/httpd/conf.d/
# less 01_svn.conf
<VirtualHost *:80>ServerName svn01.hoge.co.jpDocumentRoot /home/svn<IfModule mod_rewrite.c>RewriteRule "/\.|^\.(?!well-known/)" - [F]</IfModule><Location /.well-known/>Options FollowSymLinksAllowOverride NoneRequire all granted</Location></VirtualHost><VirtualHost *:443>ServerName svn01.hoge.co.jpDocumentRoot /home/svn<Location />DAV svnsvnparentPath /home/svnSVNListParentPath onSVNAutoversioning on</Location></VirtualHost>
configtestして再読み込み
# apachectl configtest
# systemctl reload httpd
認証実行
# certbot certonly --webroot -w /home/svn -d svn01.hoge.co.jp
Apache設定
# less 01_svn.conf
<VirtualHost *:443>ServerName svn01.hoge.co.jpDocumentRoot /home/svnSSLEngine OnSSLCertificateFile /etc/letsencrypt/live/svn01.hoge.co.jp/cert.pemSSLCertificateKeyFile /etc/letsencrypt/live/svn01.hoge.co.jp/privkey.pemSSLCertificateChainFile /etc/letsencrypt/live/svn01.hoge.co.jp/chain.pem<Location />DAV svnsvnparentPath /home/svnSVNListParentPath onSVNAutoversioning on</Location></VirtualHost>
configtestして再読み込み
# apachectl configtest
# systemctl reload httpd
ブラウザで「https://svn.hoge.co.jp/」へアクセスするとリポジトリ一覧が見えるはず。
TortoiseSVNでチェックアウトとコミットを試してみる。
4.cronで自動更新
crondがインストールされていなかったのでインストール
# dnf install cronie
crond起動、自動起動するようにインストールされてた。
# systemctl start crond
# systemctl is-enabled crond
# systemctl list-unit-files -t service
certbotをcronに登録する。
# vi /etc/cron.d/certbot
MAILTO=""# Check ssl certificates at 5am0 5 * * * root certbot renew && /bin/systemctl reload httpd
外部から丸見えなので、次回は認証するように設定。
【関連記事】