Dans la lignée des quelques articles “cloud” dédiés à SQL Azure, voici un petit tutorial relativement simple qui permet de déployer un blog de type WordPress sur Azure. De manière plus générale, ce tutorial permet de déployer une solution PHP – SQL Server sur Azure.
Création de la base de donnée sur Azure:
En premier lieu il faut se connecter au portail azure et créer une nouvelle base de données.
On va ensuite définir un login, depuis SSMS (Comment se connecter à une base de données SQL Azure depuis SSMS ?) qui sera utilisé pour se connecter à la base de données. D’un point de vue des droits, on va aller à l’essentiel, ceux ci pourraient être affinés : db_ddladmin, db_datareader, db_datawriter.
Si vous souhaitez réaliser ces opérations par script, tenez compte du fait que l’ordre USE pour “changer” de base de donnée n’est pas autorisé ! Il vous faudra donc deux connexions, une vers la base virtuelle master afin de créer le login et ensuite une vers la base WordPress afin de créer et mapper le user.
-- =============================================== -- Create SQL Login template for SQL Azure Database -- =============================================== CREATE LOGIN LoginWP WITH PASSWORD = '' GO
-- ================================================= -- Create User as DBO template for SQL Azure Database -- ================================================= -- For login loginWP, create a user in the database CREATE USER userWP FOR LOGIN loginWP WITH DEFAULT_SCHEMA = dbo GO -- Add user to the database owner role EXEC sp_addrolemember N'db_ddladmin', N'userWP' EXEC sp_addrolemember N'db_datareader', N'userWP' EXEC sp_addrolemember N'db_datawriter', N'userWP' GO
Installation du site WordPress en local:
L’étape suivante consiste à déployer le site WordPress sur une machine de développement où IIS est installé. Les module prérequis pour installer WordPress seront automatiquement ajoutés lors de l’installation au travers du Web Installer, où comme ici, au travers de la page web Web App Gallery.
Le plus simple consiste à se rendre sur la page Windows WebApp Gallery et de sélectionner WordPress. L’assistant qui s’en suit permet d’installer tous les composants requis, y compris la base de données MySQL que l’on remplacera par MSSQL. Au travers de questions simples l’assistant vous permet de configurer IIS rapidement. Je passe donc sur ces étapes sans grande importance. |
|
Afin de pourvoir travailler avec Microsoft SQL Server, il est nécessaire d’installer une couche d’abstraction qui fera la “traduction” des ordres SQL. Pour cela, on télécharge le package WP Db Abstraction chez WordPress. |
|
Dans le répertoire wp_content du site WordPress, créer un répertoire mu-plugings
|
|
Extraire le fichier Upload wp-db-abstraction.php et le répertoire wp-db-abstraction directory vers wp-content/mu-plugins. |
|
Il faut aussi penser à installer les drivers d’accès à SQL Server depuis PHP. Le package d’installation se trouve à cette adresse. Extraire les fichiers dans le répertoire des extensions PHP. |
|
On va aussi ajouter les références des drivers SQL Server en ajoutant des extensions dans le fichier php.ini. |
|
Afin que le site WordPress prenne en compte la nouvelle base de données, on va simplement supprimer le fichier wp-config.php |
|
Et aller sur la page |
Même s’il y a un problème d’écriture du fichier, il suffit de procéder manuellement comme indiqué.
L’opération est terminée, on peut se connecter au portail d’administration et visiter le site en construction.
Maintenant que tout fonctionne en local, il est temps de déployer le site sur une plateforme Azure.
Le déploiement d’une solution PHP sur Azure:
Pour déployer un site sur un serveur Azure, il suffit d’“empaqueter” le site dans un fichier. Nous allons donc créer ce fichier de déploiement.
Tout d’abord, il convient de télécharger ici le SDK pour Visual Studio 2010 afin de pouvoir développer des solutions “cloud”. Principalement pour utiliser cspack.exe. Notez aussi que votre poste de développement doit avoir IIS 7.0 installé. |
|
L’installation ne pose pas de problème particulier. |
|
Ensuite, je vais m’appuyer sur la méthode décrite dans le blog de Karsten Januszewski. Je télécharge le fichier root.zip que j’extrait dans un répertoire temporaire. |
|
Il est temps de recopier tous (j’ai bien tous) les fichiers présent dans le répertoire racine de votre site web, y compris les fichiers html, jpg et autres. Ne surtout pas essayer de supprimer quoi que ce soit non plus. |
|
Afin de déployer un service sur Azure, il est nécessaire d’avoir un fichier de configuration et un fichier package. |
|
Si vous le souhaitez, vous pouvez modifier le fichier ServiceConfig.cscfg afin de ne créer qu’une seule instance du site. Dans ce cas, un avertissement vous informe qu’en cas de défaillance du serveur sur lequel réside votre site, il n’y aura plus de tolérance de panne et votre SLA n’est plus garanti. |
|
Maintenant, direction le portail Windows Azure afin de créer un nouveau service hébergé.
|
|
Donnez un nom au service, saisissez l’URL qui vous permettra d’accéder à votre site et nommez votre déploiement. Utilisez les boutons “Parcourir localement” afin de sélectionner le fichiers package et configuration qui sont présent dans le répertoire root. Et c’est tout ! |
|
Enfin presque, il faut ensuite une bonne dose de patience pour attendre que le site soit déployé. Profitez en pour faire une pause café de plusieurs minutes !!! |
|
Arghhhhh ! Il semble y avoir un petit soucis sur les chemins, les images sont attendues sur http://localhost/wordpress, mon URL de développement. |
|
Un petit SELECT sur la table wp_options nous permet d’espérer que la modification ne soit pas trop compliquée ! |
|
Un UPDATE sur la colonne option_value pour ajuster les 2 paramètres avec les valeurs correspondant à votre environnement. |
|
Les liens fonctionnent, le thème est pris en compte, il ne reste plus qu’à poster des messages. |
Bilan:
Je vous l’accorde, cette solution n’est pas parfaite, mais elle permet de déployer rapidement un site web, un blog en l’occurrence, en profitant de ce que nous offre le Cloud, à savoir un service et une base de données hébergés, le tout assorti de la tolérance de panne.
Il est fort probable qu’il existe d’autres méthodes de déploiement encore plus simple. J’ai voulu éviter tout recours à de la programmation, à Visual Studio …
D’un point de vue configuration il reste bien des choses à faire. La configuration WordPress (email, etc…) n’est pas l’objet de cet article, utilisez votre moteur de recherche favori pour trouver de la matière.
Par contre, si vous voulez activer l’upload de documents, je pense qu’une solution élégante consisterait à activer un compte de stockage sur la plateforme Azure.
Bon blogs…
Ping : Amazon RDS : premiers pas | Christophe LAPORTE – Consultant SQL Server