Webサーバーの設定

みっともないやり方

前の章で、プロジェクトをホストするディレクトリを作りました。 WebサーバーのWeb公開ディレクトリのルートで作って入れば、Webブラウザーでプロジェクトにアクセスできます。

もちろん、設定をしなければ、すぐにセットアップが終わりますが、ブラウザーでconfig/databases.ymlファイルにアクセスすると手抜きの結果がわかります。 Webサイトがsymfonyで開発されていることをユーザーが知ったら、たくさんの重要なファイルにアクセスされてしまいます。

運用サーバーでこのやり方をけっして実行しないでください。 Webサーバーを適切に設定するやり方を学ぶには次のセクションをご覧ください。

セキュアなやり方

Webのグッドプラクティスによれば、Web公開ディレクトリのルートではスタイルシート、JavaScriptと画像のようなWebブラウザーがアクセスするのに必要なファイルだけを設置します。 そしてデフォルトでは、symfonyプロジェクトのweb/サブディレクトリの下でこれらのファイルを保存することをおすすめします。

このディレクトリを見てみると、Webアセット(css/images/)と2つのフロントコントローラーファイル用のサブディレクトリが見つかります。 フロントコントローラーはPHPのみのファイルでWeb公開ディレクトリのルートに置く必要があります。 ほかのすべてのPHPファイルはブラウザーから隠され、セキュリティに関してこれはよいアイディアです。

Webサーバーの設定

世界中から新しいプロジェクトにアクセスできるようにApacheの設定を変更しましょう。

httpd.conf設定ファイルを見つけて開き次の設定を最後の行に追加します:

# Be sure to only have this line once in your configuration
NameVirtualHost 127.0.0.1:8080

# This is the configuration for your project
Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
  DocumentRoot "/home/sfproject/web"
  DirectoryIndex index.php
  <Directory "/home/sfproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /home/sfproject/lib/vendor/symfony/data/web/sf
  <Directory "/home/sfproject/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

NOTE /sfエイリアスによってsymfonyのデフォルトページとWebデバッグツールバーを適切に表示するために必要な画像とJavaScriptファイルにアクセスできるようになります。

Windowsでは、Aliasの行を次のように置き換える必要があります:

Alias /sf "c:\dev\sfproject\lib\vendor\symfony\data\web\sf"

そして/home/sfproject/webは次のように置き換えます:

c:\dev\sfproject\web

この設定によってApacheはマシンのポート番号8080をリスニングするようになり、Webサイトは次のURLからアクセスできるようになります:

http://localhost:8080/

8080は任意の番号に変更できますが、管理者権限が必要ない1024より大きな番号が望ましいです。

SIDEBAR 専用のドメイン名を設定する

マシンの管理者であれば、新しいプロジェクトを始めるたびに新しいポートを追加するよりもバーチャルホストをセットアップするほうがよいやり方です。 ポートを追加する代わりにListenステートメントを追加し、ドメイン名を選びServerNameステートメントを追加します:

# This is the configuration for your project
<VirtualHost 127.0.0.1:80>
  ServerName sfproject.localhost
  <!-- same configuration as before -->
</VirtualHost>

Apacheで使われるドメイン名であるsfproject.localhostはローカルで宣言しなければなりません。 Linuxシステムを稼働させている場合、/etc/hostsファイルで作業を行います。 Windows XPを稼働させている場合、このファイルはC:\WINDOWS\system32\drivers\etc\ディレクトリに設置されています。

次の行を追加します:

127.0.0.1 sfproject.localhost

新しい設定をテストする

Apacheを再起動し、ブラウザーを開きhttp://localhost:8080/index.php/もしくはhttp://sfproject.localhost/index.php/から新しいアプリケーションにアクセスできることを確認します。 URLは前のセクションで選んだApacheの設定方法によります。

初期ページ

TIP Apacheのmod_rewriteモジュールをインストールしていれば、URLのindex.php/の部分を取り除くことができます。 これはweb/.htaccessファイルで設定されるルールを書き換えることで実現可能です。

開発環境のアプリケーションにもアクセスしてみます(環境の詳細は次のセクションを参照)。 次のURLを入力します:

http://sfproject.localhost/frontend_dev.php/

Webデバッグツールバーは右上コーナーに表示されます。 小さなアイコンが含まれるのはsf/エイリアスが正しいことを証明します。

Webデバッグツールバー

Note Windows環境のIISでsymfonyを稼働させたい場合、セットアップ方法は少し異なります。 関連チュートリアルで設定方法がわかります。