WordPress op Azure (Maar dan zonder mySQL en met Azure SQL :-)
Het is inmiddels wel bekend dat je WordPress op Windows en ook op Azure kan draaien. PHP draait dan op een versie van IIS en de database komt op een mySQL server.
Maar zou je ook mySQL kunnen vervangen voor het Microsoft alternatief? Dus WordPress draaien op een Azure “web sites” stack bestaande uit alleen maar pure Microsoft componenten: Windows, IIS en Azure SQL?
Hier lees je stap voor stap hoe je dit zou kunnen doen.
Let op: Dit is experimenteel en ik kan je op dit moment niet aanraden hiermee in productie te gaan!
** Azure Web Sites
Allereerst maken we een nieuwe website met bijbehorende database aan. Ga naar de Azure management omgeving (http://manage.windowsazure.com)
Maak een website aan en ook een SQL database. Uiteraard kan je er ook voor kiezen om de database met de hand aan te maken en die te gebruiken, maar in dit voorbeeld doe ik het in 1 klap met dezelfde wizard:
Kies een SQL Server, bedenk en onthoud de accountgegevens die je gaat gebruiken:
** Azure Web Sites FTP toegang
Maak credentials aan zodat je naar deze machine kan FTP-en:
Met deze nieuwe user / pass, kan je met je FTP programma naar de “webroot” connecten. De FTP hostname die je moet gebruiken voor je server vind je ook aan de rechterkant.
Deze gebruik je in je FTP programma:
** PHP MS SQL (SQLSRV Extension)
Voor het straks connecten van PHP met MS SQL, heb je een PHP extensie nodig.
UPDATE: Het lijkt erop dat op het moment van schrijven van dit artikel de PHP extensie die je nodig hebt tegenwoordig standaard al geinstalleerd is. Probeer dit uit met phpinfo, kijk of de SQLSRV extension er tussen staat. Zoja, dan kan je dit hoofdstukje overslaan en direct door naar “WordPress en plugin installatie”
Mocht je de extension toch nog niet hebben, dan installeer je deze als volgt op Azure web sites :
Download allereerst de betreffende driver. Deze drivers worden gemaakt door Microsoft en je vindt de MS SQL PHP drivers hier:
https://www.microsoft.com/en-us/download/details.aspx?id=20098
Ik heb versie 3 gebruikt. De .EXE is een archief. Pak deze uit en FTP hem naar je website. Ik heb ervoor gekozen om de hele inhoud naar een mapje met de naam “extensions” in de wwwroot te FTP-en:
Ga in de Azure console naar manage website en ga naar Website –> Configuration
In de app settings, maak een nieuwe key aan met de naam “PHP_EXTENSIONS” en als waarde “php_sqlsrv_53_nts.dll” (Dit is de non thread safe versie voor PHP 5.3)
ps. voor meer info over alles wat je kan instellen op dit gebied, lees dit https://www.windowsazure.com/en-us/develop/php/common-tasks/configure-php-web-site/#ChangeDefaultPHP
Daar lees je ook dat je altijd de non-thread safe versie van uitbreidingen moet gebruiken.
En druk op Save (onderaan de pagina). Wat dit onder water doet is deze optie in php.ini aanpassen. Na het drukken op Save wordt de configuratie van je webserver opnieuw geladen.
Ps. Je kan testen en zien welke PHP extensies er zijn geladen door een test PHP file te maken met alleen phpinfo(); Roep deze pagina aan in een browser en bekijk de output. Naar aanleiding van bovenstaande zul je in phpinfo ergens dit vinden:
** WordPress en plugin installatie
We zijn er bijna. Nu gaan we WordPress installeren met de aangepaste databaselaag (die dus werkt met MS SQL ipv met mySQL)
Download de laatste versie van WordPress , ik doe dat uiteraard op http://nl.wordpress.org/
Pak uit naar een map. FTP de inhoud van deze map naar de Azure website. Deze bestanden moeten terrecht komen in sites\wwwroot :
Na het uploaden van je uitgepakte WordPress pakket ziet het er dus zo uit:
Let op, nog niet naar de website gaan! We moeten eerst nog de plugin installeren die ervoor gaat zorgen dat WordPress van SQL Server gebruik gaat maken in plaats van mySQL.
Dat is deze plugin:
http://wordpress.org/extend/plugins/wordpress-database-abstraction/
Download de ZIP file en pak hem lokaal uit. Je vind een map “wp-db-abstraction” , dit is de plugin. Ook vind je wat txt bestanden en een php file “wp-db-abstraction.php”.
Let op, dit is geen gewone plugin zoals we gewend zijn, maar een zogenaamd “must use” plugin. Dit type plugins dient geinstalleerd te worden in wp-content/mu-plugins . Deze bestaat waarschijnlijk nog niet als je WordPress net nieuw hebt geinstalleerd, dus maken we deze eerst aan.
Vervolgens FTP-en we het mapje “wp-content/mu-plugins” in deze net aangemaakte map:
Vervolgens FTP-en we de file met de naam “db.php” (deze file vind je in de map wp-db-abstraction) naar de wp-content map:
Nu moet de plugin nog geconfigureerd worden, voordat WordPress kan starten. Voor het configureren van de plugin gaan we met de browser naar $your_wordpress_url/wp-content/mu-plugins/wp-db-abstraction/setup-config.php
Voor $your_wordpress_url vul je uiteraard de URL van je website in. Deze vind je in de Azure management console aan de rechterkant (Site URL):
De compleet op te vragen URL om de wizard te starten is in mijn geval dus:
http://kt2012.azurewebsites.net/wp-content/mu-plugins/wp-db-abstraction/setup-config.php
Het aanroepen van de URL genereerd een wp-config.php file met de juiste informatie in de wwwroot. Dit gebeurt via een wizard. Deze gegevens dien je bij de hand te hebben. Deze heb je hierboven bij het aanmaken van de website + SQL zelf opgegeven.
Behalve de database host, deze moet je waarschijnlijk nog even opzoeken. Je vind dit in de Azure management console. Bij je website vind je een tab “Linked resources”. Klik deze en je ziet de bijbehorende database . Klik op de database en je komt in het database management. Links zie je bij “Quick Glance” een optie om de verschillende connectie strings te bekijken:
Dit zijn de gegevens die je in de wizard kan gebruiken. En voor database type kies je “SQL Server using MS PHP driver” .
Geheel ingevuld levert dit het volgende op:
En als je alles goed hebt gedaan, is dit je beloning:
Nu kunnen we WordPress gaan installeren zoals we dat gewend zijn. Je start de beroemde 5 minutes WordPress installer met een druk op bovenstaande knop “run the install” of door naar de URL te gaan van je website.
Als je klaar bent heb je een WordPress site draaien op 100% Azure componenten!
Zoals gezegd:
- ik heb er nog geen productie ervaring mee
- de gebruikte WordPress plugin is meer dan een jaar niet onderhouden
Graag hoor ik jullie ervaringen!
Reacties