さくらのレンタルサーバに Symfony2 を入れようとして嵌った件

  • 24
    いいね
  • 4
    コメント
この記事は最終更新日から1年以上が経過しています。

最近ではVPSなどの方が便利ですが、さくらのレンタルサーバー(スタンダード)で Symfony2 をやむなく動かす機会がありましたので、手順をまとめてみます。
パッケージインストールが使えず、モジュール単位でソースインストールするという無理難題でした。

phpinfoで確認できる以下のインストールオプションに無い機能は、pecl または phpizeコマンドで入れることができるもののみ追加可能です。

$ php -i 
Configure Command =>  './configure'  '--prefix=/usr/local/php/5.4' '--with-openssl=/usr' '--with-zlib=/usr' '--with-curl' '--enable-exif' '--with-pcre-dir=/usr/local' '--with-gd' '--with-jpeg-dir=/usr/local' '--with-png-dir=/usr/local' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local' '--with-gettext=/usr/local' '--with-gmp=/usr/local' '--with-iconv-dir=/usr/local' '--enable-mbstring' '--with-mcrypt' '--with-mysql' '--with-mysqli' '--with-pdo-mysql' '--enable-soap' '--with-xsl=/usr/local' '--enable-zip'

BCMath など configure のときに指定しないといけないものはこの時点でアウトとなります。(たぶん)
http://php.net/manual/ja/bc.installation.php
また、APCやOPcacheはPHPがCGI版なためphpizeでいれても機能しません(たぶん)

諸元

項目
OS FreeBSD 9.1-RELEASE-p15 amd64
プラン さくらのレンタルサーバ スタンダード
PHP 5.4.35 (cgi-fcgi) (built: Nov 21 2014 16:59:22)
apache Apache/2.2.25
mysql 5.5
ユーザ名 example
ホームディレクトリ /home/example
プロジェクトインストール先 /home/example/project
git,composerインストール先 /home/example/bin
その他インストール先 /home/example/local
ドキュメントルート /home/example/www/
URL http://<example>.sakura.ne.jp

※example は適宜読み替えてください。
※intl(icu含む)はSonataAdminBundleで必要だったのでインストールしています。
Symfony2単体としてはrecommendなので必須ではありません。
※apcは未使用。

管理画面から選べる PHP のバージョンは 2014/12/20 現在は以下のとおりでした。

  • 5.4.35
  • 5.3.29
  • 5.2.17
  • 4.4.9

今回は最新の 5.4 で試していますが、5.3 でも動くと思います。
http://symfony.com/doc/current/reference/requirements.html

1. ディレクトリの作成

$ cd ~/
$ mkdir bin
$ mkdir local
$ mkdir local/src

2. icuライブラリのインストール

$ cd ~/local/src
$ wget http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz
$ tar zxvf icu4c-54_1-src.tgz
$ cd icu/source
$ ./configure --prefix=$HOME/local
$ gmake
$ gmake install

3. intlのインストール

$ cd ~/local/src
$ wget http://pecl.php.net/get/intl-3.0.0.tgz
$ tar zxvf intl-3.0.0.tgz
$ cd intl-3.0.0
$ phpize
$ ./configure --with-icu-dir=$HOME/local
$ make

$ cd ~/local
$ mkdir php
$ mkdir php/extension
$ cd php/extension
$ cp ~/local/src/intl-3.0.0/modules/intl.so . 

※今回make後に手動でコピーしていますが、本来は以下のように make install でインストールした後、シンボリックリンクを作るなどした方がよいかもしれません。

$ ./configure --prefix=$HOME/local --with-icu-dir=$HOME/local
$ make
$ make install

さくらインターネットのコントロールパネルからphp.iniの設定
[アプリケーションの設定] -> [PHP設定の編集]

date.timezone = Asia/Tokyo
extension_dir = /home/example/local/php/extension
extension=intl.so
short_open_tag=off

4 Git のインストール

最近のサーバーはもともと入っているようです。
ただ、1.9.3とバージョンが古いため、新しいものに差し替えた方がよいようです。
ここでは、最新版をいれました。
https://github.com/git/git/tree/v2.2.1

$ which git
/usr/local/bin/git
$ git --version
git version 1.9.3
$ cd ~/local/src
$ wget --no-check-certificate https://github.com/git/git/archive/v2.2.1.zip
$ unzip v2.2.1.zip
$ cd git-2.2.1/
$ gmake all
$ gmake install

~/.cshrcにパスを追加

$ vi ~/.cshrc

set path = ($HOME/bin $HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin)

$ source ~/.cshrc

バージョンを確認。

$ which git
/home/example/bin/git
$ git --version
git version 2.2.1

5. composerの取得

ここから Symfony のインストール手順を踏んでいきます。
http://docs.symfony.gr.jp/symfony2/book/installation.html

$ curl -s https://getcomposer.org/installer | php
$ mv composer.phar ~/bin/composer

6. プロジェクトファイル(symfony2)のインストール

$ cd ~
$ composer create-project symfony/framework-standard-edition project/

あとは、FWの作法に沿って作業。

7. フロントコントローラ、assetsの配置

フロントコントローラをシンボリックリンクでドキュメントルートに置いてもエラーとなったのでコピーで対応。

$ cd ~/project
$ cp web/app.php ../www/app.php
$ cp web/app_dev.php ../www/app_dev.php
$ cp web/.htaccess ../www/

フロントコントローラ編集

$ vi ~/www/app.php
$ vi ~/www/app_dev.php

bootstrapファイルとAppKernelファイルのディレクトリを変更する。


$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
  :
require_once __DIR__.'/../app/AppCache.php';


$loader = require_once __DIR__.'/../project/app/bootstrap.php.cache';
  :
require_once __DIR__.'/../project/app/AppKernel.php';

その後、ブラウザ確認のために、config.phpをコピーして編集。
上記と同様にrequire_onceのpathを修正します。

$ cp web/config.php ../www/
$ vi ../www/config.php

assetsはシンボリックリンクで対応しました。

$ cd ~
$ ln -s /home/example/project/web/bundles/ www/

ブラウザで確認
http://<example>.sakura.ne.jp/config.php

確認できたらconfig.phpは削除で。

CGI版だったり、モジュールまわりが難儀ですね。。。