今回は前回に引き続き、Subversionを利用したweb制作におけるバージョン管理方法に限定して解説します。 本日は、「web制作におけるSubversionによるバージョン管理(2) - インストール・設定」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。 本日は、「web制作におけるSubversionによるバージョン管理(2) - インストール・設定」についてです。以下サイトを参考にさせていただきました。 貴重な情報に感謝いたします。
TortoiseSVNの使い方
ばーぶろぐ /var/blog: Subversionでコミット完了後に自動で処理を行う (post-commit)
今回はSubversionの他に、
- PuTTY
- TortoiseSVN
なお、PuTTYは初回限りの使用となります。web制作にあたってSSHクライアントを使用する場合は、Poderosaなど他SSHクライアントを使用しても問題ありません。
そして例のごとくで恐縮ですが、猫ITソリューションズにおける運用記述をそのまま書いてあるところがありますので、置き換えて参考にしてください。
Subversionのインストール・初期インポート
インストール
1 |
# yum install subversion.x86_64 |
グループnobodyにsshログインユーザーを追加
1 |
#usermod -G nobody ユーザー名 |
確認
1 2 |
# vi /etc/group nobody:x:99:waku2traffics_www,waku2traffics_test,ユーザー名 |
リポジトリ用ディレクトリ作成
1 2 3 |
# mkdir /website/svn/ # mkdir /website/svn/repos # mkdir /website/svn/repos/waku2traffics_test |
リポジトリ作成
1 |
# svnadmin create /website/svn/repos/waku2traffics_test |
所有者をnobody、グループをnobodyに変更する
※猫ITソリューションズにおける運用で必要です。不要な場合はスキップしてください。
1 |
# chown -R nobody:nobody /website/svn |
パーミッションを変更する。
※猫ITソリューションズにおける運用で必要です。不要な場合はスキップしてください。
1 |
# chmod -R 775 /website/svn |
初期インポート
-m はコミットコメント(必須)
1 2 3 4 5 6 7 8 9 10 11 |
# svn import /website/waku2traffics_test file:///website/svn/repos/waku2traffics_test -m "initial import" 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_24.gif 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_15.gif 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_07.gif 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_08.gif 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_26.gif 追加しています (バイナリ) /website/waku2traffics_test/public_html/siteusage/img/waku_siteusage_27.gif 追加しています /website/waku2traffics_test/public_html/siteusage/img/img 追加しています /website/waku2traffics_test/public_html/pcedb (略) リビジョン 1 をコミットしました。 |
PuTTYの設定
sshでのログインは他アプリケーションにて既に可能という前提(猫ITソリューションズではPoderosa)。 SubversionはPuTTY形式のSSH鍵しか認識しないらしいので、PuTTYから接続できるようにする。 なお、PuTTYの鍵とPoderosaの鍵は互換性がない。よって
- PuTTY用秘密鍵
- Poderosa用秘密鍵
- 公開鍵※Poderosa(ssh.com仕様)記述にPuTTY記述を「追記」
ダウンロード&インストール
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html- PuTTY
- PuTTYgen
- Pageant
PuTTY用SSH鍵ペア(秘密鍵・公開鍵)を作成
PuTTYgen を実行。SSH2 RSA を選択。
Generate マウスを適当に動かす。
パスフレーズを入力。
Save private key ボタンで PuTTY Private Key File (.ppk) として保存。
「Public key for pasting into OpenSSH authorized_keys file:」 覧に表示される文字列をコピーして、「key-putty.txt」としてローカルに保存
サーバー上(~/.ssh/)にも key-putty.txt として保存する。
ファイルの中身を公開鍵に追記
※Poderosa/PuTTY両方で共有出来るようにするため
1 |
# cat key-putty >> authorized_keys |
接続テスト
PuTTY を実行。Session - Host Name にリポジトリのあるホスト名を指定。
Connection - Auto-login username にリポジトリのあるホスト上のアカウントを指定。
Connection - SSH - Auth - Private key file for authentication: で 保存した ppk ファイルを指定。
Session - Saved Sessions にホスト名を入力して Save。
Open ボタンを押して接続確認。
パーミッション変更
1 2 |
# chmod 700 .ssh # chmod 600 authorized_keys |
SubversionクライアントTortoiseSVNのインストール
ダウンロード
※日本語化パックも併せてDLしておく
http://tortoisesvn.net/downloadsインストール後の設定
該当フォルダで右クリック、「TortoiseSVN>設定ネットワーク」を開く「SSH」に
TortoisePlink -C -l ユーザー名 -pw パスワード -i putty.ppkへのフルパス
チェックアウト
※チェックアウトされて出来るローカルに生成されるフォルダは、
チェックアウトする際に「このフォルダは空じゃないけどいいの?」と聞かれたが無視した。
svn+ssh://192.168.1.23/website/svn/repos/waku2traffics_test
- svn
- public_html
チェックアウトする際に「このフォルダは空じゃないけどいいの?」と聞かれたが無視した。
svn+ssh://192.168.1.23/website/svn/repos/waku2traffics_test
使用・運用方法
基本的にTortoiseSVNの使用がメインとなります。 使ったことがない方は、TortoiseSVNについての本を一冊持っておく事をお薦めします。入門Subversion Windows/Linux対応 上平 哲
1,244 円 (税込)
【30日間返品保証】商品説明に誤りがある場合は、無条件で弊社送料負担で商品到着後30日間返品を承ります。ご満足のいく取引となるよう精一杯対応させていただきます。※下記に商品説明およびコンディション詳細、出荷予定・配送方法・お届けまでの期間について記載していま..
参考:
TortoiseSVNの使い方
基本的な操作の流れ
- リポジトリより最新のソースやドキュメントをローカルPCにダウンロードする (SVN更新)
- ソースやドキュメントをロックする (ロックを取得)
- ローカルPC上でソースやドキュメントを編集する
- ローカルPCでの編集をリポジトリに反映する (SVNコミット)
※同時にロックも開放されます。
追加:
ディレクトリやファイルを既存リポジトリに追加
インポート:
リポジトリへの追加(違いがうまく説明できない...)
使用者を増えすとき
- UNIXユーザー追加
- nobodyグループへ追加
# usermod -G nobody ユーザー名
作業コピーを増やすとき
初回チェックアウト
1 2 |
# cd 作業コピー対象ディレクトリ # svn checkout file:///website/svn/repos/リポジトリ |
リポジトリを増やすとき
- reposディレクトリ以下にリポジトリ用ディレクトリ作成
# mkdir /website/svn/repos/hoge - リポジトリ作成
# svnadmin create /website/svn/repos/hoge - 所有者をnobody、グループをnobodyに変更する
# chown -R nobody:nobody /website/svn - パーミッションを変更する
# chmod -R 775 /website/svn
コミット時に指定した他の作業コピーもアップデートする
参考:ばーぶろぐ /var/blog: Subversionでコミット完了後に自動で処理を行う (post-commit)
webサイト開発において、コミットすると編集している作業コピーとは別の作業コピー、 テストサーバーのドキュメントルートの全データも更新されると便利。
以下気をつける点
- フックスクリプトを実行するユーザーを確認しておくこと。
※猫ITソリューションズだとコミットしたユーザー「ユーザー名」だった。
- 現在のumaskでは、ファイル生成時はパーミッション644になるが、umaskはむやみに変更しない方がいい(全ユーザー適用のため)
- コマンド実行するときは実行権限,書き込み権限などを考えること
- lsyncd/rsyncdのユーザーに注意すること
※rsyncdはnobody/nobodyでミラーリングさせているため、所有者root権限rootのみのファイルを作ってもミラーリングされない。 - 負荷分散2サーバーには数秒~数分経たないとミラーリングされない。
※原因不明。post-commitのフックスクリプトに組み込んでもミラーリングされなかった - 上記のため以下のように設定してある。
- rsyncdの実行グループ/ユーザーは、nobody/nobody
- /website/waku2traffics_test 以下のファイル(svn含める)は基本的に、
グループ:nobody
ユーザー:nobody
パーミッション:775
にする。
ただし775以外のファイルは個別設定すること。
1 2 |
# chown -R nobody:nobody /website/waku2traffics_test # chmod -R 775 /website/waku2traffics_test |
sabineko/abyssinianで実行
グループnobodyにSVNユーザー(ここではユーザー名)を追加
1 |
# usermod -G nobody ユーザー名 |
フックスクリプトの作成
1 2 3 4 5 6 7 |
# cd /website/svn/repos/waku2traffics_test/hooks # cp post-commit.tmpl post-commit # chown nobody:nobody post-commit # chmod 775 post-commit # vi /website/svn/repos/waku2traffics_test/hooks/post-commit /usr/bin/svn update /website/waku2traffics_test >> /tmp/waku2traffics_test.log 2>&1 whoami >> /tmp/waku2traffics_test.log |
※以下はコメントアウトした方がいいかも。猫ITソリューションズではlog-commit.py については見つからないと言われた。
1 2 |
#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org #log-commit.py --repository "$REPOS" --revision "$REV" |
一度ドキュメントルートを丸ごと削除。
※もちろんSubversionに既に初回インポートが完了しているのが前提。
1 |
# rm -rf /website/waku2traffics_test |
初回チェックアウト
1 2 |
# cd /website # svn checkout file:///website/svn/repos/waku2traffics_test |
あとはeclipse上なりで普通に作業ができる。 実際の動作は、
- 対象ファイルにアクセスして見てみる
- ログファイルを見る