さくらレンタルサーバーへの Symfony Demo インストール
Symfony フレームワークを利用するあたっての学習の一環として、Symfony の デモページを さくらのレンタルサーバーに配置してみる作業を行ってみました。
配置済みのデモページは以下のURLの通りです。
https://toshiya.org/symfony_demo/
この作業を行うにあたっての、大きな問題点は以下の2点でした。
- さくらレンタルサーバーにはそのままの状態では Symfony は入れられない
- 手順通りに作成したデモページが動かない
これらの問題を以下の通り解決し、無事にインストールを完了しました。
さくらレンタルサーバーへの Symfonyのインストール
PHPのバージョン確認
以下のように確認したところ、私の環境では PHP5.4 になっていました。
% php --version PHP 5.4.45 (cli) (built: Feb 10 2016 10:17:56) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
PHP5.3以上であれば問題なく動くらしいのですが、さくらのサーバーコントロールパネルを開き、PHP5.6に更新しました。
確認後(5.6にアップグレードされています。)
% php --version PHP 5.6.18 (cli) (built: Feb 10 2016 10:19:55) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
Symfonyのインストールに必要なコンポーネントのインストール
Symfonyをサーバーで動かすためには、json, ctype, pdo_mysql, pdo_sqlite が必要になるらしいのですが、チェックしたところこちらは大丈夫そうでした。
% php -i | grep json json json support => enabled json version => 1.2.1 proto_binary_fetched_json => 0 % php -i | grep ctype ctype ctype functions => enabled % php -i | grep pdo_mysql API Extensions => mysqli,pdo_mysql,mysql pdo_mysql pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock % php -i | grep sqlite PDO drivers => mysql, sqlite pdo_sqlite sqlite3 sqlite3.extension_dir => no value => no value
その他に、icu と intl というライブラリが必要になることが分かりました。
ICU(International Components for Unicode)ライブラリのインストール
ICU ライブラリは C++ や java から呼び出せるネイティブコードで書かれたライブラリであり、PHPのintlコンポーネントが内部で呼び出して利用しています。
http://site.icu-project.org/
% cd ~/local/src % curl -O http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz % tar zxvf icu4c-57_1-src.tgz % cd icu/source % ./configure --prefix=$HOME/local % gmake % gmake install
intlのインストール
国際化拡張モジュールintlは、PHPにICUライブラリの機能を公開します。
この拡張機能は、バージョン5.3以降のPHPに含まれており、intlバージョン3.0はPHP 5.5から利用できます。
http://pecl.php.net/package/intl
% cd ~/local/src % curl -O http://pecl.php.net/get/intl-3.0.0.tgz % tar zxvf intl-3.0.0.tgz % cd intl-3.0.0 % phpize % ./configure --prefix=$HOME/local --with-icu-dir=$HOME/local % make $ mkdir ~/local/lib % mkdir ~/local/lib/php % mkdir ~/local/lib/php/extensions % cp ~/local/src/intl-3.0.0/modules/intl.so ~/local/lib/php/extensions
intl を利用できるように LD_LIBRARY_PATH を追加
% vi ~/.cshrc
以下の環境変数を追加
setenv LD_LIBRARY_PATH ~/local/lib/php/extensions
.cshrc の読込み
% source ~/.cshrc
xdebug のインストール
% curl -O https://xdebug.org/files/xdebug-2.4.0.tgz % tar zxfv xdebug-2.4.0.tgz % cd xdebug-2.4.0 % phpize % ./configure % make % cp modules/xdebug.so ~/local/lib/php/extensions/
【注意】さくらのレンタルサーバーには、Xdebug をインストールしない方が良いです。
php.ini の編集
さくらサーバーコントロールの「PHP設定の編集」から以下の設定を追加する
※ (your_account)の部分はご自身のさくらサーバーのアカウント名です。
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = "Asia/Tokyo" extension_dir = /home/(your_account)/local/lib/php/extensions extension=intl.so zend_extension = /home/(your_account)/local/lib/php/extensions/xdebug.so xdebug.remote_enable=1 ;xdebug.remote_host=121.2.XXX.XXX xdebug.remote_port=9000 xdebug.remote_handler=dbgp
動的ライブラリの読み込み確認
% php -c ~/www/php.ini -m
intl
xdebug
が表示されていれば完了
Symfony本体のインストール
% cd % mkdir local/bin % curl -LsS http://symfony.com/installer > symfony.phar % mv symfony.phar ~/local/bin/symfony % chmod a+x ~/local/bin/symfony % symfony
最後の symfony コマンドを実行すると、正しくインストールされていれば以下のようなメッセージが表示されます。
Symfony Installer (1.5.1) ========================= This is the official installer to start new projects based on the Symfony full-stack framework. To create a new project called blog in the current directory using the latest stable version of Symfony, execute the following command: symfony new blog Create a project based on the Symfony Long Term Support version (LTS): symfony new blog lts Create a project based on a specific Symfony branch: symfony new blog 2.3 Create a project based on a specific Symfony version: symfony new blog 2.5.6 Create a demo application to learn how a Symfony application works: symfony demo Updating the Symfony Installer ------------------------------ New versions of the Symfony Installer are released regularly. To update your installer version, execute the following command: symfony self-update
Symfonyデモページの作成
% cd ~/www % symfony demo
本番サーバーで動かす際の注意
Symfony デモのソースコードはローカルのDev環境での動作しますが、Prod(本番)環境ではデータベースの接続情報が設定されていない為、そのまま Webサーバーに配置しても動作しません。
このため Dev環境のDB接続設定を Prod環境にもコピーします。
~/www/symfony_demo/app/config/config_prod.yml を編集します。
#doctrine: # orm: # metadata_cache_driver: apc # result_cache_driver: apc # query_cache_driver: apc doctrine: dbal: # temp workaround for https://github.com/doctrine/dbal/issues/1106: define DB path here path: "%kernel.root_dir%/data/blog.sqlite"
修正を反映させるためにサーバー上のキャッシュの削除します
% cd ~/www/symfony_demo % php app/console c:c --env=prod --no-debug
ブラウザでの動作確認
PCのブラウザを開き、以下のURLを入力します。(XXXX は さくらインターネットの初期ドメイン名)
http://XXXX.sakura.ne.jp/symfony_demo/web/ にアクセスします。