Cómo crear una Multisite Network con WordPress 3.0 sobre IIS 6.0

Español | English


Como todos sabemos, WordPress dio luz a su nueva versión 3.0 (ahora ya disponible la 3.0.1) la cuál introduce un feature que todos estábamos esperando: la capacidad de Multi-Sitio, es decir; contar con varios sitios de WordPress pero administrados desde una consola central.

La instalación de WordPress, como siempre, es ridículamente sencilla. Pero hay ciertos detalles respecto a usar la característica multisite sobre Internet Information Server 6.0 en un Windows 2003 Server. En apache (Linux o Windows) ó IIS 7, no te preocupes, funciona out-of-the box con el módulo Url-Rewrite correspondiente.

Paso 1. Descarga de WordPress.

Lo más simple del mundo, ve al sitio de wordpress y descarga la última versión: http://wordpress.org/download/


Descomprimes la carpeta y la pones en tu directorio de publicación del IIS (si, la puedes dejar en inetpub\wwwroot si quieres, no estamos fijándonos en la seguridad ni nada).

Nota. Si lo andas buscando en español, no te recomiendo que lo bajes directamente de acá http://es.wordpress.org/ pues hay unos archivos de configuración en el directorio raíz que tienen espacios al final del archivo y eso no le gusta al instalador de WordPress. No se si ya lo hayan arreglado, pero hasta ahora siguen igual y tendrás problemitas. Mejor después le pones el lenguaje en español, es tan fácil como copiar una carpeta.

Paso 2. IIS publicando páginas PHP.

Por favor, revisa que tu IIS esté funcionando y publicando páginas PHP propiamente, porque no nos vamos a meter en esos detalles.

Pero como tip, PHP sobre Windows, funciona mucho mejor como FastCGI, así que anda, descárgate la extensión FastCGI para IIS 6.0.

http://www.iis.net/download/fastcgi

Checa esta buen post de Ruslan Yakushev:

http://learn.iis.net/page.aspx/247/using-fastcgi-to-host-php-applications-on-iis-60/

Ahora a bajarnos el PHP. Bájate el instalador desde el sitio oficial de PHP, después de que tú instalas el FastCGI, este instalador te hace todo lo demás.

Bájate el que dice «Non-thread-safe installer», este es el bueno para instalaciones sobre IIS. No agarres otro porque si no sabes lo que estás haciendo, te meterás en problemas cuando habilites algunas extensiones sobre Windows.

Nota: Y dirígete a donde dice Windows Binaries. Si lo bajas 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.

http://windows.php.net/download/

image

Otra vez, revisa que tu instalación de PHP este funcionando adecuadamente (ya sabes como, con tu phpinfo) y que las extensiones para php_mysql, php_openssl y php_curl esten activadas. Puedes dejar únicamente la de mysql, las últimas 2 las usa WordPress cuando quieres importar entradas de un blog externo. Habilita otras extensiones que necesites también como php_mssql o php_ldap.

image

Si le quieres habilitar opciones como register_globals o aumentar el tamaño de archivos a subir, memoria, etc. siéntete libre. No me meteré en eso por ahora. Sólo make sure you know what you are doing.

Paso 3. Instalar WordPress.

Realmente la instalación es muy sencilla. Acá puedes ver el How To oficial de WordPress.

http://codex.wordpress.org/Installing_WordPress

En resumen lo único que debes hacer para instalarlo en IIS 6 es lo siguiente:

1. Crea una base de datos en tu servidor de MySQL. Ponle el nombre que quieras. Crea un usuario con acceso para crear y modificar datos y tablas.

2. Descomprime tu descarga de WordPress  y coloca este folder en tu directorio de publicación de IIS, tal como publicarías cualquier otro contenido. Ponle un nombre lindo a tu carpeta que será tu URL. Yo le voy a poner http://miserver/curso/.

3. Este paso es como 2.5 pues consiste en asilar tu instalación en una aplicación de tu IIS. Abre tu consola de administración de IIS y créate una nueva Application Pool. No sé, ponle de nombre PHP y deja los defaults. Esta la queremos usar para asilar nuestra instalación de WordPress. Ahora ve al sitio web de tu WordPress (en mi caso “curso”), botón derecho->propiedades y conviértela como aplicación seleccionando la Application Pool que acabamos de hacer.

image

image

4. Revisa la raíz de esta carpeta y dale permiso al usuario IUSR_TUMAQUINA de escritura en la misma. No te preocupes, al final le quitas este permiso. NO se te olvide!

5. Listo, navega a tu sitio raíz (en mi caso http://miserver/curso/) y dile que si quieres crear un archivo de configuración. Simplemente llena los formularios que el instalador de WordPress te presenta. No te preocupes, ya tienes todos los datos.

image

Listo. Ya tienes funcionando tu WordPress. Espero que le hayas puesto un titulo lindo. Sino, después se lo cambias, ¿o no?

image

¿Que el tema definido no te gusta? Bueno, eso lo ves después. Vamos a lo serio.

Paso 4. Habilitar WordPress Multisite.

Realmente WordPress le llama a esto una red de sitios. Puede ser por dominio o por directorios. Como metimos esta instalación en un directorio, pues solo podemos usar subdirectorios. Pero en general, ¿Cuál usar? Depende de ti. Como yo no me puedo meter con los DNS, voy a optar por red de directorios. Acá está el paper de WordPress para todo esto:

http://codex.wordpress.org/Create_A_Network

Realmente lo único que tienes que hacer es abrir tu wp-config.php y agregar esta línea justo arriba de donde dice:
[php]
/* That’s all, stop editing! Happy blogging. */
define(‘WP_ALLOW_MULTISITE’, true);
[/php]
Esto va habilitar la funcionalidad de Red. Ahora si te vas a tu Dashboard, verás una nueva opción en el menú Administration > Tools llamada Network.

image

De nuevo, colócale un nombre lindo a tu Red y dale aceptar. Ya viene lo bueno.

Te va a salir una pantalla donde tienes que hacer varias cosas a patín.

1. La primera esta fácil. Créate un directorio llamado blogs.dir en tu directorio wp-content y dale permiso de escritura al usuario IUSR_TUMAQUINA.

image

2. La segunda también esta papita. Agrega las líneas que te pone a tu wp-config.php.

image

3. Acá esta lo feo. Si estuvieras en IIS 7 con la módulo URL Rewrite el WordPress te pondría unas líneas para modificar tu archivo web.config para que el IIS 7 haga las redirecciones. Pero no. Sigues necio con usar IIS 6 así que WordPress te dice: La redirección es tu problema, no mío. Así que WordPress te pone las instrucciones de redirección como lo haría con Apache.

Vamos entonces a lo serio.

Paso 5. URL Rewrite con IIS 6

Hay muchas opciones por ahí. Algunas cuestas dinerito otras son gratis pero no sirven del todo. Pero aquí te voy a poner dos que he probado, son gratis y funcionan bastante bien:

  1. Ionic’s Isapi Rewrite Filter
  2. Managed Fusion URL Rewriter and Reverse Proxy

Yo sólo he probado el IIRF (Ionics Isapi Rewrite) en un ambiente real. En teoría, el segundo es tan simple como colocar una carpeta bin y un web.config y un archivo de texto que contenga estas reglas (iguales a la sintaxis del mod_rewrite de Apache) que pide el WordPress para el .htaccess.

De nuevo, dependen de ti, cual quieres usar. Acá vamos a usar el primero.

Descárgate el software.

image

Esto te va a descargar el instalador que lo hace todo por ti. Aquí las pantallas de ese instalador. Muy sencillo.

Installing with the MSI

Los pasos son simples.

1. Inicia el instalador.

image

2. Acepta la licencia.

3. Selecciona instalar todo.

image

4. Selecciona en cuál de tus sitios Web quieres colocar el filtro IIRF (es una librería IIRF.dll).

image

5. Dale terminar y comienza a instalar el software.

image

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

image

Los archivos los coloca aquí:

image

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

No te preocupes por este archivo global, nosotros vamos a poner las instrucciones de redirección de forma local en nuestro directorio. Por eso es que lo convertimos en aplicación de IIS.

Con eso queda. Ahora sólo resta poner las reglas que nos dijo el WordPress. Pero cuidado! No quedan exactamente iguales. Acá te comparto la joya de este post: las reglas como deben quedar para la carpeta curso.
[php]
RewriteEngine On

# Redirecciona a la correcta pagina inicial del subsitio
RedirectRule ^/curso/([_0-9a-zA-Z-]+)$ /curso/$1/ [I]

RewriteRule ^/curso/index\.php$ – [L]

# uploaded files
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?files/(.+)(\?.*)$ /curso/wp-includes/ms-files.php?file=$2 [L]
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?files/(.+) /curso/wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?wp-admin$ /curso/$1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]

RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes|login).*) /curso/$2 [L]
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?(.*\.php)$ /curso/$2 [L]
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?(.*attachment_id=.*)$ /curso/$2 [L]
RewriteRule ^/curso/([_0-9a-zA-Z-]+/)?(\?.*)$ /curso/$2 [L]
RewriteRule . /curso/index.php [L]
[/php]
Genial! Ahora comienza a navegar en tu nueva Red y verás como los enlaces amigables (o permalink) funcionan, crea subsitios y utiliza todo el poder de WordPress sobre IIS 6.