Practical symfony 一日目

最初はほとんど Getting Started with symfony と同じかも。

#### Practical symfony 1日目(http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/01)
> cd Y:\Storage\jobeet
> mkdir .\lib\vendor
> mkdir .\lib\vendor\symfony
#### 1.4 ブランチを使う事にする(see also http://svnbook.red-bean.com/index.en.html)
> svn checkout http://svn.symfony-project.com/branches/1.4/ .\lib\vendor\symfony
リビジョン 32074

> php lib\vendor\symfony\data\bin\symfony -V
symfony version 1.4.10-DEV (Y:\Storage\jobeet\lib\vendor\symfony\lib)

> php lib\vendor\symfony\data\bin\symfony generate:project jobeet
>> dir+      Y:\Storage\jobeet\apps
>> dir+      Y:\Storage\jobeet\cache
>> dir+      Y:\Storage\jobeet\config
>> file+     Y:\Storage\jobeet\config/ProjectConfiguration.class.php
>> file+     Y:\Storage\jobeet\config/properties.ini
>> file+     Y:\Storage\jobeet\config/rsync_exclude.txt
>> dir+      Y:\Storage\jobeet\data
>> dir+      Y:\Storage\jobeet\data/fixtures
>> file+     Y:\Storage\jobeet\data/fixtures/fixtures.yml
>> dir+      Y:\Storage\jobeet\lib/form
>> file+     Y:\Storage\jobeet\lib/form/BaseForm.class.php
>> dir+      Y:\Storage\jobeet\log
>> dir+      Y:\Storage\jobeet\plugins
>> file+     Y:\Storage\jobeet\symfony
>> dir+      Y:\Storage\jobeet\test
>> dir+      Y:\Storage\jobeet\test/bootstrap
>> file+     Y:\Storage\jobeet\test/bootstrap/functional.php
>> file+     Y:\Storage\jobeet\test/bootstrap/unit.php
>> dir+      Y:\Storage\jobeet\test/functional
>> dir+      Y:\Storage\jobeet\test/unit
>> dir+      Y:\Storage\jobeet\web
>> file+     Y:\Storage\jobeet\web/.htaccess
>> dir+      Y:\Storage\jobeet\web/css
>> file+     Y:\Storage\jobeet\web/css/main.css
>> dir+      Y:\Storage\jobeet\web/images
>> dir+      Y:\Storage\jobeet\web/js
>> file+     Y:\Storage\jobeet\web/robots.txt
>> dir+      Y:\Storage\jobeet\web/uploads
>> dir+      Y:\Storage\jobeet\web/uploads/assets
>> tokens    Y:/Storage/jobeet/config/ProjectConfiguration.class.php
>> tokens    Y:/Storage/jobeet/config/properties.ini
>> tokens    Y:/Storage/jobeet/config/rsync_exclude.txt
>> tokens    Y:/Storage/jobeet/config/ProjectConfiguration.class.php
>> tokens    Y:/Storage/jobeet/config/properties.ini
>> tokens    Y:/Storage/jobeet/config/rsync_exclude.txt
>> tokens    Y:/Storage/jobeet/lib/form/BaseForm.class.php
>> file+     Y:\Storage\jobeet\config/databases.yml
>> dir+      Y:\Storage\jobeet\config/doctrine
>> file+     Y:\Storage\jobeet\config/doctrine/schema.yml
>> chmod 777 Y:\Storage\jobeet\web\uploads
>> chmod 777 Y:\Storage\jobeet\cache
>> chmod 777 Y:\Storage\jobeet\log
>> chmod 777 Y:\Storage\jobeet/symfony
>> chmod 777 Y:/Storage/jobeet/web/uploads/assets
>> tokens    Y:/Storage/jobeet/config/databases.yml
>> tokens    Y:/Storage/jobeet/config/doctrine/schema.yml
>> tokens    Y:/Storage/jobeet/config/ProjectConfiguration.class.php
>> tokens    Y:/Storage/jobeet/config/properties.ini
>> tokens    Y:/Storage/jobeet/config/rsync_exclude.txt
>> tokens    Y:/Storage/jobeet/lib/form/BaseForm.class.php

#### これで "symfony" がコピーされるのでバッチファイルをコピーすればパスを打たずに済む
> copy lib\vendor\symfony\data\bin\symfony.bat .
> symfony -V
symfony version 1.4.10-DEV (Y:\Storage\jobeet\lib\vendor\symfony\lib)


#### アプリケーションの作成
> symfony generate:app --escaping-strategy=on --csrf-secret=HiMITsU frontend
>> dir+      Y:\Storage\jobeet\apps/frontend\config
>> file+     Y:\Storage\jobeet\apps/frontend\config/app.yml
>> file+     Y:\Storage\jobeet\apps/frontend...licationConfiguration.class.php
>> file+     Y:\Storage\jobeet\apps/frontend\config/cache.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/factories.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/filters.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/routing.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/security.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/settings.yml
>> file+     Y:\Storage\jobeet\apps/frontend\config/view.yml
>> dir+      Y:\Storage\jobeet\apps/frontend\i18n
>> dir+      Y:\Storage\jobeet\apps/frontend\lib
>> file+     Y:\Storage\jobeet\apps/frontend\lib/myUser.class.php
>> dir+      Y:\Storage\jobeet\apps/frontend\modules
>> dir+      Y:\Storage\jobeet\apps/frontend\templates
>> file+     Y:\Storage\jobeet\apps/frontend\templates/layout.php
>> tokens    Y:/Storage/jobeet/apps/frontend/config/settings.yml
>> file+     Y:\Storage\jobeet\web/index.php
>> file+     Y:\Storage\jobeet\web/frontend_dev.php
>> tokens    Y:\Storage\jobeet\web/index.php
>> tokens    Y:\Storage\jobeet\web/frontend_dev.php
>> rename    Y:\Storage\jobeet\apps/frontend...frontendConfiguration.class.php
>> tokens    Y:\Storage\jobeet\apps/frontend...frontendConfiguration.class.php
>> chmod 777 Y:\Storage\jobeet\web\uploads
>> chmod 777 Y:\Storage\jobeet\cache
>> chmod 777 Y:\Storage\jobeet\log
>> chmod 777 Y:\Storage\jobeet/symfony
>> chmod 777 Y:/Storage/jobeet/web/uploads/assets
>> dir+      Y:\Storage\jobeet\test/functional/frontend

#### httpd の設定の別ポートの所は飛ばす。
#### 名前ベース virtual host の設定を追記
# This is the configuration for one of my symfony project

    ServerName jobeet.localhost
    
    DocumentRoot "Y:/Storage/jobeet/web"
    DirectoryIndex index.php
    
        AllowOverride All
        Allow from All
    
    
    Alias /sf "Y:/Storage/jobeet/lib/vendor/symfony/data/web/sf"
    
        AllowOverride All
        Allow from All
    
    
    AddHandler application/x-httpd-php .php
    AddDefaultCharset UTF-8


#### ブラウザで http://jobeet.localhost/http://jobeet.localhost/frontend_dev.php/ を確認。

#### subversionリポジトリを作成
> svnadmin create --fs-type fsfs F:\Storage\repos\jobeet

#### WebDAV の設定
#### httpd.conf の dav_module と dav_fs_module を有効化する、dav_lock_module は dav_fs_module を使う場合は必要ない。
#### 更に下記2つのモジュールを読み込み
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"

#### 下記行を追記

    DAV svn
    SVNParentPath "f:\Storage\repos"
    
    #AuthType Basic
    #AuthName "Subversion repositories"
    #AuthUserFile "C:/Program Files/Apache Group/Apache2/etc/svnpasswd"
    #
    #    Require valid-user
    #


#### TortoiseSVNhttp://localhost/svn/jobeet をチェックアウトしてみる。

#### 標準的なディレクトリ構造を作って即コミット
> svn mkdir -m "standard directory structure is created." http://localhost/svn/jobeet/trunk http://localhost/svn/jobeet/branches http://localhost/svn/jobeet/tags

#### trunk をチェックアウト
> svn checkout http://localhost/svn/jobeet/trunk Y:\Storage\jobeet

#### cache/* と log/* を削除、その他もコミットしたくない物を移動か削除しておく(php_errors.log などができているかもしれない)
> del /Q Y:\Storage\jobeet\cache\*
> del /Q Y:\Storage\jobeet\log\*

#### ↑じゃサブディレクトリが消えない……
> rmdir /S /Q Y:\Storage\jobeet\cache
> rmdir /S /Q Y:\Storage\jobeet\log
> mkdir Y:\Storage\jobeet\cache
> mkdir Y:\Storage\jobeet\log

#### カレントディレクトリ以下の全てを管理対象に指定
> svn add *
svn: Skipping argument: '.svn' は末尾に予約されたパス名がついています
A         apps
A         apps\frontend
A         apps\frontend\config
A         apps\frontend\config\app.yml
A         apps\frontend\config\cache.yml
A         apps\frontend\config\factories.yml
A         apps\frontend\config\filters.yml
A         apps\frontend\config\frontendConfiguration.class.php
A         apps\frontend\config\routing.yml
A         apps\frontend\config\security.yml
A         apps\frontend\config\settings.yml
A         apps\frontend\config\view.yml
A         apps\frontend\i18n
A         apps\frontend\lib
A         apps\frontend\lib\myUser.class.php
A         apps\frontend\modules
A         apps\frontend\templates
A         apps\frontend\templates\layout.php
A         config
A         config\databases.yml
A         config\doctrine
A         config\doctrine\schema.yml
A         config\ProjectConfiguration.class.php
A         config\properties.ini
A         config\rsync_exclude.txt
A         data
A         data\fixtures
A         data\fixtures\fixtures.yml
A         lib
A         lib\form
A         lib\form\BaseForm.class.php
A         lib\vendor
svn: 警告: 'lib\vendor\symfony' は既にバージョン管理下におかれています
A         plugins
A         test
A         test\bootstrap
A         test\bootstrap\functional.php
A         test\bootstrap\unit.php
A         test\functional
A         test\functional\frontend
A         test\unit
A         web
A         web\.htaccess
A         web\css
A         web\css\main.css
A         web\frontend_dev.php
A         web\images
A         web\index.php
A         web\js
A         web\robots.txt
A         web\uploads
A         web\uploads\assets

#### svn:externalsプロパティ設定
> svn propset svn:externals "symfony http://svn.symfony-project.com/branches/1.4" .\lib\vendor\

#### svn:ignoreプロパティ設定
> svn propset svn:ignore "*" .\cache
> svn propset svn:ignore "*" .\log

#### もし propset ではなくて propedit を使う場合は 環境変数 SVN_EDITOR を設定しておくか --editor-cmd=エディタへのパス で指定する
> SET SVN_EDITOR=notepad
> svn propedit svn:externals .\lib\vendor
> svn propedit svn:ignore .\cache
> svn propedit svn:ignore .\log
or
> svn propedit svn:externals .\lib\vendor --editor-cmd=notepad
> svn propedit svn:ignore .\cache --editor-cmd=notepad
> svn propedit svn:ignore .\log --editor-cmd=notepad

#### コミットする
> svn commit -m "symfony files are commited." .

#### アップデートしてみる
> svn update

#### 外部項目の更新が重い。symfonysvn:externals じゃなくて svn:ignore でもいいかも。