st-ethanのブログ -6ページ目

st-ethanのブログ

40代おっさんのつまらないしゃべりの集まりです。
旅、B級グルメ、ゲーム、映画、アニメなどについて話そうと思っております。

自分が忘れないための記録です。

 

* Subversion インストール
1.念のため確認しておきます。
# yum list installed | grep subversion
subversion.x86_64                  1.7.14-10.el7                       @base    
subversion-libs.x86_64             1.7.14-10.el7                       @base 

2.Subversion をインストールします。
yum -y install subversion

3.リポジトリを作成します。
 → フォルダを生成します。
   「/var/svn/」を修正しない方が楽です。自分は一回、これを修正して、ちょっと苦労しました。。
# mkdir -p /var/svn/repos/project

 → svnを生成します。
   レポジトリー毎に制御するため(?)の設定などが生成されます。
# svnadmin create /var/svn/repos/project 

 → レポジトリーの中の初期フォルダを生成します。したくない場合はこれは無視してもけっこです。(下部の確認の段階で真っ白になるだけです。)
# svn mkdir file:///var/svn/repos/project/trunk -m "create"
# svn mkdir file:///var/svn/repos/project/branches -m "create"
# svn mkdir file:///var/svn/repos/project/tags -m "create"

4.ポートを開放します。自分はfirewallを使わず、iptablesを使用していますので、こちらを修正します。
  ファイルの位置を覚えるため、直接移動して修正します。
# vi /etc/sysconfig/iptables
  → ファイルが開いたら
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    こんな感じで適当な箇所へ入力します。(もし、httpも使いたい場合は80も開放します。)

5.svnserve を起動し、テストします。
# systemctl start svnserve
# systemctl status svnserve
  ↑これをやってみて、
   Active: active (running) since ~~~~
  見たいが文言が見えたら、正常です。
# systemctl enable svnserve
 ↑ サーバーをrebootする際、一緒に起動させたいのであればこれも追加します。

6.svnのアクセステストをします。
svn list svn://<自分のドメインもしくはip addressを入力>/repos/project
branches/
tags/
trunk/
  この三つが表示されるなら、問題ないです。(リポジトリの初期ファイルを生成しなかった場合は何も表示されません。)
  ちなみに [svn://<自分のドメインもしくはip addressを入力>/repos/project]はwindowなどでcheckoutする際に使うので、一応、覚えた方が良いと思います。

初期設定はここまでです。
新しいレポジトリーを作る場合は「3」 ~ 「6」までを繰り返すれば問題ないと思います。

今からは生成したレポジトリーの権限を設定します。
これをしないと誰でも使ったり、更新したりしますので、絶対必要だと思います。

7.リポジトリに対するアクセス権を設定します。
  → 修正ファイルを開きます。
    (上記にて生成したレポジトリーの中にあるファイルです。)
# vi /var/svn/repos/project/conf/svnserve.conf
  → 内容の中を検索して修正します。
# 9行目:追記 (匿名アクセスは不許可)
[general]
anon-access = none
# 28行目:コメント解除
password-db = passwd
# 35行目:コメント解除
authz-db = authz

8.このレポジトリーを使うユーザーとパスワードを設定します。
  → 修正ファイルを開きます。
    (上記にて生成したレポジトリーの中にあるファイルです。)
# vi /var/svn/repos/project/conf/passwd
  → 多分、空だと思いますので、下部の内容を追加します。
# ユーザー名とパスワードを設定
[users]
redhat = password
cent = password
fedora = password

9.ユーザーの権限を設定します。
  → 8で設定したユーザーそれぞれに権限を付与する作業です。こちらのユーザーは絶対、8にあるユーザーしか使えません。
# グループと所属ユーザーを定義
[groups]
developer = redhat,cent
  ↑ グループとして設定したい場合はこちらを修正します。(必要ない場合は設定しなくて結構です。)
# ドキュメントルートに対して developer グループに読み書き許可
[/]
@developer = rw
cent = r
redhat = rw
  ↑ グループの権限を競ってします。
    グループは「@groupname」、ユーザーは「username」を記載します。
    権限はr : read
        w : write
    ですので、好みに設定します。

権限の設定はここまでです。

この後は実際のPC(client)で、使えば良いだけです。

さ、ここからはウェブページでも使いたい場合の設定です。
自分は「Redmine」と連携したかったので、設定します。

1.必要なパッケージをインストールします。
# yum -y install mod_dav_svn

2.HTTP 経由でリポジトリにアクセスできるよう設定します。
  この設定はグーグル先生の方々により、場所が異なりますが、自分の場合は「httpd」の方が良いかと思い、そちらを修正します。
  新規作成になります。
# vi /etc/httpd/conf.d/subversion.conf
  → ファイルが開いたら下記のソースを入力します。
<Location /project>                    # ウェブページのリンクになります。任意で修正しても問題ありません。ex: http://example.com/project
    DAV svn                            # 修正なしで、このままが良いと思います。
    AuthType Basic                     # 修正なしで、このままが良いと思います。
    AuthName "DAV SVN"                 # ウェブページのタブに表示される文言です。任意で修正しても問題ありません。
    AuthUserFile /var/svn/.svnpasswd   # ウェブページ用ユーザーとパスワードの設定ファイルの位置です。
    Require valid-user                 # 修正なしで、このままが良いと思います。
    SVNPath /var/svn/repos/project     # 実際のレポジトリーのファイルの位置を記載します。
</Location>

3.ユーザーを生成します。
  個人的に勘違いしてしまって、苦労しましたが、このユーザーは「レポジトリーの使用可能なユーザー設定」と全然関係ありません。
  何回もしましたが、このユーザーは1つのレポジトリーに対して1件のみです。
   → 自分はなんでレポジトリーの設定が1人しか出来ないんだ!と思いましたが、自分の勘違いでした。
# htpasswd -c /var/svn/.svnpasswd cent
  ↑ -c : create (ファイルもないので、新規生成します。)
    /var/svn/ : こちらに生成します。
    .svnpasswd : こんなファイル名にします。
    cent : ユーザー名です。(これで勘違いが始まりました。上の設定と同じだったので。。。OTL)
  そしたら、ユーザーのパスワードの入力が始まります。
New password:
Re-type new password:
Adding password for user cent
  ↑ 無事終了です。
  ちなみにこちらのID / pw は Redmineのレポジトリーの設定に必要ですので、覚えた方が良いと思います。

4.レポジトリーの所有権をapacheに変更します。
# chown -R apache. /var/svn/repos
  → apacheを再起動します。
# systemctl restart httpd 

5.レポジトリー毎のアクセス権を設定します。
  → svnserve を利用する場合のアクセス権設定とは別の設定になります。
  → 例:
# 新規作成
# グループを定義
[groups]
developer = cent,fedora
operator = redhat
# ルートディレクトリのアクセス権は Read
[/]
* = r
# trunk 配下のアクセス権は developer のみ Read/Write
[project:/trunk]
@developer = rw
# branches 配下のアクセス権は operator のみ Read/Write
[project:/branches]
@operator = rw
# tags 配下のアクセス権は operator のみ Read/Write
[project:/tags]
@operator = rw

6.HTTP 経由でリポジトリにアクセスに関するファイルも修正します。
  → レポジトリーも「参考にしてください」みたいな感じだと思います。
# vi /etc/httpd/conf.d/subversion.conf
ファイルが開いたら
<Location /project>
    DAV svn
    AuthType Basic
    AuthName "DAV SVN"
    AuthUserFile /var/svn/.svnpasswd
    Require valid-user
    SVNPath /var/svn/repos/project
    AuthzSVNAccessFile /var/svn/repos/project/conf/authz.conf # ← これを追加します。
</Location>

7.apacheを再起動します。
# systemctl restart httpd 


以上!

余談ですが、これを達成するまで、ちょっと苦労しました。OTL
サーバー設定して、
ドメイン設定して、
SSL設定して、
redmine設定して、

subversionまで。。。
ドメイン設定の際に、サーバーとドメインの間、想像もしなかったトラブル、
初めてのSSL設定でトラブル、
mariadb10.1設定でトラブル、
そして、subversionとredmineの連携まで。。。。


あ、今週は長かったですね~

今日はちょっと寝たいです。