TRAJOIN is an Application to Translate symfony documents Jointly.

home > 1.2/cookbook/en > web_server_iis.txt

[1] Edit ↑TOP

IIS上でsymfonyをインストールする


[2] Edit ↑TOP

もちろん、ウェブサーバーに関してApache以外の選択肢があります。それがIIS上にsymfonyをインストールする方法のチュートリアルを見る理由です。


[3] Edit ↑TOP

何が必要でしょうか?


[4] Edit ↑TOP
  • Windowsサーバー(絶対)
  • IISサーバー(明らか)
  • PHP5がIISにインストールされisapiモジュールとして設定されている(PHP5のインストール方法の手引きを参照)
  • isapi/rewrite/ www.isapirewrite.com、Apacheのmod_rewriteを置き換えるために使うURL操作エンジン。なぜこの製品なのでしょうか?これは主にIIS上で利用されフリーなLiteバージョンはsymfonyに対して機能するからです。何か他の製品に慣れていたら、読み続ければ、このチュートリアルの最後の見出しのみに1つの違いがあるだけです。

[5] Edit ↑TOP

symfonyをインストールする


[6] Edit ↑TOP

最初に、PEARパッケージを行進して下さい。チャネルを取り扱うためにバージョン1.4.0以降が必要だからです:


[7] Edit ↑TOP
$ pear upgrade PEAR

[8] Edit ↑TOP

それからsymfonyのチャネルを追加して下さい:


[9] Edit ↑TOP
$ pear channel-discover pear.symfony-project.com

[10] Edit ↑TOP

ベータバージョン0.5.73以降のsymfonyをインストールして下さい:


[11] Edit ↑TOP
$ pear install symfony/symfony-beta

[12] Edit ↑TOP
: phingパッケージがない場合、同じようにインストールする必要があります:

$ pear install http://phing.info/pear/phing-current.tgz

[13] Edit ↑TOP

詳細な内容はsymfonyのインストール方法の章を調べて下さい。


[14] Edit ↑TOP

プロジェクトを初期化する


[15] Edit ↑TOP

プロジェクトのディレクトリ(c:\myprojectを使う場合)とmyappと呼ばれるアプリケーションのための基本的なツリー構造を作るために、コマンドコンソールを開き次の内容を入力して下さい:


[16] Edit ↑TOP
$ cd c:\myproject
$ symfony init-project myproject
$ symfony init-app myapp

[18] Edit ↑TOP

IISを設定する


[19] Edit ↑TOP

これから2つの設定オプションを考えます:


[20] Edit ↑TOP
  • 最初の場合、ウェブサーバーはsymfonyのプロジェクトのみに使われ、URLはhttp://myproject/のようなものだけです。myappディレクトリを作成したディレクトリがc:\myproject\であることを前提として、(IISの管理コンソール内で)ウェブサーバーのrootディレクトリをc:\myproject\webに設定します。

  • 他のオプションはサーバーの1つの(おそらくはバーチャルの)ディレクトリのsymfonyプロジェクトをインストールすることで、URLはhttp://myserver/myproject/のようなものになります。IISの管理コンソール内で、c:\myproject\webディレクトリに対してウェブサイトのroot上に新しいバーチャルディレクトリを作ります。


[21] Edit ↑TOP

バーチャルディレクトリをサーバーのメインディレクトリに追加します。これをsfと名付けpearディレクトリのdata\symfony\web\sfに設定します。デフォルトの設定でPHP5をc:\php5にインストールした場合、フルパスはc:\php5\PEAR\pear\data\symfony\web\sfです。


[22] Edit ↑TOP

URLの書き換えを設定する


[23] Edit ↑TOP

isapi/rewriteがサーバーにインストールされ機能していることを前提とします。まだISAPIを購入していないので、設定するのは1つのhttpd.iniファイルのみです。設定は以前定義したオプションに依存します:


[24] Edit ↑TOP
  • 我々が必要なhttp://myproject/のようなURLに対して:

[25] Edit ↑TOP


    # ワーム攻撃からコンピュータを守る
    RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

    # .html以外の.something拡張子を持つファイルをすべてスキップする
    RewriteCond URL .*\..+$
    RewriteCond URL (?!.*\.html$).*
    RewriteRule (.*) $1 [L]

    # .phpファイルはそのままにする
    RewriteRule (.*\.php)(.*) $1$2 [L]

    # 最後にフロントウェブコントローラにリダイレクトする
    RewriteRule (.*) /index.php [L]

[26] Edit ↑TOP
  • 我々が必要なhttp://myserver/myproject/のようなURLに対して:

[27] Edit ↑TOP


    # ワーム攻撃からコンピュータを守る
    RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

    # .html以外の.something拡張子を持つファイルをすべてスキップする
    RewriteCond URL /myproject/.*\..+$
    RewriteCond URL (?!/myproject/.*\.html$).*
    RewriteRule /myproject/(.*) /myproject/$1 [L]

    # .phpファイルはそのままにする
    RewriteRule /myproject/(.*\.php)(.*) /myproject/$1$2 [L]

    # 最後にフロントウェブコントローラにリダイレクトする
    RewriteRule /myproject/(.*) /myproject/index.php [L]

[28] Edit ↑TOP

IISを再起動します


[29] Edit ↑TOP

symfonyを設定する


[30] Edit ↑TOP

最後のステップはsymfonyプロジェクトのconfigディレクトリ内に設置されたsettings.ymlファイルを編集することです(我々の例ではc:\myproject\apps\myapp\config\です)。2つのオプションが少々異なっていることを発見しても驚かないでしょう:


[31] Edit ↑TOP
  • http://mproject/のようなURLに対しては、下記の行が必要です:

[32] Edit ↑TOP
    all:
     .settings:
       path_info_key:          HTTP_X_REWRITE_URL

[33] Edit ↑TOP
  • http://myserver/myprojectのようなURLに対しては、下記の行が必要です:

[34] Edit ↑TOP
    all:
     .settings:
       path_info_key:          HTTP_X_REWRITE_URL

[35] Edit ↑TOP
: isapi/rewrite/を使わない場合、HTTP_X_REWRITE_URLは間違っている可能性があります。symfonyの設定方法を知るために詳細なテストを作らなければなりません。プロジェクトのwebディレクトリ内のmyapp_dev.phpファイル(もしくはwhatever you named your application_dev.php)を開き、次の2行を追加します:

print phpinfo();
die();

では次のURL: http://myproject/myapp_dev.php/test/rewrite(もしくは設定に依存するhttp://myserver/myproject/myapp_dev.php/test/rewrite)を開き、PHP変数を見ます。_SERVER[\"PATH_INFO\"]が/test/rewriteと等しい場合、settings.ymlファイルからpath_info_key行を削除するか、この値(isapi/rewriteに対するHTTP_X_REWRITE_URL)を含む変数の名前を探さなければなりません。以前の2行を除去すれば、symfonyの準備が整います。


[36] Edit ↑TOP

独自のディレクトリ内でsymfonyアプリケーションを設定する


[37] Edit ↑TOP

symfonyプロジェクトはいくつかのアプリケーションを含みます。デフォルトの設定において、すべてのアプリケーションは同じCSSとアップロードディレクトリを共有します。これを変更し、myappアプリケーションに対して個別のディレクトリを作ります。以前のオプションを考慮して、次のURL: http://myproject/myapphttp://myserver/myappを実現することにします。今回、これらのオプション間の設定に違いはありません。


[38] Edit ↑TOP

symfonyプロジェクトのwebサブディレクトリ内にmyappサブディレクトリを作ります(我々の場合c:\myproject\web\myappです)。


[39] Edit ↑TOP

index.phpmyapp_dev.phpファイルをこのディレクトリにコピーし、cssuploadsという名前の2つのディレクトリを作ります。


[40] Edit ↑TOP

IISの管理コンソール内で、myappという名前のサーバーのroot上に新しいバーチャルディレクトリを作ります。このバーチャルディレクトリをc:\myproject\myappに設定します。


[41] Edit ↑TOP

httpd.iniファイルの最後で次の行を追加して下さい:


[42] Edit ↑TOP
  #[myappに直接アクセスするための設定]
  # .html以外の.something拡張子を持つファイルをすべてスキップする
  RewriteCond URL /myapp/.*\..+$
  RewriteCond URL (?!/myapp/.*\.html$).*
  RewriteRule /myapp/(.*) /myapp/$1 [L]

  # .phpファイルはそのままにする
  RewriteRule /myapp/(.*\.php)(.*) /myapp/$1$2 [L]

  # 最後にフロントウェブコントローラにリダイレクトする
  RewriteRule /myapp/(.*) /myapp/index.php [L]

[43] Edit ↑TOP

myappアプリケーションのsettings.ymlファイル(c:\myproject\apps\myapp\config\settings.yml)を編集し次の行を追加します:


[44] Edit ↑TOP
  all:
   .settings:
     path_info_key:          HTTP_X_REWRITE_URL

[45] Edit ↑TOP

(HTTP_X_REWRITE_URLに関する前回のノートを参照)


[46] Edit ↑TOP

最後に、フロントコントローラ(c:\myproject\web\myapp内のindex.phpmyapp_dev.php)の両方を編集し変更します:


[47] Edit ↑TOP

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));

[48] Edit ↑TOP

上記のコードを以下のようにします:


[49] Edit ↑TOP

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/../..'));

[50] Edit ↑TOP

これでお終いです。うまくゆきました。


Comments

Menu

Documentation



Latest Histories

Configuring a symfony app ...
brtRiver(2008-12-28 21:07:48)
- In the first case, the ...
brtRiver(2008-12-28 21:06:54)
$ cd c:\myproject ...
brtRiver(2008-12-28 21:06:20)
Installing symfony on IIS ...
brtRiver(2008-12-28 21:04:22)
$ cd c:\myproject ...
brtRiver(2008-12-28 11:47:03)
That's it, you' ...
brtRiver(2008-12-28 11:13:48)
[php] define( ...
brtRiver(2008-12-28 11:13:31)
to: ...
brtRiver(2008-12-28 11:13:24)
[php] define( ...
brtRiver(2008-12-28 11:12:43)
Finally, edit both front ...
brtRiver(2008-12-28 11:12:36)
(see previous note concer ...
brtRiver(2008-12-28 11:11:58)
all: .settin ...
brtRiver(2008-12-28 11:11:39)
Edit the file `settings.y ...
brtRiver(2008-12-28 11:11:31)
#[Configuration for ...
brtRiver(2008-12-28 11:11:13)
Add these lines at the en ...
brtRiver(2008-12-28 11:10:35)
In IIS administration con ...
brtRiver(2008-12-28 11:10:18)
Copy the files `index.php ...
brtRiver(2008-12-28 11:09:37)
Create a subdirectory `my ...
brtRiver(2008-12-28 11:09:22)
A symfony project may con ...
brtRiver(2008-12-28 11:09:07)
Configuring a symfony app ...
brtRiver(2008-12-28 11:08:46)

Untranslated