Configurar una red Multisitio con WordPress 3.0 sobre IIS 6 y MySQL.

Queremos configurar una red de blogs con WordPress.org y tenemos constancia de que su instalación nos va a resultar muy sencilla. Nos encontramos ante un ejemplo representativo de la tecnología LAMP. Programado en php, WordPress se comunica perfectamente con un sistema gestor de bases de datos MySQL mediante un servidor de aplicaciones Apache sobre un sistema operativo Linux. Bueno, bonito y barato…

Los problemas llegan cuando tenemos que adaptarnos al servidor que nos dan, y no es poco habitual que tenga las siguientes características. Sistema operativo Windows Server 2003 (tan obsoleto como presente en nuestras vidas), funcionando sobre el también anticuado Internet Information Server 6.0.

Vamos a ir instalando todas las utilidades necesarias paso a paso. Empezaremos por MySQL.

Instalación de MySQL en Windows Server 2003

Vamos a la web oficial de MySQL y descargamos la última versión gratuita disponible llamada MySQL Community Server . Yo he elegido el mirror de París.

Ejecutando este archivo el sistema nos muestra un asistente para la instalación del programa:

Aquí pulsamos “Next”, en la siguiente pantalla seleccionamos “Typical” volviendo a pulsar “Next” y en la siguiente (si no queremos modificar la ruta donde se va a instalar) pulsamos “Install”, esto provoca el comienzo de la instalación del programa, que una vez que termina muestra una pantalla donde tenemos que pulsar en “Finish”.

Una vez hecho esto, vamos a Inicio → Programas → MySQL → MySQL Server 4.1 → MySQL Server Instance Server Wizard (si es que no se ha abierto automáticamente).

En las sucesivas pantallas que se van mostrando al pulsar “Next” tenemos que seleccionar los siguientes datos (aunque siempre va a depender de nuestras propias necesidades):

  • En primer lugar marcaremos la opción Detailed Configuration y pulsaremos en “Next”, de esta forma podremos configurar más opciones de MySQL utilizando el asistente. Si marcásemos “Standard Configuration” el asistente nos pediría menos información pero habría que configurar algunas opciones manualmente.
  • Dependiendo del uso que queramos dar al equipo en el que se instala marcaremos una de las tres opciones:
    • Developer Machine: marcaremos esta opción si en el equipo donde hemos instalado MySQL Server se utiliza también para otras aplicaciones. MySQL Server utilizará la memoria mínima necesaria.
    • Server Machine: marcaremos esta opción si vamos a utilizar el equipo para algunas aplicaciones (no demasiadas). Con esta opción MySQL Server utilizará un nivel medio de memoria.
    • Dedicated MySQL Server Machine: marcaremos esta opción sólo si queremos utilizar el equipo como un servidor dedicado exclusivamente a MySQL. Con esta opción MySQL Server utilizará el máximo de memoria disponble. Se obtendrá un rendimiento elevado pero el equipo sólo servirá para MySQL. Yo he elegido esta última, ya que nuestro servidor va a estar dedicado exclusivamente a WordPress.
  • Dependiendo del uso que queramos dar a la Base de Datos marcaremos una de las tres opciones siguientes, normalmente se marcará Multifunctional Database salvo que queramos utilizar MySQL como base de datos para transacciones de otra Base de Datos MySQL.

  • Seleccionaremos la unidad y la carpeta donde queramos guardar los ficheros de datos (Tablespace)de la Base de Datos. A partir de la versión 4.0 de MySQL incorpora soporte para el control de la integridad referencial. A este nuevo tipo de tablas lo llama InnoBD.

  • Seleccionaremos ahora el número aproximado de conexiones concurrentes (varios clientes conectados a la vez) que tendra nuestro servidor de MySQL). La primera opción asume unas 20, la segunda unas 500 y la tercera permite especificarlas manualmente. Este parámetro es aproximado no tiene por qué ser exacto. Como pensamos crear una red multisite con bastantes blogs, la opción Online Transaction Processing puede ser la más adecuada.

  • Marcamos la casilla “Enable TCP/IP Networking”, establecer “Port Number” a 3306, marcar la casilla “Add firewall exception for this port” y marcar la casilla “Enable Strict Mode”.

  • Seleccionamos la opción “Best Support For Multilingualism” para establecer el encoding de la base de datos a UTF-8.

  • Marcamos las casillas “Install As Windows Service” e “Include Bin Directory in Windows PATH”, dejando el nombre del servicio por defecto.

  • Marcamos la casilla “Modify Security Settings”, estableciendo como usuario “root” y como contraseña “admin” (o la que queramos).

  • Pulsamos en “Execute” para que comience el proceso de configuración y cuando finalice podemos pulsar en “Finish”.

Tras la instalación podemos comprobar (si hemos seleccionado la opción de iniciar MySQL como servicio) que el servicio se está ejecutando. Esto se puede ver en el administrador de tareas.

Instalación de FastCGI para IIS 6.0

Ahora tenemos que conseguir que se ejecuten aplicaciones PHP sobre Windows Server 2003. Para ello nos descargaremos la extensión FastCGI, un protocolo estándar que permite que los archivos CGI ejecutables para entornos de aplicación interactúen con el servidor Web, ofreciendo rendimiento y estabilidad muy altos. Podemos instalarlo desde aquí.

Cuando se ejecuta el instalador FastCGI, se copian los archivos específicos de FastCGI en la carpeta “% windir % \ system32 \ inetsrv ” y, a continuación, se registra y habilita el servidor Web de extensión FastCGI. De los archivos que el programa de instalación copia, hay que tener en cuenta lo siguiente:

  • fcgiext.dll – Éste es el verdadero controlador de FastCGI que se comunica con los procesos habilitados FastCGI  para la tramitación de las solicitudes.
  • fcgiext.ini – Éste es el archivo de configuración que contiene la asignación de extensiones de archivos a los procesos FastCGI. También contiene la configuración de grupos de proceso FastCGI.
  • fcgiconfig.js – Esto configura la extensión FastCGI. La secuencia de comandos actualiza el archivo fcgiext.ini, modifica la metabase de IIS y recicla el grupo de aplicaciones del servicio Web si es necesario.

Descarga e instalación de PHP

Ahora nos disponemos a descargar el PHP. Nos descargamos el instalador desde el sitio oficial de PHP, después de instalar el FastCGI, este instalador se encarga del resto.

Nos descargamos el que dice “Non-thread-safe installer”, que es el adecuado para instalaciones sobre IIS. Es importante dirigirnos a donde dice Windows Binaries. Si lo bajamos de la página usual algunas cosas no funcionan bien. Por ejemplo, la librería php_curl.dll no funciona con los binarios genéricos.

Configurar la extensión FastCGI para trabajar con PHP

Para configurar manualmente la extensión y FastCGI de IIS, debemos crear asignaciones de scripts para la extensión de PHP en la metabase de IIS, y modificar el archivo fcgiext.ini que se encuentra en% windir % \ system32 \ inetsrv.

Para crear asignación de script:

  1. Ejecutamos inetmgr.exe.
  2. Hacemos doble clic en MiPC.
  3. Hacemos clic con el botón derecho en Mis sitios de red y hacemos clic en Propiedades.
  4. Vamos al directorio principal.
  5. Hacemos clic en configuración.
  6. Hacemos clic en Agregar.
  7. En el cuadro de diálogo Agregar o modificar asignación de extensión a aplicación hacemos clic en Examinar. Vamos al archivo fcgiext.dll que se encuentra en% windir % \system32\inetsrv.
  8. En la extensión del cuadro de texto, escribimos . php .
  9. En el cuadro de texto de la opción Limit to, escribimos GET, HEAD, POST .
  10. Habilitamos las opciones Script engine y Verify that the file exists.
  11. Hacemos clic en Aceptar .

Para modificar el archivo fcigext.ini:

Una vez que la asignación de script se ha añadido, modificamos el archivo fcgiext.ini.

  1. Agregamos una extensión de asignación de aplicación (php = PHP) a la sección [Tipos] .
  2. Añadir a la sección [PHP-ES] el ExePath = c: \ php \ php-cgi.exe (suponiendo que hemos instalado los archivos de PHP en la carpeta C: \ PHP).
  3. Después de guardar los cambios al archivo fcgiext.ini, reiniciamos el grupo de aplicaciones que está asociado con el sitio Web que aloja nuestras aplicaciones PHP.
[Types]
…
php=PHP
…
[PHP]
ExePath=c:\php\php-cgi.exe

Para configurar un documento predeterminado en IIS:

La mayoría de las aplicaciones PHP utilizan un archivo index.php, siendo este el fichero de solicitud por defecto. Configuraremos IIS para el tratamiento de este archivo como el contenido de la página por defecto.

  1. Lanzamos inetmgr.exe.
  2. Hacemos doble clic en el icono MiPC.
  3. Hacemos clic con el botón derecho en Mis sitios de red y hacemos clic en Propiedades.
  4. Hacemos clic en la pestaña Documentos.
  5. Hacemos clic en el botón Agregar.
  6. En el cuadro de diálogo Añadir contenido de página, en el cuadro de texto contenido de la página por defecto, escribimos index.php .
  7. Hacemos clic en Aceptar .

Establecer la configuración de FastCGI con óptima funcionalidad, seguridad y rendimiento con PHP

Para obtener la funcionalidad y rendimiento óptimos, configurar el servidor de la siguiente manera:

1. Modificar el php.ini archivo de la siguiente manera:

  • Establecemos fastcgi.impersonate = 1 . FastCGI bajo IIS admite la posibilidad de suplantar los tokens de seguridad del cliente que llama. Esto permite que IIS defina el contexto de seguridad bajo el cual la solicitud se ejecuta.
  • Establecemos cgi.fix_pathinfo = 1 . cgi.fix_pathinfo proporciona * real * PATH_INFO / support PATH_TRANSLATED para CGI. Anteriormente, el comportamiento de PHP era establecer PATH_TRANSLATED a SCRIPT_FILENAME, y no definir PATH_INFO. Para obtener más información sobre PATH_INFO, podemos consultar las especificaciones cgi. Al establecer este valor en 1, causamos que PHP CGI fije su ruta para que cumpla con la especificación.
  • Establecemos cgi.force_redirect = 0 .

2. Establecemos los parámetros de configuración FastCGI para la sección de PHP ejecutando fcgiconfig.js de la siguiente manera:

  • Establecer el proceso FastCGI propiedad piscina InstanceMaxRequests a 10.000 . Esta configuración especifica que la extensión FastCGI reciclará php-cgi.exe después de que ha tramitado 10.000 solicitudes de éxito.

cscript> fcgiconfig.js-set-sección: "PHP"-InstanceMaxRequests: 10000
3. Configuramos la extensión FastCGI para establecer las variables de entorno PHP_FCGI_MAX_REQUESTS para el proceso de PHP a 10 mil . Este valor indica a PHP-cgi.exe que se recicle después de haber tramitado 10.000 solicitudes de éxito.

fcgiconfig.js cscript>-set-sección: "PHP"-EnvironmentVars: PHP_FCGI_MAX_REQUESTS: 10000

Nota: Podemos configurar InstanceMaxRequests y PHP_FCGI_MAX_REQUESTS para que utilicen otros números en vez de 10000. Como regla general, nos aseguraremos de que el valor de InstanceMaxRequests es menor o igual al valor de PHP_FCGI_MAX_REQUESTS .

Prueba de PHP CGI

Después de instalar la extensión FastCGI y el registro y la configuración del CGI PHP, deberíamos poder solicitar nuestra aplicación PHP y comprobar que funciona.

Para probar la aplicación PHP, creamos y solicitamos una página phpinfo.php en el sitio que contiene lo siguiente:

<? php phpinfo (); ?>

Instalación de WordPress.

Llegados a este punto la instalación es muy sencilla.

En resumen lo que hay que hacer para instalarlo en IIS 6 es lo siguiente:

1. Creamos una base de datos en nuestro servidor de MySQL. Le ponemos el nombre que queramos. Creamos un usuario con acceso para crear y modificar datos y tablas.

2. Descomprimimos nuestra descarga de WordPress  y colocamos este fichero en nuestro directorio de publicación de IIS, tal como publicaríamos cualquier otro contenido. Ponemos un nombre  a la carpeta que será nuestra URL.

3. Abrimos nuestra consola de administración de IIS y nos creamos una nueva Application Pool. Por ejemplo, le ponemos de nombre PHP y dejamos los defaults. Ahora vamos al sitio web de nuestro WordPress, hacemos clic con el botón derecho, hacemos clic en propiedades y la convertimos como aplicación seleccionando la Application Pool que acabamos de hacer.



4. Revisamos la raíz de esta carpeta y le damos permiso al usuario IUSR_TUMAQUINA de escritura en la misma. Cuando acabemos le quitaremos este permiso.

5. Finalmente navegamos a nuestro sitio raíz y le decimos que queremos crear un archivo de configuración. Simplemente llenamos los formularios que el instalador de WordPress nos presenta.

Habilitar WordPress Multisite.

Realmente WordPress le llama a esto una red de sitios. Puede ser por dominio o por directorios. Como incluimos esta instalación en un directorio, sólo podemos usar subdirectorios.

Lo único que tenemos que hacer es abrir nuestro wp-config.php y agregar esta línea justo arriba de donde dice:

1
2
/* That's all, stop editing! Happy blogging. */
define('WP_ALLOW_MULTISITE', true);

Esto va habilitar la funcionalidad de Red. Ahora si vamos a nuestro Dashboard, veremos una nueva opción en el menú Administration > Tools llamada Network.

Le ponemos un nombre a nuestra red y continuamos. Nos aparecerá una pantalla en la que debemos realizar lo siguiente:

  1. Creamos un directorio llamado blogs.dir en nuestro directorio wp-content y damos permiso de escritura al usuario IUSR_TUMAQUINA.
  2. La segunda consiste en agregar estas líneas a nuestro wp-config.php. 
  3. Y ahora llega lo más engorroso. Si estuviéramos en IIS 7 con el módulo URL Rewrite nuestro WordPress nos pondría unas líneas para modificar el archivo web.config para que el IIS 7 hiciera las redirecciones. Pero como ya sabemos no es el caso. Tenemos que conformarnos con el IIS 6 así que WordPress nos pone las instrucciones de redirección como lo haría con Apache. Vamos a solucionar esto.

URL Rewrite con IIS 6

Vamos a utilizar un software gratuito llamado Ionic’s Isapi Rewrite Filter, que nos permitirá escribir un fichero .htaccess que IIS reconocerá tal y como lo haría Apache.

Vemos a continuación los pasos de instalación.

  1. Iniciamos el instalador.
  2. Aceptamos la licencia y seleccionamos instalar todo.
  3. Seleccionamos en cuál de nuestros sitios Web queremos colocar el filtro IIRF (es una librería IIRF.dll).
  4. Hacemos clic en instalar para que comience a instalar el software.

Lo que hace es copiar varios archivos a nuestro disco, darle permiso al grupo IIS_WPG para leer y colocar su librería IIRF.dll como filtro en el WebSite que le indicamos.

Los ficheros los coloca aquí.

El importante es el IIRF.dll del que ya habíamos hablado y el otro es el IirfGlobal.ini que se encarga de instrucciones globales como lanzar el Rewrite Engine o colocar el archivo de logs.

En cualquier caso, nosotros vamos a poner las instrucciones de redirección de forma local en nuestro directorio. Para eso lo convertimos en aplicación de IIS.

Ahora ya sólo queda poner las reglas que nos dijo WordPress, aunque no son exactamente iguales. Éstas son las reglas tal y como deben quedar para nuestra carpeta.

RewriteEngine On
# Redirecciona a la correcta pagina inicial del subsitio
RedirectRule ^([_0-9a-zA-Z-]+)$ $1/ [I]
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+)(\?.*)$ wp-includes/ms-files.php?file=$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes|login).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*attachment_id=.*)$ $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(\?.*)$ $2 [L]

RewriteRule . index.php [L]

Y así hemos llegado al fin de la instalación de la red multisitio de WordPress en estas peculiares condiciones. Con este mismo escenario se ha creado la red de blogs de la nueva página web de la Universidad Cardenal Herrera – CEU.
Éste es uno de los blogs de la red multisite. Blog de Sala Prensa

Un saludo.

Agradecimientos a: Guillermo Humberto Vera Amaro y Ruslan Yakushev

Publicado el 4 junio, 2011 en Prácticas con Redes y etiquetado en , , , , , , . Guarda el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: