Edited at

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

More than 3 years have passed since last update.

最近では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版だったり、モジュールまわりが難儀ですね。。。