Cómo instalar WordPress en una carpeta de Azure Websites

A raíz de una consulta que me llega de Jesús González a través de Google+, parece que instalar WordPress en una carpeta de Azure Websites no es tan común como pensaba, o, al menos, no está demasiado documentada. La idea es que http://www.miwebsite.com/blog pueda alojar una instancia de WordPress, mientras que en el raíz se mantenga una aplicación .Net. Este mismo escenario es el que tengo yo aquí mismo, en este blog.

Para ello, la primera opción sería seguir uno de los tutoriales que existen para ello, como este: http://blogs.msdn.com/b/kaushal/archive/2014/04/19/microsoft-azure-web-sites-deploying-wordpress-to-a-virtual-directory-within-the-azure-web-site.aspx. Este tutorial aborda una instalación desde cero de WordPress, realizando una instalación en local a través de la galería de aplicaciones de WebMatrix, y realizando la publicación a posteriori sobre el website.

Sin embargo, se puede dar el caso de que ya dispongamos de un WordPress funcionando y no queremos que WebMatrix le meta mano a nuestro código. Para ello necesitaremos realizar un par de pequeñas modificaciones manuales.

En este post anterior, en el que desglosaba un poco los detalles técnicos que he utilizado para implementar esta web, ya indicaba la problemática de compartir WordPress con MVC en Azure, y cómo lo había solucionado, pero parece que el tema tiene entidad suficiente como para dedicarle este pequeño post.

Configurando el Website

El problema principal de intentar hacer convivir una aplicación basada en .Net con otra basada en PHP, como es el caso, es saber discernir cuándo las peticiones que recibe el website las tiene que manejar un framework y cuándo el otro. En este caso, todo lo que se reciba a la url “/blog” y por debajo de ésta, lo tiene que renderizar el motor de PHP, y, en concreto, WordPress. Todas las demás, dejaremos que las maneje .Net.

Para ello, añadiremos la siguiente configuración al archivo web.config que se encuentra en el raíz del sitio web:

De esta manera, utilizamos el módulo url_rewrite para enviar al motor de WordPress todas las peticiones que se reciban en la carpeta “/blog”

En segundo lugar, crearemos un segundo archivo web.config y lo alojaremos dentro de la carpeta “/blog”, con el mismo contenido:

Finalmente, también sería recomendable configurar el Website para indicarle que hay una aplicación virtual en la carpeta “/blog”, tal y como se indica en el enlace que he dejado al inicio.

Dependiendo del tipo de aplicación .Net que tengamos instalada, tendremos que decirle a su vez que ignore todas las peticiones a “/blog”. En mi caso,que utilizo MVC, esto se consigue añadiendo la siguiente configuración de enrutamiento:

En general, el concepto es el mismo para hacer convivir cualquier aplicación .NET y PHP:

  • Redirigir las peticiones desde la aplicación raíz a la carpeta de la otra aplicación
  • Configurar la aplicación raíz para que ignore las peticiones a la aplicación anidada.

¡Espero que os sea de utilidad!

  • Pablo Aguilar Lliguin

    tengo una duda por el lado bd usas una sola para toda la pagina o dos? una para el lado mvc y otra para wordpress? y por el mismo camino como se hace para gestionar la seguridad?

    • http://www.sergigisbert.com/ Sergi Gisbert

      Hola Pablo,

      bueno, en mi caso concreto mi app MVC no utiliza BD, pero en el caso de hacerlo tienes dos opciones:

      1. Utilizar la misma BD MySql que lleva WordPress para añadirle las tablas necesarias para tu app MVC, y en ésta, utilizar los conectores de BD de MySql de .Net para acceder a ellas. Te recomiendo utilizar un prefijo para las tablas, tipo “mvc_mitabla” para diferenciarlas de las nativas de WordPress.

      2. Utilizar dos BDs diferentes.

      Un saludo!
      Sergi

  • GonZoo

    • http://www.sergigisbert.com/ Sergi Gisbert

      Buenas Gon!

      supongo que querías comentar algo… pero creo que no se ha guardado bien :)

      Saludos!
      Sergi

      • GonZoo

        en realidad era comprobar una cosita, te la ocmento por chat