PHPフレームワーク Yii 2.0をさくらのVPSにセットアップしてみた

PHPフレームワークのYii 2.0が、今年の10月に正式にリリースされた。 日本では、多少マイナーな存在にも見えるが、世界的には、PHPフレームワークのベスト4争いに顔を出すほどの人気を誇っている。
後発のLaravelも、1年ほどまでは、Yiiと同じような状況にあったのだが、最近は日本でもその人気に火がついたような感がある。

ということで、Yiiもバージョン2.0のリリースをきっかけに、来年あたり人気急上昇となるのではという期待を込めて、さくらのVPS(OSはUbuntu14.04)上にYii 2.0のお試し環境を作ってみた。

Composerによるインストール

インストール方法には、従来型のYiiの公式サイトからzipファイルをダウンロードして、解凍したファイルをFTP経由でサーバーにアップロードするという従来の方法もあるが、Yii 2.0からは、Composerによるインストールができるようになった。 composerコマンドのインストール方法は次のとおり。

$ curl -s http://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

続いて、下記のコマンドにより、Yii 2.0がインストールが始まる。The Definitive Guide to Yii 2.0の例に従い、Yiiプロジェクト名はbasicとなっているが、この名称は自由に変更できる。

$ composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
$ composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

なお、GithubのPersonal access tokensをcomposerに登録していない人は。インストールを始める前に、次のコマンドを実行しておく必要がある。

$ composer config -g github-oauth.github.com <oauthtoken>

Continue Reading…

Laravel4とSymfony2のクールで熱い関係

英米で人気急上昇中のPHPフレームワークLaravelの次期バージョンLaravel4の開発版が公開されているので、Ubuntu12.10のローカル環境で試してみた。

先ずは、githbuからLaravel4の開発版をダウンロードして、これ解凍する。Laravel4では、パッケージ管理に、composerが採用されることになっているので、curlコマンドを使って、composerをダウンロードする。

$ sudo apt-get install curl
$ curl -s https://getcomposer.org/installer | php

composer.pharというファイルがダウンロードされるので、次のコマンドでLaravel4を最新の状態にアップデートする。

$ sudo apt-get install git
$ php composer.phar update

composer.pharの名前をcomposerに変更して、/usr/binや/usr/local/binなど、コマンドパスが通っているフォルダに移動させれば、以後、どこからでもcomposerコマンドを使えるようになる。

$ composer update

なお、すでにcomposerがインストールされている環境下で、上記コマンドを実施したとき、composerのバージョンが古いという警告が出る場合があるので、そのときは次のコマンドで、composer自体をアップデートしておく。

$ sudo composer self-update

Continue Reading…

LaravelはポストCodeIgniterの最有力候補なのか

CodeIgniterのライセンス変更が話題になったのが、昨年の10月のこと。あれからちょうど1年が過ぎて、最近はライセンス問題のことがあまり語られなくなった。まあ、CodeIgniterのライセンスを保有するElis Labo社がこれを決断した以上、不満のある人は黙って去って行くしかないのかもしれないが。

ところで、以前書いたブログ記事「ライセンス問題で発火したCodeIgniterとOSL3.0」の最後で挙げた、ポストCodeIgniterの候補、KohanaFuelPHPというふたつのPHPフレームワークのうち、FuelPHPがこのところ元気がいい。最近は日本語の書籍も販売され、各地で勉強会が頻繁に開かれるようになった。

一方、海の向こうのアメリカに目を向けると、FuelPHP以上に勢いのあるフレームワークがある。それは、Laravelという名のPHPフレームワークだ。

Laravelは、FuelPHPやKohanaのような、CodeIgniterの開発者がフォークして作り出されたフレームワークではない。Laravelの開発者であるTaylor Otwellは、マイクロソフトの.NETの開発に関わっていたという経歴の持ち主で、自身のブログのなかでは、CodeIgniterやFuelPHPを意識した発言も目立つが、Laravel自体の仕上がりは、CodeIgniterライクというより、現行のフレームワークのいいとこ取りという感じのようだ。

というわけで、何だか面白そうじゃないかという気がしたので、さっそくUbuntuローカル環境にインストールして遊んでみた。
Continue Reading…

ライセンス問題で発火したCodeIgniterとOSL3.0

低い学習コストと圧倒的なスピードを売りにして、このところ人気急上昇だったPHPクレームワークのCodeIgniterが、ライセンス変更問題を巡って大きく揺れている。

事の発端は、今年10月20日にニューヨークで行われたExpressionEngineとCodeIgniterのプレゼンテーションの席で、EllisLabのCEOが、CodeIgniterのライセンスをOpen Software License 3.0に変更すると発表したことから始まる。

その後の詳しい経緯については、次のサイトなどを参照していただきたい。

そもそもCodeIgniterは、オープンソースソフトウエアではあったものの、CodeIgniterライセンスという独自ライセンスを採用していた。このライセンスについて、EllisLab側は、BSD/Apacheライクなライセンスだと説明していたが、CodeIgniterの商標保護や宣伝条項があるために、正式のBSDライセンスやApacheライセンスではなかった。

今回のOSL3.0へのライセンスへの変更を決定する前にも、BSDやMITライセンスの採用が検討されたようだが、結局、この商標保護と宣伝条項があるため、最後はOSL3.0に落ち着いたということらしい。
Continue Reading…

WordPressとCodeIgniterを連携させる3つの方法

人気のPHPフレームワークCodeIgniterとWordPressを連携させるプラグインWP Code Igniterが登場した。このプラグインは、WordPressをCodeIgniterで構築されたWebアプリの一部として利用できるようにするもので、MVCアーキテクチャのなかのViewとしてWordPressが統合されるという仕組みになっているようだ。

さっそく試してみたのだが、このプラグインはまだテスト段階ということもあって、私のUbuntuローカル環境では動作しなかった。そこで、他にもWordPressとCodeIgniterを連携させる方法はないかと調べてみると、あちこちでいろいろな試みがなされているようだが、大きく分けると次の3つに分類できる。

  1. プラグインを通じた統合(WP Code Igniterの場合がこれ)
  2. テーマとfunctions.phpを利用した統合
  3. CodeIgniterのルートディレクトリ内にWordPressのフォルダを作って統合

上記の方法のうち、2番目の方法でチャレンジしている人が多かったようだが、その方法は千差万別で、使用しているCodeIgniterのバージョンも比較的古いものが多い。

CodeIgniterのViewをテーマ内から利用しようという発想は、シンプルで解り易いのだが、WordPressとCodeIgniterの両方に精通していないと実現は難しく、構築後のメンテナンスも大変そうだ。

WordPressとCodeIgniterの最も簡単な連携方法

ということで、最後に残った3番目の方法だが、これが一番原始的な方法で、ほとんど説明の必要がないほど単純明解だ。

例えば、CodeIgniterのルートディレクトリにblogという名前のフォルダを作り、そこにWordPressをインストールすれば作業はこれで終わってしまう。

唯一懸念される問題は、CodeIgniter側でWordPressをインストールしたフォルダと同名のコントローラーを作った場合だが、デフォルトの状態で使う場合は問題はない。通常、CodeIgniterでblogコントローラーを作った場合は、サイトアドレス/index.php/blogでアクセスすることになる。これに対してWordPressのフォルダへのアクセスは、サイトアドレス/blogとなるので、両者が衝突することはない。

CodeIgniterのindex.phpを消去したい場合

ただし、デフォルトの状態が気に入らないという人も当然いるわけで、SEO対策上もよろしくない。この問題については、CodeIgniterのユーザーガイドでも、「index.phpを消す方法」として紹介されいる。ルートディレクトリに次の内容の.htaccessを置けば解決する。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

なお、この設定をした場合、WordPressをインストールしたフォルダと同名のコントローラーがCodeIgniter側にあるときは、CodeIgniterのコントローラーが優先されることになってしまうが、WordPressをインストールしたフォルダのblogをコントローラーに支配させないために、上記の.htaccessの2行めを次のように変更すれば問題は解決する。

RewriteCond $1 !^(index\.php|images|robots\.txt|blog)

本当はSeezooCMSやPyroCMSでもいいのだが

以上で、index.phpも消えてすっきりする。この方法だと、固定ページをCodeIgniterで作り、ブログはWordPressを利用するという使い方ができるだろう。番外編として、WordPressのルートディレクトリにCodeIgniterのsystemフォルダやapplicationフォルダを置くという方法もあると思うが、この場合は、WordPressの管理画面とデータベースのみを利用してサイト構築はCodeIgniterで行うことになると思う。

もちろん、最初からWordPressとCodeIgniterを連携させようなんて考えないで、「素直にCodeIgniterで構築されたSeezooCMSPyroCMSなどを使えばいいんじゃない」という考え方もあるだろう。まあ、多分それが正解だろうが、いくらCodeIgniterが気に入ったからといって、使い慣れたプラットフォームはなかなか捨てられないということもある。

また、3番目の方法なら、たぶんWordPress以外のCMSでもうまく行くと思うので、いろいろと試してみると、思いもかけない組み合わせが見つかるかもしれない。

ただし、現段階ではあくまでもお試しレベルなので、予期せぬ問題を孕んでいる可能性はある。実際のサイト構築などに応用するときは、くれぐれも自己責任でお願いしたい。