CORESERVER(XREA)にsymfonyをインストールした手順

phpの構文は超基本しか知らない私ですが、今回、ちょっと色々なAPIを使ってちょっとしたWebアプリケーションなんぞを作ってみようと思ったところ、「PHPってどんなんよ?」なんてすごいところから始まって「どうやらMVC」という概念をちゃんと意識して機能(モデル)とデザイン(ビュー)を分けて作ったほうがいいというとこまでは理解しました。
そして、一番評判のよかったPHPの本を読みながらMVCフレームワークを自作すればよいのかと奮闘していたら、なんとまぁ世の中には既にMVCの概念を持ったすばらしいオープンソースのフレームワークが既にあるじゃない!
その中でもsymfonyというフレームワークが互換性や機能、特にAjaxにも対応していて情報量からみても一番適しているようなので、これを採用。
がしかし、所有しているサーバはCORESERVERで、PHPがSafeモードのために何やら普通にsymfonyをインストールしてセットアップしただけではダメらしい。
これまた忘れないうちに自分用メモ。
現在のCORESERVER(XREAも同様)は、PHP ver.5であり、既にsymfony自体はインストールされていたので、作業自体はsymfonyの一番大きな単位となるプロジェクト(例:ネットショッピング)を作成し、この特定のプロジェクト内であらゆる機能を持つアプリケーション(例:商品検索、カート機能、決済機能など)を必要に応じて個々に作成していく、という流れになります。
前提環境(例):
- サーバ : CORESERVER or XREA
- URL : http://hogehoge.com/
- サーバ上のパス : /virtual/myname/public_html/hogehoge.com
- symfonyのプロジェクトパス : /virtual/myname/public_html/my-prj
事前にやっておくこと
- CORESERVERの管理画面から、「ホスト情報の登録」を済ませておく。
※SSHのログインIDとパスワードは、FTPと一緒。 - SSHでアクセスするので、Windowsの場合は、TeraTermなどのターミナルソフトを入手しておく。
※Macは普通にターミナルでログインできる。
とりあえず、symfonyが入ってるかを一応チェック
SSHでサーバにログイン。
1 | ssh s***.coreserver.jp -l "UserName" |
とかでパスワード入力してそのままログイン。
以下で確認可能。
1 | symfony -V |
結果は例えばこんなん。
Content-type: text/html
symfony version 1.0.5
プロジェクトファイル群を置くためのディレクトリを作成
symfonyプロジェクト用のディレクトリは、公開用の実際のURL参照先となるドキュメントルート(/public_html/hogehoge.com)よりも上位の階層に作成。
1 2 | cd /public_html mkdir my-prj |
プロジェクトを初期化して関連ファイル群を作成
プロジェクト用のディレクトリに移動して、プロジェクト定義(以下の例では my-prj がプロジェクト名)。
1 2 | cd my-prj symfony init-project my-prj |
すると、/my-prj/ディレクトリの配下にこのような構成でフォルダとファイルが作成される。
my-prj/(プロジェクトフォルダ)
– apps/ アプリケーションフォルダ
– batch/ コマンドラインやスケジューラーから呼び出されるバッチファイル群
– cache/ 表示を高速化するためのキャッシュフォルダ
– config/ プロジェクトの設定ファイル群
– data/ データ用フォルダ
– doc/ ドキュメント用フォルダ
– lib/ 外部クラス・ライブラリ用フォルダ
– log/ symfonyによるログファイル群
– test/ 単体テスト用フォルダ
– web/ Webサーバー用ルートフォルダ
プロジェクト内で使用するアプリケーションを作成
実際のサイトの個々の機能を担うアプリケーションを作成。
ここではとりあえず、myapp という名前でアプケーションを作成。
1 | symfony init-app myapp index.php |
Webフォルダの移動
プロジェクトディレクトリ(my-prj)と実際のサイト用ディレクトリ(hogehoge.com)は異なるため、プロジェクトディレクトリに作成されたWebフォルダをサイト用のディレクトリに移動する。
1 2 | mv web/* /virtual/myname/public_html/hogehoge.com/ mv web/.htaccess /virtual/myname/public_html/hogehoge.com/ |
sfフォルダのシンボリックリンク作成
1 | ln -s /usr/local/lib/php/data/symfony/web/sf /virtual/myname/public_html/hogehoge.com/sf |
symfonyルートディレクトリの正規化
Webフォルダを移動したため、/virtual/myname/public_html/hogehoge.com/index.php のsymfonyルートディレクトリが正しく認識されるよう、viなどで編集。
1 2 | cd /virtual/myname/public_html/hogehoge.com vi index.php |
以下の箇所を
define(‘SF_ROOT_DIR’, realpath(dirname(__FILE__).’/..’));
以下に変更。
define(‘SF_ROOT_DIR’, realpath(dirname(__FILE__).’/../my-prj’));
PHPをCGI版モジュールとして動かす
CORESERVER, XREAは、PHPがセーフモードで動いているので、スクリプトからsymfonyのキャッシュやログファイルにアクセスできないため、そのままでは全く動きません。
そこでサイトのドキュメントルート(/virtual/myname/public_html/hogehoge.com)の.htaccessを以下のように編集して、PHPをCGI版で稼働するように定義。
1 | vi .htaccess |
としてviで.htaccessを開き、「i」キーで編集モードに変更後、以下をコピペして先頭に追加。
1 2 | AddHandler application/x-httpd-php5cgi .php mod_gzip_on Off |
「esc(エスケープ)」キーを押して、「:」「w」「q」として保存、viを閉じる。
動作確認
http://hogehoge.com/ にアクセスして、
Symfony Project Created
Congratulations! You have successfully created your symfony project.
と表示されればとりあえずsymfonyのプロジェクトとアプリケーションの作成は正常に完了。
以降は特に必要なし。
文字コード設定
同様に、/virtual/myname/public_html/hogehoge.com/php.ini をviで作成して以下を定義。
1 2 3 4 | register_globals = Off mbstring.language = Japanese mbstring.internal_encoding = UTF-8 magic_quotes_gpc = false |
config.phpの編集
/virtual/UserName/public_html/my-prj/config/config.php を編集。
viで以下の内容を追記。
SCRIPT_NAMEの削除、ロケール、文字コードの定義
1 2 3 4 | $_SERVER["SCRIPT_NAME"] = ""; setlocale(LC_ALL, 'ja_JP.UTF-8'); mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF-8'); |
※サイトがサブディレクトリである場合(http://hogehoge.com/myprj/ など)は、$_SERVER["SCRIPT_NAME"] = “/myprj”; などとする。
database.ymlの編集(※後からでも可)
/virtual/UserName/public_html/my-prj/config/database.yml を編集。
viで以下の内容に変更。
1 | dsn: mysql://DBユーザー名:パスワード@localhost/DB名 |
propel.iniの編集(※後からでも可)
/virtual/UserName/public_html/my-prj/config/propel.iniを編集。
viで以下の内容に変更。
1 | propel.database.url = mysql://DBユーザー名:パスワード@localhost/DB名 |
この記事のトラックバックURL