symfonyセットアップメモ

symfonyのセットアップメモ。仕事では1.2系だけど1.4系で遊ぼうと思う。
自分はPHPはそんなに詳しくない、WordPressを少し改造したり、Smartyをちょっと使ったことがあるぐらい。PHPでWebフレームワークを使うのはsymfonyが初めて。
Practical symfony を一通りやると良い感じだと思った。
いつも通り、ubuntu9.10 server(x64)で作業する。
PHP5が動きそうな環境を作る(他にもパッケージいるかも?)。

$ sudo aptitude install apache2 php5 php5-cli php5-mysql mysql-server

symfonyのセットアップ

ホームディレクトリ(今回は/home/tokibito/)にvendorディレクトリを作っておく。

$ cd ~
$ mkdir vendor

symfonyをvendorディレクトリにダウンロードして、展開して名前を変える。この記事では1.4.4

$ cd vendor
$ wget http://www.symfony-project.org/get/symfony-1.4.4.tgz
$ tar xzf symfony-1.4.4.tgz
$ mv symfony-1.4.4 symfony

とりあえずsymfonyのバージョンを確認する。

$ php ~/vendor/symfony/data/bin/symfony -V
symfony version 1.4.4 (/home/tokibito/vendor/symfony/lib)

プロジェクト用にディレクトリmyprojectを作成する。

$ cd ~
$ mkdir myproject

プロジェクトを作成する。

$ cd myproject
$ php ~/vendor/symfony/data/bin/symfony generate:project myproject

~/vendorのシンボリックリンクをlib/に作成しておく。(vendor以下はそのままディレクトリにして置いてもよいけど、いくつかのプロジェクトで共有するためにシンボリックリンクにしておいた。)

$ cd ~/myproject/lib
$ ln -s ~/vendor vendor

これでmyprojectディレクトリ以下にsymfonyコマンドが存在してるはずなので、コマンドヘルプを見てみる。

$ cd ~/myproject
$ php symfony

いっぱいコマンドが表示されたらok。

アプリケーションを作成

とりあえずhelloアプリケーションを作成する。

$ php symfony generate:app hello

これで空のアプリケーションが作成されてるはず。
webディレクトリ以下にindex.phpやhello_dev.phpが作成されているか確認する。

$ cd ~/myproject/web
$ ls
css  hello_dev.php  images  index.php  js  robots.txt  uploads

このディレクトリをApacheなどが参照するようにすることでアプリケーションを動作させることができる。

Apacheを設定する

ApachePHPが動くように適当に設定する。

$ cd /etc/apache2
$ sudo vim ports.conf
(編集)
$ sudo cat ports.conf
$ sudo cat ports.conf
NameVirtualHost *:80
Listen 80
# added
Listen 8000

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>
$ cd /etc/apache2/sites-available
$ sudo vim php-symfony
(編集)
$ cat php-symfony
<VirtualHost *:8000>

  DocumentRoot "/home/tokibito/myproject/web"
  <Directory /home/tokibito/myproject/web>
    AllowOverride All
    Allow from all
  </Directory>

  Alias /sf /home/tokibito/vendor/symfony/data/web/sf
  <Directory "/home/tokibito/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>

</VirtualHost>
$ sudo a2ensite php-symfony
$ sudo /etc/init.d/apache2 restart

サーバの8000番ポートで動作するように設定したのでブラウザで見てみる。

動きました。

開発用のページを動かす

開発用のhello_dev.phpを動かすためにソースの一部をコメントアウト(アクセス制限を解除)する。

//if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
//{
//  die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
//}

これで /hello_dev.php/ を開いてみるとデバッグ用のツールバーが表示されてる。
今日はここまで。