TRAJOIN is an Application to Translate symfony documents Jointly.

home > 1.2/cookbook/en > web_server.txt

[1] Edit ↑TOP

ウェブサーバーの設定をする方法


[2] Edit ↑TOP

概要


[3] Edit ↑TOP

symfonyアプリケーションにアクセスできるようにするためにウェブサーバーを設定する方法は複数あります。この章では異なる設定方法とアクセスを最適化するためのこつを説明します。


[4] Edit ↑TOP

はじめに


[5] Edit ↑TOP

上で説明した例において、myprojectプロジェクトはmyappアプリケーションを含みます。このアプリケーションのフロントコントローラはindex.phpと呼ばれ/home/steve/myproject/web/ディレクトリ内に存在します。symfonyのデータディレクトリは$data_dirです。


[6] Edit ↑TOP

バーチャルホスト


[7] Edit ↑TOP

バーチャルホスティングのおかげでsymfonyアプリケーションがドメイン(もしくはサブドメイン)のrootに表示されるようにウェブサーバーをセットアップできます:


[8] Edit ↑TOP
http://myapp.example.com/

[9] Edit ↑TOP

Apacheサーバーを稼働させることを前提とします。myappアプリケーションのためにバーチャルホストをセットアップするために、次の行をhttpd.confファイルに追加します:


[10] Edit ↑TOP
<Directory "/$data_dir/symfony/web/sf">
 AllowOverride All
 Allow from All
</Directory>
<VirtualHost *:80>
  ServerName myapp.example.com
  DocumentRoot "/home/steve/myproject/web"
  DirectoryIndex index.php
  Alias /sf /$data_dir/symfony/web/sf

  <Directory "/home/steve/myproject/web">
   AllowOverride All
   Allow from All
  </Directory>
</VirtualHost>

[11] Edit ↑TOP

真ん中のAliasディレクティブはデバッグ用のサイドバーの画像を表示するために必要です。$data_dirプレースホルダはPEARのdataディレクトリに置き換えなければなりません。例えば、*nixに対しては、次の行を入力します:


[12] Edit ↑TOP
Alias /sf /usr/local/lib/php/data/symfony/web/sf

[13] Edit ↑TOP

PEARディレクトリについてもっと詳しい情報はインストールの章で見つかります


[14] Edit ↑TOP

Apacheを再起動すれば作業は終了です: ウェブアプリケーションは呼び出し可能になり標準的なウェブブラウザを通して次のURLで閲覧できます:


[15] Edit ↑TOP
http://myapp.example.com/

[16] Edit ↑TOP

デバッグモードの場合次のURLです:


[17] Edit ↑TOP
http://myapp.example.com/myapp_dev.php/

[18] Edit ↑TOP

URLの書き換え


[19] Edit ↑TOP

デフォルトでは、ウェブサーバーはURL内で本番環境のフロントコントローラ(index.php)を参照することを回避するように設定されます。このことは次のURLを表示する代わりに:


[20] Edit ↑TOP
http://myapp.example.com/index.php/

[21] Edit ↑TOP

サーバーは下記のURLを表示し認知することを意味します:


[22] Edit ↑TOP
http://myapp.example.com/

[23] Edit ↑TOP

これを実現するためにはApacheのmod_rewriteモジュールを利用して、myproject/web/.htaccess内に存在する次の行を必要とします(下記はデフォルトの場合):


[24] Edit ↑TOP
# .somethingを持つすべてのファイルをスキップする
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# その他はフロントウェブコントローラにリダイレクトされる
RewriteRule ^(.*)$ index.php [QSA,L]

[25] Edit ↑TOP

URLの最後に.htmlを追加したい場合、見た目の修正方法は複数存在します。通常、mainモジュールのindexアクションを呼び出すとき、デフォルトのルーティング設定によって、表示されるURLは次のようになります:


[26] Edit ↑TOP
http://myapp.example.com/main/index

[27] Edit ↑TOP

アプリケーションのデフォルトのsettings.ymlファイルはコメントになっているsuffixパラメータを含みます:


[28] Edit ↑TOP
all:
#  .settings:
#    suffix:        .

[29] Edit ↑TOP

mainモジュールのindexアクションを次のように表示するためには:


[30] Edit ↑TOP
http://myapp.example.com/main/index.html

コメントを解除してsuffixパラメータの値を.htmlに設定できます:


[31] Edit ↑TOP
all:
  .settings:
    suffix:        .html

[32] Edit ↑TOP

エイリアス


[33] Edit ↑TOP

既存のドメイン名の上にウェブサイトを持っており、symfonyのアプリケーションをそのドメイン内でアクセスできるようにしたい場合、バーチャルホストの解決方法ではうまくゆきません。例えば、symfonyのアプリケーションにアクセスしたい場合を考えましょう:


[34] Edit ↑TOP
http://www.example.com/myapp/

[35] Edit ↑TOP

これを実現するためには、httpd.confファイルを開き、次の行を追加します:


[36] Edit ↑TOP
Alias /myapp/ /home/steve/myproject/web/
<Directory "/home/steve/myproject/web">
   AllowOverride All
   Allow from All
</Directory>

[37] Edit ↑TOP

myproject/web/ディレクトリに設置されている.htaccessファイルも編集し、最後の書き換えルール


[38] Edit ↑TOP
RewriteRule ^(.*)$ index.php [QSA,L]

[39] Edit ↑TOP

を次のように変更します


[40] Edit ↑TOP
RewriteRule ^(.*)$ /myapp/index.php [QSA,L]

[41] Edit ↑TOP

Apacheを再起動し、ウェブアプリケーションにアクセスしてみます:


[42] Edit ↑TOP
http://www.example.com/myapp/

[43] Edit ↑TOP

1つのプロジェクト内で複数のアプリケーション


[44] Edit ↑TOP

プロジェクトの設計過程の期間において、1つもしくは複数のアプリケーションの問題に遭遇します。例えば、myprojectプロジェクト内で、myappアプリケーションを公開してadminアプリケーションが内容を管理するとします(通常はバックオフィスと呼ばれます)。1つのプロジェクトの範囲内で複数のアプリケーションにアクセスすることを許可するためにはどうしたらよいでしょうか?


[45] Edit ↑TOP

バーチャルホスト


[46] Edit ↑TOP

新しいバーチャルホストをApacheのhttpd.confファイルに追加します。これはかなり簡単に理解できます:


[47] Edit ↑TOP
<Directory "/$data_dir/symfony/web/sf">
 AllowOverride All
 Allow from All
</Directory>

<VirtualHost *:80>
  ServerName myapp.example.com
  DocumentRoot "/home/steve/myproject/web"
  DirectoryIndex index.php
  Alias /sf /$data_dir/symfony/web/sf

  <Directory "/home/steve/myproject/web">
   AllowOverride All
   Allow from All
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName admin.example.com
  DocumentRoot "/home/steve/myproject/web"
  DirectoryIndex admin.php
  Alias /sf /$data_dir/symfony/web/sf

  <Directory "/home/steve/myproject/web">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

[48] Edit ↑TOP

エイリアス


[49] Edit ↑TOP

別の方法としては、新しいエイリアスを追加できます。この設定によってそれぞれのアプリケーションごとに切り離されたウェブの内容(.css、.js、images、など)を持つことができるようになります。これによってhttod.confファイルを直接編集しなくて済みます。


[50] Edit ↑TOP

最初に、webディレクトリ内に新しいディレクトリを作ります:


[51] Edit ↑TOP
$ mkdir /home/steve/myproject/web/admin

[52] Edit ↑TOP

それから、adminアプリケーションのフロントコントローラをこの新しいディレクトリに移動させて、この新しいアプリーションのために.htaccessファイルをコピーします:


[53] Edit ↑TOP
$ cd /home/steve/myproject/web
$ mv admin.php admin/index.php
$ mv admin_dev.php admin/
$ cp .htaccess admin/

それから、エイリアスをセットアップするために上で説明した2つのステップを実行します。myproject/web/admin/ディレクトリに設置された.htaccessファイルのコード:


[54] Edit ↑TOP
RewriteRule ^(.*)$ index.php [QSA,L]

[55] Edit ↑TOP

を次のように変更します


[56] Edit ↑TOP
RewriteRule ^(.*)$ /admin/index.php [QSA,L]

[57] Edit ↑TOP

最終的に、両方のフロントコントローラ(myproject/web/admin/index.phpmyproject/web/admin/admin_dev.php)を編集し変更します:


[58] Edit ↑TOP

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

[59] Edit ↑TOP

変更後は次の通りです:


[60] Edit ↑TOP

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

adminアプリケーションにアクセスできるようにするためにはこれで十分です:


[61] Edit ↑TOP
http://whateveryourmainurlis/admin/

[62] Edit ↑TOP
: (cssjsimagesuploadsディレクトリを持つ)古典的なwebディレクトリのようにweb/adminディレクトリ内で同じファイル構造を再現する必要があります。現時点でのrootへのすべてのパスはこのadminディレクトリを指し示すからです。


[63] Edit ↑TOP

IIS


[64] Edit ↑TOP

symfonyはIISと互換性があります。IIS環境でsymfonyプロジェクトのインストールと設定方法についてすべてを学ぶためには、関連チュートリアルをご覧下さい。


Comments

Menu

Documentation



Latest Histories

Multiple applications wit ...
brtRiver(2008-12-28 21:02:38)
http://myapp.example. ...
brtRiver(2008-12-28 21:01:59)
Alias ----- ...
brtRiver(2008-12-28 20:58:45)
Virtual host ------------ ...
brtRiver(2008-12-28 20:58:06)
Introduction ------------ ...
brtRiver(2008-12-28 20:57:45)
Overview -------- ...
brtRiver(2008-12-28 20:57:28)
How to configure a web se ...
brtRiver(2008-12-28 20:56:42)
Symfony is compatible wit ...
brtRiver(2008-12-28 10:56:39)
IIS --- ...
brtRiver(2008-12-28 10:56:13)
>**Note**: you will ne ...
brtRiver(2008-12-28 10:55:59)
http://whateveryourma ...
brtRiver(2008-12-28 10:55:33)
[php] define( ...
brtRiver(2008-12-28 10:55:25)
to: ...
brtRiver(2008-12-28 10:55:04)
[php] define( ...
brtRiver(2008-12-28 10:54:45)
Eventually, edit both fro ...
brtRiver(2008-12-28 10:53:21)
RewriteRule ^(.*)$ /a ...
brtRiver(2008-12-28 10:52:55)
$ cd /home/steve/mypr ...
brtRiver(2008-12-28 10:52:46)
Then, move the front cont ...
brtRiver(2008-12-28 10:52:26)
$ mkdir /home/steve/m ...
brtRiver(2008-12-28 10:52:11)
First, create a new direc ...
brtRiver(2008-12-28 10:52:02)

Untranslated