Subversionのウェブ管理ツールUSVNをインストール
Subversionをウェブで管理できるPHP製のUSVNをインストールしたときの覚書。
USVNを使うとリポジトリ作成、ユーザー/グループ管理、フォルダごとの権限設定をウェブ管理画面から行うことができる。
環境: CentOS 8.1, Apache 2.4.37, PHP 7.3.5, USVN 1.0.9
1. PHP7をインストール
phpのモジュール一覧
# dnf module list php
php7.3をインストール
# dnf module install php:7.3/common
その他のPHPモジュールをインストール
# dnf install php-mysqlnd php-gd
CentOS8からはApacheのモジュールではなくphp-fpmをデフォルトで使用するようになった。
起動、自動起動ON、確認
# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl list-unit-files -t service | grep php-fpm
# php --version
実行ユーザーがapacheになっているか確認
# less /etc/php-fpm.d/www.conf
php.confを確認
# less /etc/httpd/conf.d/php.conf
Apacheの再読み込み
# apachectl configtest
# systemctl reload httpd
確認用phpファイルを作成
# vi /var/www/html/index.php
<?phpphpinfo();
ブラウザでIPアドレスを入力して表示されるか確認。
ポートを開けるのを忘れずに。
2.MariaDBとphpMyAdminをインストール
前とほぼ一緒なので省略
3.USVNをインストール
USVN(User-friendly SVN)を使うとsvnadminコマンドを使わずにリポジトリ作成やユーザー管理などが行える。
GitHub上のドキュメントを参考にインストールする。
各種apacheモジュールがインストール済みか確認
# cd /etc/httpd/conf.modules.d/
# grep dav ./*
# grep rewrite ./*
# grep authz ./*
git cloneする。
# cd /home/svn/
# git clone https://github.com/usvn/usvn.git
# cd usvn/
# git tag
# git checkout 1.0.9
Apacheの設定
# less /etc/httpd/conf.d/01_svn.conf
<VirtualHost *:80>ServerName svn.hoge.co.jpDocumentRoot /home/svn/repo<Location /.well-known/>Require all granted</Location>#USVNAlias /usvn /opt/software/usvn/src/public<Location /usvn>Options +SymLinksIfOwnerMatchAllowOverride All## For Apache HTTP 2.2#Order allow,deny#Allow from all## For Apache HTTP 2.4Require all granted</Location></VirtualHost>
再読み込み
# apachectl configtest
# systemctl reload httpd
ブラウザで表示してみる。
インストールのチュートリアルが開始するので、指示通りにやっていく。
アクセス権限の設定
# cd /home/svn/usvn/src/
# chown apache. public/
# chown apache. config/
エラー。
PHP7ではphp_flogが使えない。
.user.iniに変更
# less public/.htaccess
#php_flag short_open_tag on#php_flag magic_quotes_gpc off
# vi public/.user.ini
short_open_tag = onmagic_quotes_gpc = off
STEP3でも.htaccessが上書きされるので、.htaccessを編集する必要があった。
Basic認証用の権限を設定
# chown apache. files/
その他、Apacheの設定が久しぶりだったのでいろいろ試行錯誤しながらインストール完了。
4.試しにプロジェクト作成
管理画面からプロジェクトを作成してみる。
subversion.path + '/svn/'に「svnadmin create」される。
ソースコードに直書きだったので、これは諦めるしかない。
5.既存svnプロジェクトをインポート
スクリプトがあるのを見つけたので使ってみる。
# cd src/library/tools/
# chmod +x usvn-import-svn-repositories.php
ヘルプ表示のために引数なしで実行。
# ./usvn-import-svn-repositories.php
インポート実行、権限付与
# ./usvn-import-svn-repositories.php ../../config/config.ini /home/old/project/
# chown apache. -R /home/svn/repo/svn/project/
管理画面で見てもコミットログが表示されない。
svnadmin upgradeした後にインポートしても同じ。
ディレクトリごと移動するとうまくいった。
# cd /home/svn/repo/
# svnadmin upgrade /home/old/project/
# rm -rf svn/project/
# mv /home/old/project/ svn/
# chown apache. -R svn/project/
管理画面で書き込み権限(write permission)を設定。
adminだと書き込み権限が設定できない。
他の管理者を追加すると設定できた。
SSLも設定した。
USVNのドキュメントが少ないのでサーバー周りに詳しくないとハマると思う。
USVNの管理画面UIが分かりにくいので作り込みたい衝動に駆られたけども、リポジトリを作成するときだけしか使わないので、まぁいいかな。
【関連記事】