Top / PHP関連 / Jobeetチュートリアル第1日目

Jobeetチュートリアル第1日目

http://www.symfony-project.org/jobeet/1_2/Doctrine/ja/01

要する時間の目安

第1日目のチュートリアルが完了するまでの目安

2時間~8時間

このようにかなり幅があるのは、XAMPPを使用してオールインワンインストールするのと、
個別にソフトウェアをインストールし、ひとつずつ設定のとの違いにより、このような差になっています。
第1日目は、かなり、やることが満載です。

必要な環境

symfonyが必要とするウェブ開発環境は、以下の通りと解説されています。

No必要な環境
1Webサーバー(たとえば、Apache)
2データベースエンジン(MySQL、PostgreSQL、SQLite等)
3PHP(Ver5.2.4以降)

symfonyのインストール

symfonyをインストールするには、チュートリアル通りではなく、この記事にある通りにインストールしたほうが楽です。

  • PHP関連/symfonyのインストール?

プロジェクトのディレクトリの作成

プロジェクトを格納するディレクトリを作成します。
Windowsの場合、スペースが含まれないディレクトリに作ることが推奨されており、作らなかった場合の動作保障はされていません。
もちろん、日本語が含まれるフォルダも推奨されていないと判断したほうが良いでしょう。

 

つまり、[My Document and Settings]、[Program Files]、並びに[千葉]のようなディレクトリには作成してはだめです。

 

一般的には、ApacheのWebルートにディレクトリを掘って作成します。

 

が、Apacheのインストーラーをデフォルトのままでインストールしてしまうと、
[C:/Program Files/…]のようにつくられてしまうので注意が必要です。

 

ここでは、[D:/Apache/Apache2.2/htdocs/jobeet]に作ることにします。
http://www.techch.com/wikiparts/Sym_01.png

プロジェクトのセットアップ

コマンドプロンプトを開いて、プロジェクトのディレクトリに移動します。
移動したら、[jobeet]プロジェクトを作成するため、以下のコマンドを投入します。

symfony generate:project jobeet

http://www.techch.com/wikiparts/Sym_00.png

 

http://www.techch.com/wikiparts/Sym_02.png

 

http://www.techch.com/wikiparts/Sym_03.png

 

以下のようにディレクトリが作成されます。

Noディレクトリ説明
1apps/プロジェクトのすべてのアプリケーションをホストする
2cache/フレームワークによってキャッシュされるファイル
3config/プロジェクトの設定ファイル
4lib/プロジェクトのライブラリとクラス
5log/フレームワークのログファイル
7plugins/インストールされたプラグイン
8test/ユニットテストと機能テストのファイル
9web/ウェブのrootディレクトリ(下記を参照)
10data/ユニットテスト用のデータを格納するディレクトリ
11doc/ドキュメントを格納するディレクトリ

フレームワーク自身が、このようなディレクトリ構造を強いることにより、symfonyをある程度理解している技術者にとって、
symfonyプロジェクトのメンテナンスをすぐに引き継ぎできます。

アプリケーションの作成

次に[generate:app]タスクによって、[frontend]アプリケーションと、[backend]アプリケーションを作成します。

symfony generate:app --escaping-strategy=on --csrf-secret=Unique$ecret frontend
symfony generate:app --escaping-strategy=on --csrf-secret=Unique$ecret backend

appsのディレクトリの下に、[frontend]と[backend]の2つのディレクトリが作成されました。
いくつかのオプションを指定して、アプリケーションを作成しました。

  • --escaping-strategy=on : XSS(クロスサイトスクリプティング)を防ぐための出力エスケープを有効にします
  • --csrf-secret=Unique$ecret : CSRF(クロスサイトリクエスト攻撃)を防ぐためにフォーム内でのセッショントークンを有効にします
 

http://www.techch.com/wikiparts/Sym_04.png

 
Noディレクトリ説明
1config/アプリケーションの設定ファイル
2lib/アプリケーションのライブラリとクラス
3modules/アプリケーションのコード
4templates/グローバルテンプレートファイル
5i18n/国際化対応のアプリケーションデータ

環境

Webのディレクトリを見ると、[index.php]、[frontend_dev.php]があります。
これらは、フロントコントローラと呼びます。
アプリケーションへの全てのリクエストはこのコントローラを通ります。
2つあるフロントコントローラは、以下のように区別されます。

Noファイル用途
1index.php本番環境用のフロントコントローラ
2frontend_dev.php開発用のフロントコントローラ

ウェブサーバーのセットアップ

続いて、Apacheのバーチャルホストの設定をします。
詳しいことについては、こちらの記事を参照してください。

ということで、説明を抜きにして、[conf/extra/httpd-vhosts.conf]は、以下のように設定します。

<VirtualHost *:80>
    ServerAdmin webmaster@host1.localhost
    DocumentRoot "D:/Apache/Apache2.2/htdocs/host1.localhost"
    ServerName host1.localhost
    ServerAlias localhost
    ErrorLog "logs/host1.localhost/error.log"
    CustomLog "|d:/Apache/Apache2.2/bin/cronolog.exe d:/Apache/Apache2.2/logs/host1.localhost/%Y/%m/access.%d.log" combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@jobeet.localhost
    DocumentRoot "D:/Apache/Apache2.2/htdocs/jobeet/web"
     DirectoryIndex index.php
    Alias /sf "D:\php\data\symfony\web\sf"
    ServerName jobeet.localhost
    ErrorLog "logs/jobeet.localhost/error.log"
    CustomLog "|d:/Apache/Apache2.2/bin/cronolog.exe d:/Apache/Apache2.2/logs/jobeet.localhost/%Y/%m/access.%d.log" combined
    <Directory "D:/Apache/Apache2.2/htdocs/jobeet.localhost/web">
      AllowOverride All
    </Directory>
    <Directory "D:\php\data\symfony\web\sf">
      Allow from all
    </Directory>
</VirtualHost> 

続いて、[C:\WINDOWS\system32\drivers\etc\hosts]に以下の記述を追加します。

 127.0.0.1 jobeet.localhost

設定をテストする

では、以下のURLにアクセスしてみましょう。

http://jobeet.localhost/
 

http://www.techch.com/wikiparts/Sym_05.png

 

続いて、開発環境のアプリケーションにもアクセスしてみます。

http://jobeet.localhost/frontend_dev.php/

http://www.techch.com/wikiparts/Sym_06.png

 

Subversion

第一日目の締めくくりとして、Subversionによるリビジョン管理の設定をします。
TortoiseSVNのインストール方法については、以下に記事があるのでそれを参照してください。

リポジトリの作成

Subversionのリポジトリにアクセスする方法は、幾つか在りますが、
この項はファイルによるリポジトリアクセス方法の解説です。

 

まず、プロジェクトを格納するリポジトリを作成します。
ここでは、[D:/Repos/jobeet]にディレクトリを掘りました。
http://www.techch.com/wikiparts/Sym_07.png

 

[jobeet]フォルダを選択している状態で右クリックし、コンテキストメニューから[ここにリポジトリを作成]を選択します。
http://www.techch.com/wikiparts/Sym_08.png

 

リポジトリの作成に完了すると、ダイアログが出て(キャプチャし忘れました。)、以下のようにリポジトリが作成されます。
http://www.techch.com/wikiparts/Sym_09.png

 

リポジトリの編集

作成されたリポジトリは、空っぽの状態です。
リポジトリは、一般的に以下のようなディレクトリ構成を持つことが推奨されています。

 /            (←リポジトリルート)
  |
  +--- trunk (←トランク:最新のソースが格納される部分)
   |
  +--- tags (←タグ:リポジトリのスナップショットを格納するディレクトリ、リリースや納品という区切り毎に作成されます。)
   |
  +--- branches (←ブランチ:トランクとは別に管理したいプロジェクトの枝分かれを格納するディレクトリです。
                            たとえば、あるリリースに対しての軽微なバグフィックス(機能追加は行わない)を行う場合、
                            ここのディレクトリを使用します。)

リポジトリに、このディレクトリ構造を作成します。
[jobeet]フォルダを選択している状態で右クリックし、コンテキストメニューから[リポジトリブラウザ]を選択します。
http://www.techch.com/wikiparts/Sym_10.png

 

英語になってしまっていますが、これはx64環境のTortoiseSVNの不具合です。
x86環境では日本語になっていると思うので、ご安心ください。
http://www.techch.com/wikiparts/Sym_11.png

 

何も無いところで右クリックをし、コンテキストメニューから[create folder...]を選択します。
http://www.techch.com/wikiparts/Sym_12.png

 

フォルダ名として、[trunk]と入力し、作成します。
http://www.techch.com/wikiparts/Sym_13.png

 

コミットメッセージを作成します。ここでは空白とします。[OK]ボタンをクリックし、確定します。
http://www.techch.com/wikiparts/Sym_14.png

 

同様にして、[tags]、[brances]フォルダも作成します。
http://www.techch.com/wikiparts/Sym_15.png

 

これで、リポジトリの基本構造ができました。

チェックアウト

次にリポジトリとsymfonyのプロジェクトの関連付けをします。
symfonyのプロジェクトルートのディレクトリを選択し、右クリックでコンテキストメニューを開き、[SVNチェックアウト]を選択します。

 

プロジェクトルートのディレクトリは、[D:/Apache/Apache2.2/htdocs/yobeet]に作成しています。
適宜、読み替えてください。
http://www.techch.com/wikiparts/Sym_16.png

 

チェックアウトのダイアログが出ます。ここでの注意点は、[/trunk]のディレクトリを指定する所です。

  • リポジトリURL:file:///D:/Repos/jobeet/trunk
  • チェックアウトディレクトリ:D:/Apache/Apache2.2/htdocs/jobeet
    http://www.techch.com/wikiparts/Sym_17.png
     
    ディレクトリが空っぽでないため、大丈夫かと問われます。
    大丈夫ですので、[Yes]のボタンをクリックしてください。
     
    Sym_18.png

エクスプローラー上、Subversionとのリポジトリと関連性が取れたことが判るオーバーラップアイコンがつきます。
http://www.techch.com/wikiparts/Sym_19.png

 

無視リストの作成

次にsymfonyの作業用のディレクトリである[cache]と[log]のディレクトリを、無視リストに入れます。
無視リストというのは、リポジトリ上で管理しないファイル・ディレクトリをSubversionに教え込ませることです。

 

はじめに、[cache]のディレクトリにあるファイルやディレクトリを削除します。
http://www.techch.com/wikiparts/Sym_20.png

 

http://www.techch.com/wikiparts/Sym_21.png

 

同様に、[log]のディレクトリにあるファイルやディレクトリを削除します。
http://www.techch.com/wikiparts/Sym_22.png

 

http://www.techch.com/wikiparts/Sym_23.png

 

ここまでできたら、無視リストに追加します。
[cache]フォルダを選択し、[TortoiseSVN]-[無視リストに追加]-[cache]と選択します。
http://www.techch.com/wikiparts/Sym_24.png

 

同様にして、[log]ディレクトリも無視リストに追加します。

 

このように2つのディレクトリを無視リストに入れてください。
灰色のマイナス記号のオーバーレイアイコンがあることに着目してください。
http://www.techch.com/wikiparts/Sym_25.png

 

追加

[追加]とは、意訳するとリポジトリにファイルを[追加]することです。
(厳密的にいうと違うのですが、説明文が長く、難しくなるので止めときます。)

 

プロジェクトルートの[jobeet]のフォルダをクリックし、右クリックをしてコンテキストメニューから[TortoiseSVN]-[追加]を選択します。
http://www.techch.com/wikiparts/Sym_26.png

 

追加するファイルを選択します。デフォルトで、Select/All が選択されています。
[OK]ボタンをクリックしてください。
http://www.techch.com/wikiparts/Sym_27.png

 

[追加]が終了しました。
http://www.techch.com/wikiparts/Sym_28.png

 

このようにファイル(ディレクトリ)の追加されるというオーバーレイアイコンになります。
http://www.techch.com/wikiparts/Sym_29.png

チェックイン(コミット)

最後に、リポジトリにコミットして、リポジトリと同期させます。
プロジェクトルートの[jobeet]のフォルダをクリックし、右クリックをしてコンテキストメニューから[TortoiseSVN]-[SVNコミット]を選択します。
http://www.techch.com/wikiparts/Sym_30.png

 

コミットコメントを適当に入れます。ここではリポジトリの初期構築とコミットコメントを入力しました。
[OK]ボタンをクリックしてください。
http://www.techch.com/wikiparts/Sym_31.png

 

[コミット]が終了しました。
http://www.techch.com/wikiparts/Sym_32.png

 

リポジトリブラウザから見ると、jobeetプロジェクトがリポジトリに格納されているところが見て取れます。
http://www.techch.com/wikiparts/Sym_33.png

 

終わりに

第1日目は、開発環境周りの整備が盛りだくさんで大変でした。
特に最後のほうは、subversionのリポジトリを作ったり、チェックインしたりで、
TortoiseSVNのコンテンツっぽくなってしまいました。

 

第2日目は、今回作るアプリケーションの説明だけですので、楽したいと思います。

 
最新の10件
2010-07-09 2010-07-08 2010-07-07 2010-06-29 2010-06-28
人気の20件
Counter: 308, today: 1, yesterday: 1