Silexを使っている開発というのを見たことがなくて、これは世の中的に本当に使われているのかという疑問をもっていましたが、EC-CUBEがとうとうSilexベースで開発してきました。Symfony使わないところがまたいいですね。Silexも使わないとダメな時代になってきたのかなということで導入方法です。
Silexを使ってみた感想としては、ミニマルから自分で構築するのは結構面倒くさいです。例えば会員ページ使う系のサイトとかを作るのだったらえらく面倒くさい。とはいってもマイクロフレームワーク的なことをうたっているのでそれもそのはず、かんたんにPHPを使ったページを作るのだったら(とくに今後大きく発展するようなPHPサイト)結構いい感じのつくりになっております。
Symfonyベースになっているので、こってりとした大規模サイトつくるのだったらそもそもSymfonyを使った方がよさそうです。
またLaravelとかSymfonyにくらべて日本語のドキュメントが少ないので英語が苦手な人は結構時間かかってしまうかもです。
ちょっといろいろやってみたのですが、composerをインストールしつつ、本家から”Download Silex version 2 as a “fat” .zip or .tgz file.”をダウンロードしてから必要ある場合にはcomposerで更新かけた方がやりやすかったです。というのもcomposer.jsonの設定が何を選んでいいのかわからないので、最初はある程度セットになっているfatを選んだ方がよかろうという感じです。慣れていたら最低限自分で必要なものをインストールするのがよいかと思います。
※またSilexフレームワークは大変ミニマムなので、ある程度一揃えの設定がしてあるものの方がよい場合は、
こちらからSilex-Skeletonをインストールした方がやりやすいかもです。
ここでは、
DocumentRoot: /var/www/html/silex/web
Domain: example.com
で説明しております。
本家からダウンロードする。
Download Silex version 2 as a “fat” .zip or .tgz file.でまずはいいのではないかと。
というのもcomposer.jsonにすでにいろいろ書いてあってあんまり考えなくてよいからです。ダウンロードしたファイルは、
silex
├── vendor
├── web
├── composer.json
└── composer.lock
こんな感じ。
ダウンロードしたら、そのままsilexディレクトリを/var/www/htmlにアップロードしておきます。
内容的にはダウンロードしたとおりなのですが、webの中にindex.phpが入っていて「Hallo World」が表示されるようになっています。なので、DocumentRootをwebに設定することになります。AoacheのVirtualHostなどでアクセスできるように設定しておきます。
例えばですが、/var/www/html/silex/webがDocumentRootとか、そんな感じになるかと思います。
<VirtualHost *:80>
DocumentRoot /var/www/html/silex/web
ServerName example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
</VirtualHost>
今後のアップデートのためにcomposerをインストールしておきます。だいたいいつもの手法で。面倒なのでパスは通してないです。
$ curl -s http://getcomposer.org/installer | php
composer.jsonの作成をしますが、最低限(silexがミニマルで機能する)というのであれば、以下のコマンドで作成します。とはいえ、composer.jsonは「Download Silex version 2 as a “fat”」の中に同胞しているので、特に何もしなくても大丈夫です。
$ touch composer.json
$ vi composer.json
{
"require": {
"silex/silex": "2.0.*"
}
}
composerからSilexを入手する場合は以下になりますが、今回は必要ないです。
$ php composer.phar install (*1)
// silex install
$ php composer.phar create-project fabpot/silex-skeleton ./silex (*1)
$ mkdir ./silex/silex.log ./silex/cache
$ chmod 0777 ./silex/silex.log ./silex/cache
(*1)すごい時間がかかる
基本これで終わりです。
composerでsilexの依存関係ファイルをアップデートする場合は、
$ php composer.phar update
これだけでOKです。(めちゃくちゃ時間かかります。)composer.jsonの内容をみてアップデートしてくれます。
xdedugを使うともうちょっと速くなるみたいです。
https://getcomposer.org/xdebug
インストールしてDocumentRootの設定が終わったら、
http://example.com/
アクセスしてみます。デフォルトでは、Symfonyのデバックモードになっていると思うので、「Sorry, the page you are looking for could not be found.」が表示されるかもです。Symfonyの見慣れたデバックモードです。
ついで、
http://example.com/hello
にアクセスします。Not Foundになった場合はhtaccessの設定がまだ終わっていないので、以下を/var/www/html/silex/webに設定します。
[.htaccess]
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
</IfModule>
これで、「Hello!」が表示されれば初期インストールは完了。