Subversion構築手順 (CentOS7)
CentOS7でSubversion構築の手順です。
※2019/07/31 随所に誤りがあったので、検証しつつ細かい部分を修正しました。
Subversionをとりあえず動かせるようにするまでと、リビジョン管理としてWebSVNもインストールします。
SVNリポジトリの中でcode,document,operationという3つのフォルダを作成します。
追加ディスクのマウント
だいたいSVNのリポジトリとなるディレクトリは、追加ディスクをマウントして利用します。
本手順に置き換えると/svn_repo というディレクトリにマウントして構築するとよいと思います。
前提
CentOS7で構築。
TCP3690ポートを開放していること。
selinux無効化
SVN構築手順
※rootユーザでの作業です。
インストール
yum install subversion mod_dav_svn mod_ldap
確認
svnserve --version
リポジトリ作成
mkdir /svn_repo/test_repo/
ls -ld /svn_repo/test_repo/
sudo svnadmin create --fs-type fsfs /svn_repo/test_repo/repo
svn mkdir file:///svn_repo/test_repo/repo/code -m "create"
svn mkdir file:///svn_repo/test_repo/repo/document -m "create"
svn mkdir file:///svn_repo/test_repo/repo/operation -m "create"
権限付与
chmod -R g+w /svn_repo/test_repo
レポジトリ領域のオーナー変更
ls -l /svn_repo/test_repo/
chown -R apache:apache /svn_repo/test_repo/
ls -l /svn_repo/test_repo/
設定
設定ファイル作成
cd /svn_repo/test_repo/repo/conf
cp -p svnserve.conf{,_`date +'%y%m%d'`}
ls -l svnserve.conf_`date +'%y%m%d'`
vi svnserve.conf
※下記を記載
[general]
anon-access = none
auth-access = write
authz-db = authz
realm = test.co.jp
ACLファイル作成
リポジトリへのアクセス権限設定ファイルの作成
cd /svn_repo/test_repo/repo/conf/
cp -p authz{,__`date +'%y%m%d'`}
ls -l authz__`date +'%y%m%d'`
vi authz
※とりあえず下記、全員読み書き可の設定を記載しておきます。
[/]
* = rw
リポジトリの仮想ルートを修正
vi /etc/sysconfig/svnserve
※以下修正
[変更前]
OPTIONS="-r /var/svn"
[変更後]
OPTIONS="-r /svn_repo/test_repo/repo/"
svnserve起動
systemctl start svnserve
systemctl status svnserve
systemctl enable svnserve
systemctl is-enabled svnserve
Apache設定
vi /etc/httpd/conf.d/dav_svn.conf
※以下記載。/svn_repo/test_repo/repo/conf/authzというファイルでACLの設定をします(この記事では割愛)。
<Location /svn_repo>
DAV svn
SVNPath /svn_repo/test_repo/repo
AuthzSVNAccessFile /svn_repo/test_repo/repo/conf/authz
</Location>
SSL化
※とりあえず自己証明書を配置しておきます。
# mod_sslインストール
yum install mod_ssl
# 秘密鍵作成
openssl genrsa -aes128 2048 > server.key
# 秘密鍵パスフレーズ解除
openssl rsa -in server.key -out server.key
# CSR作成
openssl req -new -key server.key > server.csr
※以下入力(このあたりは自由です。)
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Tokyo
Organization Name (eg, company) [Default Company Ltd]:XXX CO., Ltd.
Organizational Unit Name (eg, section) []:Development Dept.
Common Name (eg, your name or your server's hostname) []:SVNサーバのGIPなど
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# 証明書作成
openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
# 秘密鍵と証明書移動
mkdir /etc/httpd/ssl/
cp server.key server.crt /etc/httpd/ssl/
# パーミッション変更
chmod 400 /etc/httpd/ssl/server.*
# 設定変更
cp -p /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bk
vi /etc/httpd/conf.d/ssl.conf
※以下の項目を修正
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
#HTTP→HTTPSリダイレクト設定
vi /etc/httpd/conf.d/rewrite.conf
※以下記載
<ifModule mod_rewrite.c>
RewriteEngine On
LogLevel crit rewrite:trace3
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%\{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifModule>
# apacheサービス再起動、自動起動設定
systemctl restart httpd
systemctl status httpd
systemctl enable httpd
systemctl is-enabled httpd
確認作業
テストファイルのインポート
echo "test">test.txt
svn import test.txt file:///svn_repo/test_repo/repo/code/test.txt -m "import"
svn list file:///svn_repo/test_repo/repo/code
表示確認
※HTTPSポートを開放しておくこと
WEBブラウザ表示確認 https://SVNサーバのGIP/svn_repo/
"svn_repo - Revision X: /"などリビジョン番号が表示されます。
またTortoiseSVNをダウンロードし、
ファイルのアップロードなど正常に行えるか確認するとよいです。
TortoiseSVN Registory Managerを開き、https://SVNサーバのGIP/svn_repo/ でログインします。
以下のように作成した3つのフォルダが表示されるとOKです。
Websvn設定手順
インストールイメージの取得
websvn-2.3.3.tar.gzを以下からダウンロードする。
http://websvn.tigris.org/
必要なパッケージのインストール(上で既にしてるけど)
yum --enablerepo=php-repo,base install php php-pear php-mbstring
インストールイメージ配置
mkdir /svn_repo/www/
websvn-2.3.3.tar.gzを/svn_repo/www/に転送する
cd /svn_repo/www/
tar zxvf websvn-2.3.3.tar.gz
ls -l /svn_repo/www/
権限変更
chown -R apache:apache /svn_repo/www/websvn-2.3.3/
chmod -R 755 /svn_repo/www/websvn-2.3.3/
Apache設定
vi /etc/httpd/conf.d/websvn.conf
※以下記載。
Alias /websvn /svn_repo/www/websvn-2.3.3
<Location /websvn>
Require all granted
</Location>
Websvn設定ファイル作成
cd /svn_repo/www/websvn-2.3.3/include/
cp -p distconfig.php config.php
ls -l config.php
vi config.php
※以下編集。
・82行目
[変更前]
// $config->addRepository('NameToDisplay', 'URL to repository (e.g. file:///c:/svn/proj)');
[変更後]
$config->addRepository('test_svn', 'file:///svn_repo/test_repo/repo');
・221行目
[変更前]
// $config->useAuthenticationFile('/path/to/accessfile'); // Global access file
[変更後]
$config->useAuthenticationFile('/svn_repo/test_repo/repo/conf/authz');
確認
diff distconfig.php config.php
# Apache再起動
systemctl restart httpd
ブラウザ表示確認 https://SVNサーバのGIP/websvn/
こちらでリビジョン管理等が確認できるようになります。
Tortoisesvnなどツールの使い方やACLについては別の記事で記載できたらと思います。
構築より運用の方法を決めて管理するほうが大変だったりするんですけどね…
Author And Source
この問題について(Subversion構築手順 (CentOS7)), 我々は、より多くの情報をここで見つけました https://qiita.com/y-araki-qiita/items/486c9c52cda0cfa4ce0c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .