##0 はじめに
(1)VMWare WorkstartionにLinux(CentOS7)を入れて、
WindowsにインストールしたSVNや
Linux(CentOS7)にインストールしたSVNでコミットとかをしてみました。
(※色々なQiitaの記事をパクって実施)
(2)環境やツールは以下
CentOS7、VMWare Workstartion 15、TeraTerm、Windows10、SVN、Apache、WebDAV
(3)色々省略して書いているので、参考程度に!!!
##1 まず、VMWare Workstartion15のネットワーク設定をブリッジにしておく
仮想マシン設定の編集リンクをクリック
ネットワークアダプタのネットワーク接続をブリッジに選択
##2 VMを起動し、TeraTermを使って、Linux(CentOS7)に接続、事前にhttpdは、インストールして、起動状態にしておく
#一般ユーザーでログインして、rootに切り替える
[rinchome@localhost ~]$ su - root
#Apacheをインストール
[root@localhost ~]# yum -y install httpd
インストール:
httpd.x86_64 0:2.4.6-97.el7.centos
依存性関連をインストールしました:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7
完了しました!
[root@localhost ~]# systemctl enable httpd
#Apache起動
[root@localhost ~]# systemctl start httpd
##2 VMの中でApacheが起動されているのを確認してみる
###(1) ifconfig コマンドでLinux(CentOS7)のIPアドレスを確認(実行後、inet XXX.XXX.XXX.XXXの箇所を確認)
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XXX.XXX.XXX.XXX ・・・
###(2) VMでFireFoxなどのブラウザを開き、上記(1)のIPを入力して以下のURLをアクセス
「http://XXX.XXX.XXX.XXX」
VM上に、以下↓↓の画面が表示されること
※TeraTermではなく、VMでログインし、仮想デスクトップを開き、FireFoxなどを起動。
##3 次にWindows上でChromeなどを開き、Apacheが起動されているのを確認する
###(1)以下のコマンドを実行し、Windowsからアクセスできるようにする
[root@localhost ~]# firewall-cmd --zone=public --add-service=http
success
###(2) WindowsでChromeなどのブラウザを開き、上記2-(1)のifconfigコマンドで確認したIPアドレスを入力して以下のURLをアクセス
「http://XXX.XXX.XXX.XXX」
Windows上に、以下の画面が表示されること
##4 Linux(CentOS7)にSVNをインストール
[root@localhost ~]# yum -y install subversion
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : subversion-libs-1.7.14-16.el7.x86_64 1/2
インストール中 : subversion-1.7.14-16.el7.x86_64 2/2
検証中 : subversion-libs-1.7.14-16.el7.x86_64 1/2
検証中 : subversion-1.7.14-16.el7.x86_64 2/2
インストール:
subversion.x86_64 0:1.7.14-16.el7
依存性関連をインストールしました:
subversion-libs.x86_64 0:1.7.14-16.el7
完了しました!
###5 リポジトリーを作成する
[root@localhost ~]# mkdir -p /home/svn/repos/test
[root@localhost ~]# svnadmin create /home/svn/repos/test
##6 リポジトリの編成
作成したtestリポジトリ配下にtrunk,branches,tagsディレクトリを作成します。
コミットも発生するので、-m でコミットメッセージも記載します。
[root@localhost ~]# svn mkdir file:///home/svn/repos/test/trunk -m "create"
Committed revision 1.
[root@localhost ~]# svn mkdir file:///home/svn/repos/test/branches -m "create"
Committed revision 2.
[root@localhost ~]# svn mkdir file:///home/svn/repos/test/tags -m "create"
Committed revision 3.
[root@localhost ~]#
##7 mod_dav_svnをインストールする
webDAVを導入し、リポジトリを公開します。
これにより、複数のユーザがapache経由でリポジトリとやりとりをすることができるようになります。
[root@localhost ~]# yum -y install mod_dav_svn
Running transaction
インストール中 : mod_dav_svn-1.7.14-16.el7.x86_64 1/1
検証中 : mod_dav_svn-1.7.14-16.el7.x86_64 1/1
インストール:
mod_dav_svn.x86_64 0:1.7.14-16.el7
完了しました!
##8 リポジトリのパーミッションを変更
Apacheプロセスがリポジトリにアクセスできる様にパーミッションを変更します。
[root@localhost ~]# chown -R apache:apache /home/svn/repos/
##9 subversion.confの設定
subversion設定ファイル(/etc/httpd/conf.d/subversion.conf)に対して設定を行う。
#viで開く
[root@localhost ~]# vi /etc/httpd/conf.d/subversion.conf
#catで表示している以下の内容を設定!!!
[root@localhost ~]# cat /etc/httpd/conf.d/subversion.conf
<Location /svn/repos>
DAV svn
SVNParentPath "/home/svn/repos/"
SVNListParentPath on
</Location>
[root@localhost ~]#
ちなみに各場所でなにを設定しているかというと、
-
<**Location /svn/repos**> subversionのRootディレクトリ以下をどのようなURLで表示させるかを指定します。左記の設定なら、
http://localhost/svn/repos
となります。 -
DAV svn お決まりの文言。
-
SVNParentPath リポジトリのルートフォルダを指定します。
-
SVNListParentPath on ブラウザでリポジトリにアクセスした際、リポジトリ配下をリスト表示させるかを指定します。
##10 SELinux用対策
SELinuxが有効(Enforcing)の場合、/home/svn/repos以下に対して、ラベルを付与しアクセス可能となる様にします
[root@localhost ~]# chcon -R -h -t httpd_sys_content_t /home/svn/repos
#Apache再起動
[root@localhost ~]# systemctl restart httpd
##11 WindowsからChromeブラウザ起動して以下URLでアクセスできるか確認する
http://XXX.XXX.XXX.XXX/svn/repos/test/ ※XXX部分は、上記2-(1)のipconfigコマンドで確認したIPアドレス
##12 Linux(CentOS7)上で(/home/memo)にリポジトリーの内容をチェックアウトしてみる(svn coコマンド利用)
[root@localhost ~]# mkdir -p /home/memo
[root@localhost ~]# cd /home/memo/
[root@localhost memo]# pwd
/home/memo
[root@localhost memo]# svn co file:///home/svn/repos/test/
A test/tags
A test/trunk
A test/branches
リビジョン 3 をチェックアウトしました。
[root@localhost memo]# ls
test
[root@localhost memo]# cd test/
[root@localhost test]# ls
branches tags trunk
##13 branchesフォルダーにaaa.txtを追加してコミットしてみる
[root@localhost test]# pwd
/home/memo/test
[root@localhost test]# ls
branches tags trunk
[root@localhost test]# cd branches/
[root@localhost branches]# vi aaa.txt
[root@localhost branches]# cat aaa.txt
aaa
[root@localhost branches]# svn st
? aaa.txt
[root@localhost branches]# svn add aaa.txt
A aaa.txt
[root@localhost branches]# svn st
A aaa.txt
[root@localhost branches]# svn diff
Index: aaa.txt
===================================================================
--- aaa.txt (リビジョン 0)
+++ aaa.txt (作業コピー)
@@ -0,0 +1 @@
+aaa
[root@localhost branches]# svn commit -m "aaa.txtコミット"
追加しています aaa.txt
ファイルのデータを送信しています .
Committed revision 4.
##14 13でコミットした内容がWindowsからアクセスして確認できるかテスト
「http://XXX.XXX.XXX.XXX/svn/repos/test/branches/」
##15 BASIC認証方式の設定
この状態でも複数人による運用は可能ですが、
だれでも参照・更新ができてしまうのでセキュリティの面で大変よろしくありません。
次にユーザ登録とアクセス権限の設定を行います。
ブラウザでリポジトリの確認ができたら、subversion.confの「SVNListParentPath on」より下に設定を追記していきます。
[root@localhost branches]# vi /etc/httpd/conf.d/subversion.conf
#catで表示している以下の内容を設定!!!
[root@localhost branches]# cat /etc/httpd/conf.d/subversion.conf
<Location /svn/repos>
DAV svn
SVNParentPath "/home/svn/repos/"
SVNListParentPath on
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile /etc/subversion/conf/authzsvn.conf
AuthUserFile /etc/subversion/conf/authuser.conf
Require valid-user
</Location>
[root@localhost branches]#
各設定項目の内容は以下の通り。
- AuthType 認証タイプ。Basicを指定することによって、Basic認証になります。
- AuthName 認証画面に表示される認証名。この値で固定です。
- AuthzSVNAccessFile SVNフォルダ(svn/repos配下)のアクセス許可の設定ファイル名
- AuthUserFile ユーザ名とパスワードが記載されているファイル名を指定します。
- Require valid-user アクセスを許可するユーザを指定。「valid-user」はパスワードファイルに含まれているすべてのユーザに許可することを意味する。
記載の順序は不問のようです
##16 ユーザ作成
下記のhtpasswdコマンドを実行し、ユーザを追加していきます。
コマンド実行後、パスワードの入力が求められるので
パスワードを決めて、2回パスワードを入力します。
root@localhost subversion]# cd /etc/subversion/
[root@localhost subversion]# mkdir conf
[root@localhost subversion]# cd conf/
[root@localhost conf]# ls
[root@localhost conf]# touch authuser.conf
#htpasswd /etc/subversion/conf/authuser.conf (ユーザーID)
[root@localhost conf]# htpasswd /etc/subversion/conf/authuser.conf user1
New password:
Re-type new password:
Adding password for user user1
##17 ユーザのリポジトリ権限登録
「/etc/subversion/conf/authzsvn.conf」にユーザIDとそれに紐づく権限を記載していきます。
基本的な記載方法は以下の通り。
[ディレクトリパス]
(ユーザーID) = (参照権限)
[ディレクトリパス]はSVNParentPath で設定したディレクトリパスより配下のディレクトリのうち、どのディレクトリに対する権限を設定するか記載するところ。
[/]とすると、ルートディレクトリとなり、SVNParentPathに設定したディレクトリパスより下となります。
[/test]とすると、testリポジトリに限定した権限設定となります。
参照権限については、以下の表にまとめました。
参照権限 | 内容 |
---|---|
r | 参照権限を付与 |
w | 書き込み権限を付与。 |
rw | 参照・書き込み権限を付与。 |
未記入 | 参照・書き込み権限を付与しません。 |
例えば、ルートディレクトリ配下に対し、user1に参照・書き込み権限を付与、user2に参照権限を付与、user3に権限を付与しない場合は以下のようになります。
[/]
user1=rw
user2=r
user3=
では、以下のように作成していきます
[root@localhost conf]# pwd
/etc/subversion/conf
[root@localhost conf]# ls
authuser.conf
[root@localhost conf]# vi authzsvn.conf
#catで表示している以下の内容を設定!!!
[root@localhost conf]# cat authzsvn.conf
[/]
user1=rw
[root@localhost conf]#
##18 設定反映のため、Apacheを再起動する
[root@localhost conf]# systemctl restart httpd
[root@localhost conf]#
##19 WindowsからChromeブラウザ起動して以下URLでアクセスし、Basic認証を聞かれるので、ユーザーID(user1)とパスワードを入力してアクセスできるか確認する
アクセスするURLは以下
http://XXX.XXX.XXX.XXX/svn/repos/test/ ※XXX部分は、上記2-(1)のifconfigコマンドで確認したIPアドレス
##20 次にWindowsからチェックアウトをして、コミットを行う↓↓
##21 まず、WindowsにSVNをインストールし、チェックアウトをする
(1)以下にアクセスしてSVNのmsiファイルをダウンロード
https://ja.osdn.net/projects/tortoisesvn/
(2)上記、アクセスし、今回は下記のファイルをダウンロード、ダウンロードしたらクリックしてインストール ※クリックだけひたすらする、特別な設定は今回なにもしていない。
TortoiseSVN-1.14.1.29085-x64-ipv6-svn-1.14.1.msi
(3)事前にLinux(CentOS)上に以下のコマンドを実行する
リポジトリ内のdavとdbフォルダ以下のオーナーをapacheに変更しないといけない
subversionのバージョンが1.5以降になるとdavディレクトリは自分で作らないといけないらしいので要注意。
[root@localhost test]# pwd
/home/svn/repos/test
[root@localhost test]# ll
合計 8
-rw-r--r--. 1 apache apache 229 3月 22 16:36 README.txt
drwxr-xr-x. 2 apache apache 54 3月 22 16:36 conf
drwxr-sr-x. 6 apache apache 253 3月 22 17:06 db
-r--r--r--. 1 apache apache 2 3月 22 16:36 format
drwxr-xr-x. 2 apache apache 231 3月 22 16:36 hooks
drwxr-xr-x. 2 apache apache 41 3月 22 16:36 locks
[root@localhost test]# mkdir dav/
[root@localhost test]# ll
合計 8
-rw-r--r--. 1 apache apache 229 3月 22 16:36 README.txt
drwxr-xr-x. 2 apache apache 54 3月 22 16:36 conf
drwxr-xr-x. 2 root root 6 3月 22 17:47 dav
drwxr-sr-x. 6 apache apache 253 3月 22 17:06 db
-r--r--r--. 1 apache apache 2 3月 22 16:36 format
drwxr-xr-x. 2 apache apache 231 3月 22 16:36 hooks
drwxr-xr-x. 2 apache apache 41 3月 22 16:36 locks
[root@localhost test]# chown apache:apache -R db/ dav/
[root@localhost test]# ll
合計 8
-rw-r--r--. 1 apache apache 229 3月 22 16:36 README.txt
drwxr-xr-x. 2 apache apache 54 3月 22 16:36 conf
drwxr-xr-x. 2 apache apache 6 3月 22 17:47 dav
drwxr-sr-x. 6 apache apache 253 3月 22 17:06 db
-r--r--r--. 1 apache apache 2 3月 22 16:36 format
drwxr-xr-x. 2 apache apache 231 3月 22 16:36 hooks
drwxr-xr-x. 2 apache apache 41 3月 22 16:36 locks
[root@localhost test]#
Windowsでのコミット実施時に「could not begin a transaction」エラーがでるので、
一旦、Linux(CentOS7)で以下のコマンドを打ち込む。
[root@localhost test]# setenforce 0
[root@localhost test]#
上記は、一旦、暫定対応として、SELinuxの設定がどうとかが原因らしいので。
##22 21のSVNインストールやその他の設定が終わったら、Windowsからチェックアウトを行う
(1)WindowのデスクトップにTESTフォルダー作成する
(2)TESTフォルダーを右クリックし、Linux(CentOS7)で作成したリポジトリーをチェックアウト
以下、リポジトリーのURL入力してOKする ※XXX部分は2-(1)のifconfigコマンドで確認したIPアドレス
Basic認証で入力したユーザーID(user1)とパスワードを入れる
(3)TESTフォルダーの中にLinuxで作成したリポジトリーがチェックアウトできていることを確認
##23 aaa.txtを編集してコミットしてみる
###(1)branchesフォルダーの「aaa.txt」を開く
###(2)「aaa.txt」を編集
###(3)「aaa.txt」を編集確認
###(4)「aaa.txt」をコミットしてみる
###(5)コミット確認
###(6)Linux(CentOS7)仮想サーバー上でSVN更新して反映できているか確認する
[root@localhost test]# cd /home/memo/test/
[root@localhost test]# ls
branches tags trunk
[root@localhost test]# cd branches/
[root@localhost branches]# ls
aaa.txt
[root@localhost branches]# cat aaa.txt
aaa
[root@localhost branches]# svn up aaa.txt
Updating 'aaa.txt':
U aaa.txt
リビジョン 5 に更新しました。
[root@localhost branches]# cat aaa.txt
aaa
rinchome?
想root@localhost branches]#
[root@localhost branches]#
#下記で反映されているのを確認↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[root@localhost branches]# cat aaa.txt
aaa
rinchome追加
[root@localhost branches]#
##24 一旦、終了