symfony を学習するために askeet を順番にやっていくことにしました。まずは1日目です。

インストール

まず PEAR をアップデート

$ pear upgrade PEAR

symfony プロジェクトの PEAR チャネルを登録

$ pear channel-discover pear.symfony-project.com

symfony をインストール

$ pear install symfony/symfony

とここで

symfony/symfony requires PHP extension "dom"
No valid packages found
install failed

というエラーがでる

# yum install php-xml

で php-xml を入れると symfony をインストールできました。
インストールの確認をしておきます。

$ symfony -V
symfony version 1.1.0 (/usr/share/pear/symfony)

プロジェクトの作成

askeet プロジェクトのディレクトリを作成します。

$ mkdir /home/askeet
$ cd /home/askeet
$ symfony init-project askeet

作成したディレクトリで symfony コマンドを実行して adkeet プロジェクトを作成します。下記のようなファイルが作成されました。

>> dir+      /home/askeet/web
>> file+     /home/askeet/web/.htaccess
>> dir+      /home/askeet/web/images
>> dir+      /home/askeet/web/uploads
>> dir+      /home/askeet/web/uploads/assets
>> dir+      /home/askeet/web/js
>> file+     /home/askeet/web/robots.txt
>> dir+      /home/askeet/web/css
>> file+     /home/askeet/web/css/main.css
>> dir+      /home/askeet/config
>> file+     /home/askeet/config/properties.ini
>> file+     /home/askeet/config/ProjectConfiguration.class.php
>> file+     /home/askeet/config/databases.yml
>> file+     /home/askeet/config/propel.ini
>> file+     /home/askeet/config/schema.yml
>> file+     /home/askeet/config/rsync_exclude.txt
>> dir+      /home/askeet/plugins
>> dir+      /home/askeet/lib
>> dir+      /home/askeet/doc
>> dir+      /home/askeet/test
>> dir+      /home/askeet/test/functional
>> dir+      /home/askeet/test/bootstrap
>> file+     /home/askeet/test/bootstrap/functional.php
>> file+     /home/askeet/test/bootstrap/unit.php
>> dir+      /home/askeet/test/unit
>> dir+      /home/askeet/data
>> file+     /home/askeet/symfony
>> dir+      /home/askeet/log
>> dir+      /home/askeet/apps
>> dir+      /home/askeet/cache
>> tokens    /home/askeet/config/properties.ini
>> tokens    /home/askeet/config/propel.ini
>> tokens    /home/askeet/config/ProjectConfiguration.class.php
>> chmod 777 /home/askeet/cache
>> chmod 777 /home/askeet/log
>> chmod 777 /home/askeet/web/uploads
>> chmod 777 /home/askeet/symfony
>> chmod 777 /home/askeet/web/uploads/assets

次に frontend というアプリケーションを作成します。

symfony init-app frontend

アプリケーション用の下記ファイルが作成されました。

>> dir+      /home/askeet/apps/frontend/config
>> file+     /home/askeet/apps/frontend/config/app.yml
>> file+     /home/askeet/apps/frontend/config/settings.yml
>> file+     /home/askeet/apps/frontend/config/factories.yml
>> file+     /home/askeet/apps/frontend/config/security.yml
>> file+     /home/askeet/apps/frontend/config/filters.yml
>> file+     /home/askeet/apps/frontend/config/view.yml
>> file+     /home/askeet/apps/frontend/config/routing.yml
>> file+     /home/askeet/apps/frontend/config/cache.yml
>> file+     /home/askeet/apps/frontend/conf...licationConfiguration.class.php
>> dir+      /home/askeet/apps/frontend/modules
>> dir+      /home/askeet/apps/frontend/lib
>> file+     /home/askeet/apps/frontend/lib/myUser.class.php
>> dir+      /home/askeet/apps/frontend/i18n
>> dir+      /home/askeet/apps/frontend/templates
>> file+     /home/askeet/apps/frontend/templates/layout.php
>> tokens    /home/askeet/apps/frontend/config/settings.yml
>> file+     /home/askeet/web/index.php
>> file+     /home/askeet/web/frontend_dev.php
>> tokens    /home/askeet/web/index.php
>> tokens    /home/askeet/web/frontend_dev.php
>> rename    /home/askeet/apps/frontend/conf...frontendConfiguration.class.php
>> tokens    /home/askeet/apps/frontend/conf...frontendConfiguration.class.php
>> chmod 777 /home/askeet/cache
>> chmod 777 /home/askeet/log
>> chmod 777 /home/askeet/web/uploads
>> chmod 777 /home/askeet/symfony
>> chmod 777 /home/askeet/web/uploads/assets
>> dir+      /home/askeet/test/functional/frontend

httpd.conf の設定

作成したプロジェクトにアクセスできるように httpd.conf を設定します。

その前に PEAR のデータのパスを調べておきます

pear config-show
....
PEAR data directory            data_dir         /usr/share/pear/data
....

symfony のデフォルトの CSS や画像は symfony のデータディレクトリにあるので、そのデータディレクトリのパスを httpd.conf で指定するために必要です。私の環境では /usr/share/pear/data でした。

httpd.conf に以下を追加

<VirtualHost *:80>
  ServerName askeet
  DocumentRoot "/home/askeet/web"
  DirectoryIndex index.php
  Alias /sf /usr/share/pear/data/symfony/web/sf

  <Directory "/home/askeet/web">
   AllowOverride All
  </Directory>
</VirtualHost>

Alias /sf /usr/share/pear/data/symfony/web/sf の部分を先ほど調べたパスに合せます。
設定後、設定を反映させるために Apache を再起動させます。

ここまでで http://askeet/ にアクセスすると下記のような画面になります。

また、symfony ではデバッグモードというのがあるそうで
http://askeet/frontend_dev.php/ にアクセスすると表示できるそうです。
ただ、なぜか下記のようなエラーメッセージがでてしまいアクセスすることができませんでした。

Your are not allowed to access this file. Check frontend_dev.php for more information.

原因を調査中なのですが今日は時間切れのようなので明日続きを調べたいと思います。

関連する投稿