De goede ontwikkelomgeving voor je Zend Framework applicatie

OK, nu we duidelijk hebben waarom we Zend Framework willen inzetten voor de bouw van onze site voor e-boeken en e-readers, wordt het tijd om je computer zodanig in te richten dat je  deze applicatie ook gemakkelijk kunt gaan bouwen. Ik ga ervan uit dat je al een werkende WAMP/MAMP/LAMP installatie hebt, omdat dit immers niet de eerste keer is dat je een php-website bouwt. Mocht dat niet zo zijn, dan raad ik je aan je te registreren bij Zend, en vervolgens Zend Server Community Edition te downloaden en installeren. Hierin zit alles wat je nodig hebt, inclusief een volledige versie van het Zend Framework. Moet je Zend Framework apart downloaden, dan is registratie niet per se nodig. Dat kan in tar.gz– of in zip-formaat.

Heb je wel de beschikking over de goede installatie, dan is het nu eerst tijd om de infrastructuur op te zetten om een nieuwe website aan te maken. Dit betekent:

  1. Check van je Apache configuratie
  2. Aanpassing van je hosts file
  3. Aanmaken van een nieuwe map, Zend Framework beschikbaar maken
  4. Start een nieuw Zend Framework project
  5. Een virtual host inrichten

1. Check van je Apache configuratie

Hier vind je een lijst van vereisten waaraan je Apache configuratie moet voldoen. Schrik er niet van; veruit de belangrijkste is mod_rewrite. Mod_rewrite is een Apache module die ‘mooie url’s’ toelaat. In plaats van http://www.raker.nl/index.php?controller=article&action=show&id=1234 krijg je http://www.raker.nl/artikel/1234/dit-is-de-titel (of zoiets). Zonder dat kán het Zend Framework wel werken, maar het is niet aan te raden.

Het is betrekkelijk simpel om deze aanpassingen uit te voeren. In een submap (meestal: conf) van je Apache installatie vind je het centrale configuratiebestand, httpd.conf genaamd. Zoek daarin de regel

[codesyntax lang=’apache’ title=’httpd.conf’]

LoadModule rewrite_module modules/mod_rewrite.so

[/codesyntax]

Indien er een hekje (#) voor deze regel staat, haal het dan weg. Als er geen hekje staat, hoef je niks te doen; mod_rewrite is dan al geïnstalleerd.

Verder is het handig om ook de vhosts-module te activeren; deze module staat je toe om virtual hosts in te richten, zodat je niet al je ontwikkelwerk onder één domeinnaam (meestal de standaard-ontwikkelnaam localhost) hoeft te doen. Zoek naar de regel

[codesyntax lang=’apache’ title=’httpd.conf’]

LoadModule vhost_alias_module modules/mod_vhost_alias.so

[/codesyntax]

en haal het hekje weg, indien het er staat.

Ten slotte, zoek naar

[codesyntax lang=’apache’ title=’httpd.conf’]

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

[/codesyntax]

En ook het hekje voor Include weghalen, indien het er staat.

2. Aanpassing van je hosts bestand

Het standaard Windows pad naar dit bestand is C:WindowsSystem32driversetc; in de meeste Unix/Linux varianten vind je het onder /etc/hosts. Let op: je moet admin-bevoegdheden hebben om dit te mogen bewerken. Met het hosts-bestand kun je je browser voor de gek houden; als je normaal gesproken google.com intikt in de adresbalk, kom je bij Google uit; stel nu dat je een nieuwe regel toevoegt aan je hosts bestand:

[codesyntax lang=’bash’ title=’hosts’]

127.0.0.1 www.google.com

[/codesyntax]

zou google vanaf dat moment onbereikbaar voor je worden. In plaats daarvan ga je naar het adres 127.0.0.1, wat een alias is voor localhost: je thuispagina van je lokale ontwikkelomgeving.

Dit is het moment om een goede naam voor ons nieuwe project te bedenken. O wacht, ik weet er een: elesio. Die naam moet in je hosts-bestand terecht komen. Nu is het natuurlijk handig om bij deze naam ook een top level domain op te geven; in een hosts bestand mag dat van alles zijn, dit hoeft geen officieel geregistreerd TLD te zijn. Voor ontwikkelomgevingen wordt aangeraden om een uniek TLD te bedenken, dat niet in werkelijkheid bestaat; zo weet je zeker dat je hosts bestand geen obstakels gaat bevatten voor het surfen wat je doet. Laten we er even vanuit gaan dat we elesio.nl geregistreerd hebben als de naam van je nieuwe site, waaronder die daadwerkelijk op internet te bereiken zal zijn; dan gaat-ie in ons hosts bestand elesio.local heten. local is geen officiële TLD, dus er kan nooit een conflict ontstaan. Als je naar elesio.local surft, kom je op je eigen ontwikkelsite uit; ga je naar elesio.nl, dan zit je in de productie-omgeving.

Zet je cursor op een nieuwe regel in het hosts bestand, en tik:

[codesyntax]

127.0.0.1 dev.elesio.local

[/codesyntax]

Zoals je ziet heb ik nog een subdomein dev benoemd; dan is het meteen duidelijk dat ik inderdaad in de ontwikkelomgeving ben. Mocht het nodig zijn, dan kan ik later een nieuw subdomein aanmaken om bijvoorbeeld bepaalde nieuwe functionaliteiten te testen.

3. Aanmaken van een nieuwe map, Zend Framework beschikbaar maken

Ik neem aan dat je ergens op je pc al over een standaard ontwikkelmap beschikt, ergens op een gemakkelijk bereikbare plek. Maak daarin een nieuwe submap aan, elesio getiteld. Als het  Zend Framework nog niet hebt gedownload, doe dat dan nu. Binnen deze download (na het uitpakken) vind je twee mappen, ‘bin’ en  ‘library’. Kopieer deze in hun geheel naar elesio, zodat daarin dezelfde twee submappen bin en library komen te staan.

4. Creëer een nieuw Zend Framework project

Open een nieuwe command prompt: Windows gebruikers, ga naar de Dos-prompt, binnen Linux en Mac gewoon een nieuwe shell openen. Navigeer naar je nieuw aangemaakte elesiomap. Werk je in Windows, type dan het commando binzf.bat create project ./ Linux en Mac gebruikers: ./bin/zf.sh create project ./ Vergeet hoe dan ook de laatste puntslash niet – die vertelt het zf script de locatie waar het nieuwe project moet worden aangemaakt, namelijk de huidige map.

Mappenstructuur Zend Framework applicatieProficiat. Als alles goed is gegaan, is nu je eerste ZFW project gecreëerd. Het script zf plaatst zelf alle mappen en bestanden op de goede plek zodat je applicatie de goede basisstructuur heeft. Er worden vier nieuwe mappen gegenereerd:

  1. application => hierin staan alle mappen en bestanden die je applicatie feitelijk laten werken. Het grootste deel van je tijd zul je ergens binnen deze map aan het werk zijn
  2. docs => geschikt voor alle documentatie en handleidingen die op je applicatie van toepassing zijn
  3. public => hierin komen je vanaf het web toegankelijke bestanden te staan: je afbeeldingen, javascript, stylesheets enzovoorts
  4. tests => voor de unit tests die je tijdens de bouw gaat uitvoeren

Later zullen we hier nog gedetailleerd doorheen lopen. Voor dit moment volstaat het even om de docs map te openen en de readme te bekijken die daarin is geplaatst. Die bevat nuttige informatie voor stap 5:

5. Een virtual host inrichten

Wat nu zo ongelooflijk handig is, is dat de readme.txt die in de docs map staat, eigenlijk al bijna de volledige configuratie bevat voor de virtual host die we nog moeten inrichten. In mijn geval staat er dit:

[codesyntax lang=’apache’ title=’readme.txt’]

<VirtualHost *:80>
DocumentRoot “D:/Documenten/development/elesio/public”
ServerName .local
# This should be omitted in the production environment
SetEnv APPLICATION_ENV development

Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</VirtualHost>
[/codesyntax]

Zoals je ziet, is het bijna de complete configuratie van de virtual host; alleen de ServerName directive moet nog worden aangepast. Zet daarin de naam zoals die ook in je hosts file staat; in mijn geval dus dev.elesio.local. Nu dien je er ten slotte nog voor te zorgen dat Apache de nieuwe virtual host ook herkent. Controleer daarvoor je apache handleiding; gebruik je ZendServer, open dan het bestand conf/extra/httpd-vhosts.conf. Als de directive NameVirtualHost *:80 hierin nog voorzien is van een hekje, haal het weg, kopieer en plak het vhosts-configuratiebestand erin. Apache opnieuw opstarten, en je bent klaar.

Proef op de som

Proef op de som? Open je browser. Surf naar http://dev.elesio.local, en je zou bijgevoegde afbeelding moeten tegenkomen. Zend Framework standaard afbeeldingAls het nou niet is gelukt, dan check je eerst de logfiles van je Apache webserver. Mogelijk vind je daarin een aanwijzing voor de oorzaak van de fout. Mogelijk worden toch niet alle benodigde modules geladen, of is er iets fout gegaan in de configuratie van de virtual host. Als je een probleem houdt, meldt het dan in de commentaren hieronder, dan kan ik kijken of ik kan helpen.

In de volgende aflevering: het Zend Framework nader bekeken.

2 Comments

  1. Sterk bericht. Deze pagina zet ik nu bij m’n bookmarks! Ik ben me sinds vorige week in dit onderwerp aan het verdiepen en ik denk dat ik hier maar eens vaker een kijkje ga nemen.

Comments are closed.