2012年3月4日日曜日

FuelPHPってなんじゃ?(Eclipseとxamppでローカル開発編)

WindowsでFuelPHPを開発する方法をまとめてみました。
前回の記事で作成したように、FuelPHPのアプリケーションリポジトリは自前のGitlabでホストしているものとします。

今回はEclipseを利用します。


Eclipseの最新(Indigo)をインストール

Eclipseの最新のJ2EEをダウンロードします。
AptanaStudio3でも構いません。





アップデートサイトでEgitをインストール

Help > Install New Software...
から
Indigoのアップデートサイト
http://download.eclipse.org/releases/indigo

Collaboration > Eclipse Egit
を選択してインストール





SSHの公開鍵を作成

Preference > General > Network Connections > SSH2のGeneralタブでSSHのディレクトリを確認しておきます。
次に「Key Management」タブで「Generate RSA Key..」ボタンをクリックして、出力された内容をコピーしておきます。
また、「Save Private Key...」ボタンを押して、SSHのディレクトリに保存します。




公開鍵をGitlabに登録

GitlabのMy ProfileのKeysで、さきほどコピーした内容を適当なタイトルをつけて保存します。
Githubでも同様です。





Gitのユーザー設定

Preference > Team > Git > ConfigurationのUserSettingタブで、「New Entry...」ボタンをクリックし、以下の内容を入力します。
  • user.name:gitlabで登録したユーザー名
  • user.email:gitlabで登録したメールアドレス




Gitのクローン

EclipseのProject Explorerで右クリック、Import > Import... > Git > Projects From Git を選択します。


リポジトリソースでURIを選択します。


URIに該当するプロジェクトのgit@IPアドレス:Git名を入力します。
すると、Hostやリポジトリパスやユーザー名に自動的に各項目が入力されます。
そのまま「Next」ボタンをクリックします。



ブランチを選択します。ここではmasterしかないのでそのまま「Next」ボタンをクリックします。



自動的にGitのデフォルトディレクトリにダウロードするように設定されています。適宜変更しても構いません。
ここではC:\Users\memorycraft\git\bookstoreに保存されるように設定しました。
また、「Clone Submodules」にチェックを入れておきます。


「Next」ボタンをクリックすると、プロジェクトに関しての画面になるので、「Import existing project」を選択します。もしアプリケーションリポジトリがエクリプスプロジェクトでない場合は、「Import as general project」を選択して、後でPHPプロジェクトに変更するか、「Use the New Project wizard」を選択します。

また、Mac版Eclipseではプロジェクトウィザードを選択すると正常終了しなかったので、あらかじめアプリケーションリポジトリに.projectをコミットしておくとスムースに進むと思います。


「Next」ボタンを押すと、リポジトリに含まれているEclipseプロジェクトが表示されるので、そのまま「Finish」ボタンをクリックして、インポートを完了します。



すると、図のようにFuelPHPアプリがプロジェクトとして登録されているのが確認できました。




XAMPPのインストール

FuelPHPをローカルで実行できるようにするために、以下のリンクからXAMPPをインストールします。
http://www.apachefriends.org/jp/xampp-windows.html


インストールしたらApacheとMySQLを起動しておきます。



シンボリックリンクの作成

FuelPHPはpublicディレクトリ以外がDocumentRoot配下にあることはセキュリティ上好ましくないので、基本はpublicディレクトリのシンボリックリンクをDocumentRoot配下に配置するのですが、ショートカットはApacheからはシンボリックリンクだと認識されません。
そこで、Windowsでシンボリックリンクを作成できるツールを使用します。

コマンドプロンプトを管理者権限で実行します。



DocumentRootに移動し、mklinkコマンドでFuelPHPのpublicディレクトリのシンボリックリンクをbookstoreという名前で作成します。
C:\Windows\system32>cd c:\xampp\htdocs
c:\xampp\htdocs>mklink /d bookstore c:\Users\memorycraft\git\bookstore\public
bookstore <<===>> c:\Users\memorycraft\git\bookstore\public のシンボリック リン
クが作成されました


 すると、GUIでは以下のようにショートカットのようなアイコンでbookstoreという項目が作成されていることがわかります。




FuelのローカルDB設定

DB設定ですが、デフォルトではdevelopmentモードで動作します。
例えばdevelopmentモードのDB設定(fuel/app/config/development/db.php)で、localhostのDBを設定している場合はそのままdevelopmentモードでローカル実行すれば問題ありません。

また、開発サーバーでアプリケーションとは別のホストのDBを参照していて、ローカル実行ではXAMPPのMySQLを使用したい、もしくは、開発サーバーではlocalhostのDBを参照していて、ローカル実行ではXAMPPのDBを使わずに、開発サーバーのMySQLを利用したい場合などは、developmentモードとは別にローカルホスト用の環境設定をする必要があります。
その場合は、以下の手順で設定をおこないます。

  • development/db.phpとは別にlocalhost/db.phpを用意する
  • Windowsの環境設定でFUEL_ENVという名前でlocalhostを登録する
  • XAMPPのhttpd.confでSetEnv FUEL_ENV localhostと設定する

ここでは、developmentモードがlocalhostのDBなので、XAMPPのMySQLを使用することにします。


XAMPPのMySQLでデータベース作成

XAMPPのMySQLにデータベースとユーザーを作成します。
環境変数PATHにxampp¥mysql¥binを設定しておくとMySQLの実行に便利です。

mysql -u root
mysql> create database bookstore;
mysql> GRANT ALL PRIVILEGES ON bookstore.* TO 'bs_user'@localhost IDENTIFIED BY 'bs_pass';



oilコマンド

環境変数PATHにxampp¥phpを設定しておきます。
次に、oilコマンドで、Scaffoldをつくって、migrateしてみます。

cd C:¥Users¥memorycraft¥git¥bookstore
php oil generate scaffold book title:varchar[255] auther_id:int publisher_id:int
php oil refine migrate



ブラウザで確認


おお!無事動きました。



リモートリポジトリにcommit, push

いままで変更した分をローカルのリポジトリにコミットします。
まずプロジェクト自体を選択して、右クリック>Team > Add to Index



すると、変更ファイルがコミット候補になります。
次に、プロジェクトを選択して右クリック>Team > Commit ...


コミットダイアログが表示されるので、コメントを記入して、「Commit」ボタンをクリックします。
するとローカルのリポジトリに変更が反映されます。


次に、リモートリポジトリに反映するには、プロジェクトを選択して、右クリック > Team > Push to Upstreamを選択します。



すると、Gitlabのリポジトリツリーにも、変更が反映されました。



これで、WindowsでのFuelPHPの開発環境が整いました。
今回は以上です。