The symfony Cookbook

Hogyan állítsuk be a web szervert (Apache)

Be trained by symfony experts
Dec 10: Paris (1.1 - Francais)
Dec 10: Atlanta (1.1 - English)
Dec 17: Montreal (1.1 - Francais)
Jan 21: Paris (1.1 - Francais)
Feb 18: Paris (1.1 - Francais)
and more...

About

You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.

Search


powered by google

Chapter Content

Áttekintés

Bevezető

Virtual host

URL rewriting

Alias

Több alkalmazás egy projekten belül

Virtaul hostok

Aliasok

IIS

You are currently browsing "The symfony Cookbook" in Hungarian for the 1.2 version. Switch to another version: Switch to another language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed.

Áttekintés

Több módja is van a web szerver beállításának ha symfony alkalmazásokat szeretnénk futtatni. Ebben a fejezetben bemutatjuk a különböző konfigurációs lehetőségeket és néhány trükköt, optimalizációs lehetőséget.

Bevezető

Az alábbi példákban a myproject projekt egy myapp alkalmazást tartalmaz. Az alkalmazához tartozó front controller az index.php, ami a /home/steve/myproject/web/ könyvtárban foglal helyet. A symfony data könyvtárát a $data_dir jelöli.

Virtual host

A virtual hostolás lehetővé teszi a web szerver beállítását úgy, hogy a symfony alkalmazás a tartomány gyökerén (vagy egy altartományon keresztül) legyen elérhető.

http://myapp.example.com/

Tegyük fel, hogy Apache-ot futtatunk. A myapp alkalmazáshoz szükséges virtual host beállításhoz vegyük fel az alábbi sorokat a httpd.conf fileba:

<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>

Az Alias parancs ahhoz szükséges, hogy a debug eszköztár helyesen jelenjen meg. A $data_dir jelöli a PEAR data könyvtárának helyét. Például, *nix rendszereken, a következőt kell megadni:

Alias /sf /usr/local/lib/php/data/symfony/web/sf

A PEAR könyvtárakról további információ a telepítés fejezetben található.

Az Apache újraindítása után az alkalmázás az alábbi URL-en érhető el:

http://myapp.example.com/

vagy debug módban:

http://myapp.example.com/myapp_dev.php/

URL rewriting

Alapesetben a web szerver úgy van konfigurálva, hogy az éles rendszerhez (production) tartozó front controller (index.php) ne jelenjen meg az URL-ben. Ez azt jelenti, hogy az alábbi forma helyett

http://myapp.example.com/index.php/

használható a következőt is:

http://myapp.example.com/

Ehhez az Apache a mod_rewrite modult használja, és a következő soroknak kell jelen lenni a myproject/web/.htaccess-ben (ami alapbeállítás):

# all files with .something are skipped
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# the others are redirected to the front web controller
RewriteRule ^(.*)$ index.php [QSA,L]

Még egy kicsit felturbózhatók az URL-ek: egy .html kiterjesztéssel. A main modul index action hívásakor, a routing rendszer alapbeállításaival, a következő URL jelenik meg:

http://myapp.example.com/main/index

Az alapértelmezett settings.yml tartalmaz egy kikommentezett suffix paramétert:

all:
#  .settings:
#    suffix:        .

Ahhoz, hogy a fenti URL az alábbi formát vegye fel:

http://myapp.example.com/main/index.html

vegyük ki a kommentet az alábbi sorok elől:

all:
  .settings:
    suffix:        .html

Alias

Ha már rendelkezünk domain névvel, és szeretnénk, ha a symfony alkalmazásunk ezen tartományon belül legyen elérhető, akkor a virtual host nem a megfelelő választás. Például tegyük fel, hogy az alkalmazást a következő címen akarjuk elérni:

http://www.example.com/myapp/

Hogy ezt megtehessük a httpd.conf-hoz hozzá kell adni a következő sorokat:

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

Emellett a myproject/web/ könyvtárban található .htaccess fileban is módosítani kell az utolsó rewrite szabályt erről:

RewriteRule ^(.*)$ index.php [QSA,L]

erre:

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

Az Apache újraindítása után az alkalmazásunk immár így is elérhető:

http://www.example.com/myapp/

Több alkalmazás egy projekten belül

Fejlesztés közben előbb-utóbb találkozunk a következő problémával: hogyan érhetünk el több alkalmazás is a projektünkön belül. Például a myproject projektünk rendelkezik egy myapp alkalmazással a nagyközönségnek és egy admin alkalmazással a tartalmak kezeléséhez (ezt back-office-nak is szokták nevezni). Hogyan engedélyezhetjük a hozzáférést a különböző alkalmazásokhoz?

Virtaul hostok

Felvehetünk új virtual hostokat a httpd.conf fileba. Ez könnyen érthető:

<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>

Aliasok

Másik lehetőség új alias használata. Így különválaszhatók az egyes alkalmazásokhoz tartozó webes tartalmak (.css, .js, images, stb). Ezzel a módszerrel elkerülhetjük a httpd.conf szerkesztését.

Először hozzunk létre egy új könyvtárat a web alatt:

$ mkdir /home/steve/myproject/web/admin

Ezután tegyük át az admin alkalmazáshoz tartozó front controllereket az új könyvtárban, valamint másoljuk át a .htaccess filet is:

$ cd /home/steve/myproject/web
$ mv admin.php admin/index.php
$ mv admin_dev.php admin/
$ cp .htaccess admin/

Majd a fent ismertetett két utolsó lépéssel hozzunk létre egy aliast. Módosítsuk a myproject/web/admin/ könyvtárban található .htaccess-t:

RewriteRule ^(.*)$ index.php [QSA,L]

erre:

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

Végül mindkét front controllert (myproject/web/admin/index.php and myproject/web/admin/admin_dev.php) módosítani kell:

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

erre:

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

Készen is vagyunk, az admin alkalmazás most már elérhető:

http://whateveryourmainurlis/admin/

Megjegyzés: a web/admin könyvtárban létre kell hozni a web alatti könyvtárstruktúrát (css, js, images, uploads könyvtárakat), mivel mostmár minden root hivatkozás az admin/ könyvtárra mutat.

IIS

A symfony kompatibilis az IIS-sel. Minden további információ a telepítésről és konfigurálásról megtalálható a kapcsolódó leírásban.

Questions & Feedback

If you find a typo or an error, please register and open a ticket.

If you need support or have a technical question, please post to the user mailing-list or to the forum.