ラベル Subversion の投稿を表示しています。 すべての投稿を表示
ラベル Subversion の投稿を表示しています。 すべての投稿を表示

2010年5月2日日曜日

PHP の開発環境を整える (2010.5) - CakePHP の準備

1. 開発環境の一覧

この時期、恒例になってきた開発環境の整備。変なエラーに煩わされないことを祈りつつ設定 (+_+)

利用するツールとバージョンは以下の通り。

 

2. CakePHP を利用するための準備

今回、開発環境を新しくした理由は、修正したいコードがあったため。修正対象のソースコードで、PHP が使われている部分は、

  1. パーツに分割した HTML を結合する処理と ( cf. フレームの代わりにPHPを使う ) 、
  2. フォームでの問い合わせの処理。

DB は使用していない。処理はシンプルなので、テンプレートエンジンを使わず、自前で MVC ライクに書いている。しかし、いくら単純でも、Web ページの数が増えてくると、重複した部分が徐々に気になってくる。フレームワークを使うように変更しようか、検討中。

以前に、CakePHP を試してみようと環境を整えたことがある。

軽量なフレームワーク

も良さげだけれど、 PHP で他のフレームワークを使ったことがないので、とりあえず CakePHP への移行が無難かな。

PHP はたくさんのフレームワークが乱立している。なるべくシンプルでコンパクトなものを使いたい。以下の図による説明を見ると、今回の自分のやりたいことに対して、CakePHP は、妥当な選択に思えた。

ちなみに、調べていたら、 symfony からのつながりで、Twig というテンプレートエンジンが気になった。一度、使ってみたい。

http://www.twig-project.org/

Twig via kwout

 

使用する CakePHP のバージョン

CakePHP のバージョンを確認したら、1.3.0 と 1.2.7 がリリースされている。1.3 はまだ出たばかりのようなので、今回は 1.2.7 を利用することにした。

現時点では、1.2 の方がドキュメントが充実している。

 

PDT へ CakePHP のソースコードをインポート
  1. cakephp / cakephp1x より、1.2.7 をダウンロードして解凍。
  2. PDT で新規に testCakePHP2 プロジェクトを作成。
  3. 解凍した CakePHP のソースコードを testCakePHP2 プロジェクトに D&D。
  4. プロジェクトのプロパティで Resource > Text file encoding を UTF-8 に変更。

 

Apache の設定

Apache の httpd.conf で以下の記述がコメントアウトされているのを確認。 ( cf. Apacheとmod_rewrite )

LoadModule rewrite_module modules/mod_rewrite.so

テスト用のアプリケーションの設定のために以下の記述を追加。

Alias /testCakePHP2/ "C:/develop/tool/eclipse/workspace/testCakePHP2/"
<Directory "C:\develop\tool\eclipse\workspace\testCakePHP2/">
    Options FollowSymLinks 
    AllowOverride All
    Allow from All
</Directory>

ただし、PDT が利用する workspace は、

C:/develop/tool/eclipse/workspace/

であるとする。また、アプリケーションのルートの URL は、

http://localhost/testCakePHP2/

とする。上記の設定中 Options FollowSymLinks を有効にしているのは、Old Nabble - CakePHP - Forbidden Error によると、

In order for mod_rewrite to work you have to have:
Options FollowSymLinks
Put that right under the AllowOverride All and it should work. :)

 

CakePHP の .htaccess に RewriteBase を追加

次に CakePHP on XAMPP でちょっとはまった « 43HR を参考にして、PDT にインポートした CakePHP のソースコードの以下の各々のファイルに内容に RewriteBase を追加。

  • testCakePHP2/.htaccess に RewriteBase /testCakePHP2
  • testCakePHP2/app/.htaccess に RewriteBase /testCakePHP/app
  • testCakePHP2/app/webroot/.htaccess に RewriteBase /testCakePHP2/app/webroot

 

debugger.php の設定

これで http://localhost/testCakePHP2/ にアクセスすることができるようになった。ただし、以下の警告が表示される。

Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 548]

CakePHPブログチュートリアル :: 開発例 :: マニュアル :: 1.2 Collection :: The Cookbook によると、

security saltは、ハッシュの生成に用いられます。/app/config/core.phpの153行目を編集し、デフォルトのsalt値を変更してください。

これにより、警告が消える。

 

3. MySQL の設定

今回は DB を使う予定はない。しかし、http://localhost/testCakePHP2/ にアクセスすると警告がでるので、ついでに DB の設定もしておく。

XAMPP のコントロールパネルで MySQL の Start ボタンを押す。

Admin ボタンで phpMyAdmin を起動。(phpMyAdmin を使いたくない場合は、MySQL Workbench を利用するとよい。)

データベース」タブを選択し、新規にデータベース testcakephp を作成。

img05-02-2010[2]

XAMPP の MySQLと PHP の説明によると、

MySQLは "root" に対するパスワード無しで起動します。したがってPHPではMySQLサーバを以下で接続できます: mysql_connect("localhost","root","")
MySQLの"root" に対するパスワードを設定したい場合は、コンソール(Console)の下の"mysqladmin"を使ってください。

testCakePHP2\app\config の database.php.default を database.php に名前を変更。 database.php で $default 変数のハッシュのキーに対する値において、

  • login を root
  • password を空
  • database を 上記で作成した testcakephp

に変更する。これで、http://localhost/testCakePHP2/ にアクセスすると警告が消える。

データベースで、アプリケーション専用のユーザを作成してアクセスしたいなら、phpMyAdmin の「特権」タブにおいて、test ユーザを作成。パスワードを test とする。その際、グローバル特権にデータと構造に全てチェックを付けておいた。

img05-02-2010[3]

上記の database.php に戻り、

  • login を test
  • password をtest
  • database を 上記で作成した testcakephp

と設定する。

http://localhost/testCakePHP2/ にアクセスすると、オールグリーンで準備完了。

img05-02-2010[1] 

 

4. 分散バージョン管理に移行しようかな…

分散バージョン管理Git/Mercurial/Bazaar徹底比較 (1/5) - @IT (2009/1/14) によると、

分散バージョン管理システムでは、ローカルのブランチに対して作業を行い、テストまできちんと終了した作業のまとまりを中央リポジトリへ反映できます。

出先で、ノート PC を利用してバージョン管理をしたいので、そろそろ分散バージョン管理に移行しようかな。

個人的には Haskell で作られている Darcs を使ってみたい。

 

関連記事

2009年7月19日日曜日

Subversion でエクスポート - .svn ディレクトリ以外の取り出し と 変更のあったファイルのみ抽出

.svn ディレクトリ以外を取り出す

Subversion からチェックアウトした各フォルダ内には .svn フォルダが存在する。最終的には不必要なのでこれを削除したい。

Subversion 作業コピーをエクスポート によると、

… .svn ディレクトリを全て手で削除するのではなく、TortoiseSVN では TortoiseSVN → エクスポート... コマンドを用意しています。

090719-001

Eclipse で Subclipse を利用しているのなら、プロジェクトのルートで右クリック > Team > エクスポート... を選択。エクスポート先のフォルダを選択するダイアログが表示される。

 

変更のあったファイルのみをエクスポート

追記 (2010.6.19) : 特定のリビジョンから変更されているファイルのみ抽出したい。Subversion のリポジトリから、変更されたファイルのみを取り出す方法 | バシャログ。 を参考にして、

  1. TortoiseSVN で 特定のディレクトリにおいて Show log
  2. 比較したい 2 つのリビジョンを選択 > compare revisions
  3. 表示されたファイルを全て選択して、Export selection to …

2008年4月20日日曜日

Windows の Subversion にネットワーク経由でアクセスする

同一ネットワーク上にある他の PC 上の Subversion にアクセスしたい。

Subversion の動作 によると、次のいくつかの方法がある。

file://
ローカルないしネットワークドライブのリポジトリに直接アクセスします。

http://
Subversion を組み込んだ Apache サーバに WebDAV プロトコルでアクセスします。

https://
http:// と同じですが、SSL 暗号化を用います。

svn://
svnserve サーバと独自プロトコルで行う、認証されていない TCP/IP アクセス。

svn+ssh://
svnserve サーバと独自プロトコルで行う、認証・暗号化された TCP/IP アクセス。

Apache との連携がお手軽そうだ。

 

方法

Apache2(Windows版)でSubversionをネットワークに対応 に従って設定を行った。

まずはじめに、Subversion のインストーラを使って、 Apache の設定をさせようとした。ネットワークに対応させたい PC (192.168.11.2) は、Apache2.0.55 。Subversion は 1.4.3 。(svn --version で確認。) インストーラは削除してしまっているので、再度、Win32 packages built against Apache 2.0 から svn-1.4.3-setup.exe を再度ダウンロードした。インストーラを使って、設定をさせようと思ったが、デフォルトで Apache との連携がされるように設定がされるようチェックがされていた。

080420-001

 

Apache の httpd.conf を確認したところ、

LoadModule dav_module modules/mod_dav.so

は、コメントアウトされており、

#LoadModule dav_fs_module modules/mod_dav_fs.so

は、コメントアウトされてなかったので、コメントアウトした。

以下は記述がされていた。

LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"

Subversion のある位置情報を追加し、Apache を再起動。 http://localhost/svn にアクセスして動作を確認した。今回は、認証をかけない設定で行った。

<Location /svn>
  DAV svn
  SVNPath "d:/develop/svn"
</Location>

当初、上記の SVNPath を SVNParentPath と記述していたら動作しなかった。また、svn を snv と書くとエラーで起動しない。 ^^; 書き間違えに注意。

他の PC 上から TortoiseSVN を利用して、URL を http://192.168.11.2/svn としてアクセスができた。

 

参考

Eclipse から Subversion を利用する - Subclipse

PHP の開発環境を整える の続き。

1. Subversion へソースコードをインポート

ソースコードの管理に Subversion を利用する。

最初に、Subversion をインストールしてリポジトリを作成 した。

TortoiseSVN でプロジェクトを管理する を参考にして、作成した PHP のプロジェクト (testphp) をリポジトリにインポート。

エクスプローラにおいて、workspace 内の testphp フォルダで

  • 右クリック > TortoiseSVN > Import...

を選択。

Image5

インポート先のリポジトリの URL は file:///D:/develop/svn/testphp/trunk とした。

Image6

 

2. Subclipse のインストール

次に、Eclipse から Subversion を操作する Subclipse をインストールする。

PHP の開発環境を整えたときに、デバッガをインストールしたのと同じ方法で、Subclipse をインストール。

インストールするときに必要な入力項目は、

    1. Name: Subclipse 1.2.x
    2. URL: http://subclipse.tigris.org/update_1.2.x

Image3

今回は、 Subclipse Plugin のみインストールした。

Image4

 

Subclipse と Subversion のバージョンの対応に注意

追記 (2010.4.27) : 上記以外のバージョンをインストールしたい場合、

に書かれている

Eclipse update site URL :

を用いる。特に気をつけることは、

Subclipse versions are tied to specific versions of the Subversion client API.  So you must have a matching version of the Subversion client API (JavaHL) for your version of Subclipse.  Any 1.x version of a Subversion client can talk to any 1.x version of a Subversion server,

(subclipse: Download and Install より、太字ば引用者による)

Subclipse と Subversion との対応に注意が必要。

Subversion のバージョンを確認するには、コマンドラインで

svn –version

または、デスクトップなど、適当な場所で

  • 右クリック > TortoiseSVN > about

今回、久しぶりに Subversion, TortoiseSVN, PDT の環境を新しくした。

Subversion のバージョンは

1.6.6

を利用しているので、Subclipse のバージョンは、

http://subclipse.tigris.org/update_1.6.x

対応してないバージョンを使ったら、Eclipse から Subversion にアクセスしようとすると、

ロケーションの検証中にエラー: "org.tigris.subversion.javahl.ClientException: snv …

というエラーが表示された。

 

3. Eclipse で Subclipse を使う

Eclipse において、

  • Window > Open Perspective > Other...

を選択。ダイアログが表示されたら、

「 SVN リポジトリー・エクスプロラー」

を選択する。

Image7

SVNリポジトリにおいて、

  • 右クリック > 新規 > リポジトリー・ロケーション

を選択。

Image8
ダイアログが表示されたら、Url に先ほど作成した file:///D:/develop/svn/ を入力。

Image9

しかし、リポジトリを追加しようとしたら、いきなり落ちた。 パタッ(o_ _)o~†

てくめも@coop / 2007-10-17 によると、

以下のいずれかの方法で対策できます。
(A) Subversion をアンインストールするか、PATH から <Subversion ホームディレクトリ>/bin を外す
(B) Apache2.2 用でなく Apache 2.0 用 Subversion (1.4.x) をインストールする
(C) plugin/*javahl*_X.X.X にあるすべての DLL を、使いたい Subversion の DLL にまるごと置き換える
(D) JavaHL でなく SVNKit など PureJava 実装の SVN コネクタを使う。

上記の (D) の方法で対処した。

  • Window > Preferences... > Team > SVN

の SVNインターフェイスで、SVNKit(Pure Java) を選択した。

Image10

 

4. リポジトリからチェックアウト

上記でインポートしたプロジェクト (testphp) がある場合は、予め削除しておく。

SVNリポジトリ・エクスプローラで、testphp 直下の trunk で右クリック > チェックアウト する。

Image1

チェックアウトのオプションダイアログが表示されるので、プロジェクト名が testphp となっていることを確認する。

Image14

デフォルトのワークスペースを使用。

Image16

PHP エクスプローラを見ると、testphp がチェックアウトされたのがわかる。

Image17

 

関連記事

2008年4月19日土曜日

Subversion をインストールしてリポジトリを作成

Subversion のインストール

subversion.tigris.orgWin32 packages built against Apache 2.2 から、svn-1.4.6-setup.exe をダウンロードしてインストール。

 

TortoiseSVN

GUI で操作できるように TortoiseSVN を利用する。

tortoisesvn.tigris.org から TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi をダウンロードしてインストール。

 

リポジトリの作成

リポジトリの場所として D:\develop\svn を作成した。作成したディレクトリで、右クリック > TortoiseSVN > Create repository here...

Image1

TortoiseSVNの使い方 によると、

一般的にBerkley DBの方が壊れやすいとも言われています。また、TortoiseSVNから作成したリポジトリをネットワーク越しに利用する場合は、Berkley DBのリポジトリは推奨されていません。

Native filesystem で作成した。

Image2

 

関連記事

TortoiseSVN でプロジェクトを管理する

前提

Subversion がインストールされており、リポジトリが作成されていること。

- リポジトリ repository

バージョン管理の履歴が保存されているところ。リポジトリのバックアップだけはしっかり取っておこう。

(トランクやブランチなどのバージョン管理用語の意味 より)

 

リポジトリ内の管理方針

複数のプロジェクトを Subversion で管理したいとき、どのような構成をとるかについて、次の判断が参考になる。 Subversionでバージョン管理 の「複数プロジェクトとリポジトリ」によると、

・プロジェクト間でリポジトリのデータの共有、移動を行うかどうか?
・コミット時の処理、認証、アクセス許可を同じにするかどうか?
を判断基準に同じリポジトリを使うか別リポジトリにするか判断します

今回はシンプルな使い方をしようと思うので、リポジトリはプロジェクト間で共有する方法をとることにした。

同上の「ブランチ」によると、

Subversionでのブランチ作成は、単なるディレクトリのコピーです。
リポジトリ上に、trunk、branchesというサブディレクトリを設けるTipsが一般的です。2つ方法があり、良いと思う方を使えばよいようです。...

 

各プロジェクト毎にtrunk/branchesを設ける方法

repos
   +--- projA
   |       +--- trunk
   |       +--- branches
   +--- projB
   :       +--- trunk
   :       +--- branches

上記で示された構成をとることにした。

ちなみに、トランクやブランチなどのバージョン管理用語の意味 によると、

- トランク trunk

主流となっているブランチのこと。HEAD とも呼ばれる。ちなみに trunk は幹という意味で、そこから「主流のブランチ」という意味になったのだろう。かばんを意味する trunk も同じスペルだけど、別の意味。

- ブランチ branch

ツリーを分岐させること。ブランチすると分岐元とは別にバージョン管理されるようになり、チェックインされた内容が他に自動的に波及しないようになる。明示的に分岐元と同期することはマージと呼ぶ。
分岐させる理由としては、元のツリーを壊すことなく大規模な機能追加をおこないたいとか、リリースに向けてバグ修正だけをするツリーを作りたいなどといったものがある。

 

リポジトリへの登録

Subversion で管理したいファイルがあるフォルダの上で、右クリック > TortoiseSVN > Import...

 071211-002

 

先ほどの方針に従って、リポジトリの URL は次のように付ける。ただし、リポジトリは、ローカルの D:\develop\svn にあるとする。

file:///D:/develop/svn/プロジェクト名/trunk

071211-003

 

リポジトリからの取得

ファイルを取得したいフォルダに移動して、右クリック > SVN Checkout...

071211-009

 

071211-011

 

参考

 

 

関連記事