2011/05/23

SVN (Subversion)インストール

5/23の内容

・今日は、昨日と違って寒い。
・今日の授業は、久々に課題以外の話題。
開発の現場にてソースの管理に利用されているSubversion( サブバージョン) の
環境設定と使い方について。

(1)SVNのインストールと環境設定

(2)windowsからSVNを参照するためのソフトTortoiseSVNをインストール

(3)SVNを使って開発環境から本番環境へソースを移行するための
擬似環境を設定。

(4)擬似環境を使って、変更の手順をシミュレーション

(5)最後の1時間は、環境をクリアして、本日の作業を再度実行。


以下詳細手順、Webテキスト参照。(2,4,5は別に記述する予定)

(1)SVNのインストールと環境設定
(A)CentOSサーバにsvnをインストール
rootユーザにて作業(コマンドの先頭に#があるものはrootユーザにて実行)
# yum -y install subversion mod_dav_svn
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: centos.tt.co.kr
 * base: centos.tt.co.kr
 * extras: centos.tt.co.kr
 * updates: centos.tt.co.kr
addons                                                   |  951 B     00:00
base                                                     | 1.1 kB     00:00
extras                                                   | 2.1 kB     00:00
updates                                                  | 1.9 kB     00:00
utterramblings                                           |  951 B     00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i386 0:1.6.11-7.el5_6.3 set to be updated
---> Package subversion.i386 0:1.6.11-7.el5_6.3 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch        Version                    Repository      Size
================================================================================
Installing:
 mod_dav_svn        i386        1.6.11-7.el5_6.3           updates         78 k
Updating:
 subversion         i386        1.6.11-7.el5_6.3           updates        3.1 M

Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       1 Package(s)

Total download size: 3.2 M
Downloading Packages:
(1/2): mod_dav_svn-1.6.11-7.el5_6.3.i386.rpm             |  78 kB     00:00
(2/2): subversion-1.6.11-7.el5_6.3.i386.rpm              | 3.1 MB     00:05
--------------------------------------------------------------------------------
Total                                           525 kB/s | 3.2 MB     00:06
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : subversion                                               1/3
  Installing     : mod_dav_svn                                              2/3
  Cleanup        : subversion                                               3/3

Installed:
  mod_dav_svn.i386 0:1.6.11-7.el5_6.3

Updated:
  subversion.i386 0:1.6.11-7.el5_6.3

Complete!


(B)リポジトリの作成
リポジトリは、ソースを管理するための書庫のことです。
今回は、/var/www/svn/shonanbbsにリポジトリを作成します。
# cd /var/www/svn
(svnディレクトリがなければ作る)
・リポジトリ作成
# svnadmin create shonanbbs
・ディレクトリ所有者の変更
# chown -R apache:apache shonanbbs

(C)設定ファイル(svnserve.conf)修正、その1
# cd /var/www/svn/shonanbbs/conf
# vi svnserve.conf
・設定ファイル(svnserve.conf)は以下のように修正
[general]
anon-access = none
auth-access = write
password-db = passwd

(D)設定ファイル(svnserve.conf)修正、その2
svnを使用するユーザの設定
# vi /var/www/svn/shonanbbs/conf/passwd
・設定内容を追加
[users]
ユーザー名1 = パスワード1

(E)svnを使用するユーザに環境変数を追加
SVNを使用するとき、使用するエディタ(vi)をユーザの環境変数に設定する。
一般ユーザにて(コマンドの先頭に$があるものは一般ユーザにて実行)自分のhomeディレクトリに移動
$ cd ~
$ pwd
/home/user
$ ls -la
...(途中省略)
-rw-r--r--  1 user user  199  5月 23 22:14 .bash_profile
...(このあとも省略)
$ vi .bash_profile
・ファイルの最後に追加(svnを使用するエディタの指定)
export SVN_EDITOR="vi"
・設定を有効化
$ source .bash_profile
・有効化を確認
$ env
...(途中省略)
SVN_EDITOR=vi
...(このあとも省略)

(F)SVNサーバをrootユーザで起動
# svnserve -d -r /var/www/svn
・プロセスが起動されたか確認
# ps -ef | grep svn
root     14662     1  0 11:44 ?        00:00:00 svnserve -d -r /var/www/svn
root     14664 14633  0 11:44 pts/0    00:00:00 grep svn
svnサーバの起動を一般ユーザでも出来るみたいだけど、
今回はrootユーザにて起動する。

(G)リポジトリの内容を作成するため、まずCentOS上のlinuxのIPアドレスを確認する。
(rootユーザでも一般ユーザに戻って作業してもいい)
$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:03:CE:E1
          inet addr:192.168.47.128  Bcast:192.168.47.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe03:cee1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ... (以下省略)
・IPアドレスは、「192.168.47.128」

これから、リポジトリの内容を設定
・本番環境側 trunk
・開発環境側 branches

(H)trunk作成
(ここからは一般ユーザで作業)
$ svn mkdir svn://192.168.47.128/shonanbbs/trunk
viが立ち上がるので、コメントはcreate ripositoryを入力
create ripository

-- この行以下は無視されます --

A    svn://192.168.47.128/shonanbbs/trunk

・保存したあと、認証を求められることがあります。先ほど(D)で設定した
パスワードを入力
認証領域: <svn://192.168.47.128:3690> 99a5f541-...
'user' のパスワード:


(I)trunkにソースの情報をインポート(あくまでも管理情報をインポートするだけ?)
今回は「/home/user/bbs2」が管理対象ディレクトリ。
$ svn import /home/user/bbs2 svn://192.168.47.128/shonanbbs/trunk
コメントは、import bbs2を入力、テキストを保存するとインポートが始まり、「追加しています」のメッセージが表示されます。
> リビジョン 2 をコミットしました。
インポート対象(管理対象)に日本語のファイル名を使っているとインポートできないとのこと。

(J)tagsを作成(リリース後のバージョンを保存しておく場所)
$ svn mkdir svn://192.168.47.128/shonanbbs/tags
コメントは、create tagsを入力
> リビジョン 3 をコミットしました。

(K)trunkをbranchesにコピー(本番環境から開発環境にSVNの情報をコピー)
$ svn cp svn://192.168.47.128/shonanbbs/trunk svn://192.168.47.128/shonanbbs/branches
コメントは、create branches
> リビジョン 4 をコミットしました。


(3)SVNを使って開発環境から本番環境へソースを移行するための
擬似環境を設定。

(L)ディレクトリを準備
このディレクトリに、php(symfony)のソースコードが入ります。
・開発環境
$ mkdir /home/user/dev
・staging環境(検証環境?)
$ mkdir /home/user/staging
・本番環境
$ mkdir /home/user/real

(M)apacheの設定ファイルにドメインを割り当てる (この作業はrootユーザで)
# vi /etc/httpd/conf/httpd.conf
・vhostの設定は、それぞれ以下のとおり
www.dev.com         /home/user/dev/web
www.staging.com     /home/user/staging/web
www.rl.com        /home/user/real/web
(ms securityでwww.real.comがセキュリティの警告を受けたので変更しました)
なお、授業と同じ環境にしたければ以下の通り。
dev.shonanbbs.com     /home/user/dev/web
staging.shonanbbs.com /home/user/staging/web
www.shonanbbs.com     /home/user/real/web(本番はbbs2から変更する)

・vhostの内容は以下の通り(staging,realも作成)
<VirtualHost *:80>
    DocumentRoot /home/user/dev/web
    ServerName www.dev.com
    ErrorLog logs/dev.com-error_log
    CustomLog logs/dev.com-access_log common
    Alias /sf "/usr/share/pear/data/symfony/web/sf"
    <Directory "/home/user/dev/web">
      Allowoverride All
      Options -Includes -ExecCGI
    userDirectory>
userVirtualHost>
・apache再起動
# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Warning: DocumentRoot [/home/user/dev/web] does not exist
Warning: DocumentRoot [/home/user/staging/web] does not exist
Warning: DocumentRoot [/home/user/real/web] does not exist
                                                           [  OK  ]
・まだphp(symfony)のソースコードとフォルダの環境を設定していないので、apache上ではワーニングが表示されます。

(N)windowsのhostsファイルも更新する。
・hostsファイルの内容は省略します。
・この時点では、ブラウザからdev、staging、realにアクセスしても、
ソースがないのでエラーが出る。
Not Found

The requested URL / was not found on this server.

(O)ソースコードのチェックアウト(co) (コピー)
$ svn co svn://192.168.47.128/shonanbbs/branches ~/dev
$ svn co svn://192.168.47.128/shonanbbs/trunk ~/staging
$ svn co svn://192.168.47.128/shonanbbs/trunk ~/real

> リビジョン 4 をチェックアウトしました。
これで、各環境にWebでアクセスすれば、bbs2が表示される。

(P)権限設定を各環境で実施
各環境では、symfonyのディレクトリ所有者がuserなので、apacheからアクセスした場合、エラーが出る。
(キャッシュに残っているデータで表示が可能な場合はエラーが出ないかも)
このため、各環境で権限設定を変更する。
$ symfony fix-perms

(Q)svnで管理されているフォルダは「.svn」がある
$ cd ~/dev
$ ls -la
合計 64
drwxrwxr-x 14 user user 4096  5月 23 14:30 .
drwxr-xr-x 19 user user 4096  5月 23 14:15 ..
drwxrwxr-x  6 user user 4096  5月 23 14:30 .svn
drwxrwxr-x  6 user user 4096  5月 23 14:30 apps
以下略
・確認
$ svn info
パス: .
URL: svn://192.168.47.128/shonanbbs/branches
リポジトリのルート: svn://192.168.47.128/shonanbbs
リポジトリ UUID: 64e80751-e84d-4801-8776-33d37fbd49db
リビジョン: 4
ノード種別: ディレクトリ
準備中の処理: 特になし
最終変更者: user
最終変更リビジョン: 4
最終変更日時: 2011-05-23 13:17:17 +0900 (月, 23  5月 2011)

以上、ここまでインストールと環境設定。
さすがに長くなったので、以降は別にします。

0 件のコメント:

コメントを投稿