Posts Tagged ‘HowTo’

How To: Construir un servidor web con IIS7.5 Server Core (III)

Monday, March 8th, 2010

Habilitando funciones de cache en el servidor web y para PHP

IIS7.5 cuenta con distintas versiones para el manejo de cache de la información que circula en el servidor web, algunos orientados a docuemtos, a extensiones, documentos estáticos y dinámicos, entre otros.

Elemento <caching>

Este elemento permite manejar cache para el contenido de salida de las páginas, pudiendose manejar en un modo usuario, modo kernel o mixto y límites para configurar el cache. Éste puede ser configurado en ApplicationHost.config o en niveles inferiores como sitios web. Este elemento consta de varios atributos a configurar:

enabled: Es opcional. Valor True/False. Valida si el chaching está activo o no. El valor por defecto es True
enableKernelCache: Es opcional. Valor True/False. Especifica si el modo kernel cache está activo o no. El valor por defecto es True
maxCacheSize: Es opcional. Valor entero. Especifica la capacidad máxima para el cache de salida. Debe configurarse en ApplicationHost.config. El valor por defecto es 0
maxResponseSize: Es opcional. Valor entero. Especifica el tamaño máximo de respuesta que será guardado en cache. Debe configurarse en ApplicationHost.config. El valor por defecto es 262144

Para configurarlo, podemos hacerlo de la siguiente manera:

1. En la consola nos movemos al directorio C:\Windows\System32\inetsrv
2. Tecleamos el siguiente comando (este ejemplo se hace con las paginas de asp.net):
appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='aspx',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Cache para PHP, WinCache

Para manejo de cache en PHP podemos utilizar una extensión desarrollada en conjunto Microsoft/PHP Team que va a permitir manejar de forma nativa el manejo del cache e inclusive el monitoreo de comportamiento. Esta extensión para PHP pueden descargarla de PECL PHP – WinCache o de IIS Expand – WinCache . Para configurarlo realizamos los siguientes pasos:

1.Descargamos Windows Cache Extension, donde conseguiremos en su estructura de archivos una DLL llamada php_wincache.dll . Este archivo lo copiaremos a la carpeta ext del directorio de PHP y en php.ini registraremos esta extension. Para editar el php.ini desde la consola pueden ejecutar el siguiente comando

notepad C:\php\php.ini

2. Una vez ejecutado el paso anterior, podemos probar el funcionamiento de este cache usando un archivo llamado wincache.php dentro de la estructura descagada de winCache . Este archivo lo podemos copiar en nuestro sitio web de IIS. Antes de ejecutarlo debemos cambiar usuario y clave dentro del script y luego lo podemos consultar por el explorador web. Para conocer más de WinCache pueden consultar PHP: WinCache – Manual

(more…)

How To: Configurar Framework KumbiaPHP en IIS 7.x

Monday, March 1st, 2010

 KumbiaPHP es un ligero pero potente framework para aplicaciones PHP el cual se caracteriza por su sencillez al momento de configurarse. Por defecto, al descargar este framework cuenta con las plantillas .htaccess correspondiente a la configuración de reescrituras de URL en Apache, sin embargo en IIS este documento de configuración no es interpretado.

Para configurar KumbiaPHP en IIS 7.x podemos seguir los siguientes pasos:

1. Descargar la extensión para IIS7 llamada URL Rewrite Module . Puedes instalarla también con el Web Platform Installer

2. Luego de instalada, creamos un sitio web en la consola de administración de IIS donde colocaremos a KumbiaPHP

3. Para que kumbiaPHP sea interpretado de forma correcta, debemos activar algunas reglas de reescritura y redirección, especificamente en 4 casos:

Definido estos casos, crearemos estas 4 reglas en un archivo web.config en la raiz del sitio web. Estas reglas deben ser creadas en el siguiente orden segun los casos arriba mencionados:

  • home_rewrite
  • redirect_to_home
  • redirect_to_param
  • param_rewrite

La estructura de nuestro archivo web.config quedaría de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="home_rewrite" stopProcessing="true">
                    <match url="$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" />
                    </conditions>
                    <action type="Rewrite" url="public/index.php" />
                </rule>
                <rule name="redirect_to_home" stopProcessing="true">
                    <match url="^public/index.php" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Redirect" url="/" redirectType="Permanent" />
                </rule>
                <rule name="redirect_to_param" stopProcessing="true">
                    <match url="^public/index\.php$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" />
                        <add input="{QUERY_STRING}" pattern="^url=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent" />
                </rule>
                <rule name="param_rewrite" stopProcessing="true">
                    <match url="^([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="public/index.php?url={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

De esta forma podemos comenzar a trabajar con KumbiaPHP en IIS 7.x . Sigo realizando pruebas para validar todos los casos de reescritura a medida que creo mi primera aplicación de prueba. Cualquier duda, comentario, problemas conseguidos con las reglas no dudes en comentarme para seguir iterando en el tema :)

Saludos,

How To: Configurar Python en IIS 7.x

Wednesday, February 24th, 2010

Es posible configurar Python para funcionar de forma correcta bajo un modelo de CGI en Internet Information Services (IIS) 7.x .

1. Descargamos Python (a efectos de este post utilizaremos la versión 3.1) y lo instalamos

2. Abrimos la consola de administración de IIS y vamos a la sección de Handler Mappings donde registraremos una nueva extensión para documentos .py . Seleccionamos “Add Module Mapping” y agregamos los siguientes valores:

3. Una vez registrada la extensión, podemos ajustar los valores de comportamiento del compilador de Python en IIS->FastCGI Settings

Pueden probar la configuración con un script sencillo como este:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print("Content-Type: text/html;charset=utf-8")
print()

print("

Hello World!

")

Aun realizo pruebas para realizar esta configuración en modo Server Core en windows Server 2008 R2…. Luego les contaré que tal me fue.

Saludos,

How To: Construir un servidor web con IIS7.5 Server Core (II)

Tuesday, February 23rd, 2010

Habilitando ASP.NET y PHP en el servidor web

Una vez que tenemos habilitado los servicios de IIS en Windows Server 2008 R2 Server Core (puedes verlo en el post anterior How To: Construir un servidor web con IIS7.5 Server Core (I)), comenzamos a habilitar las tecnologías de desarroll0 y scripting que queremos que soporte nuestro servidor web. Para esta entrega, veremos cómo configurar ASP.NET y PHP.

Antes de comenzar, debemos descargar los paquetes correspondientes a PHP y colocarlos en un directorio en el equipo o máquina virtual donde estamos configurando el servidor.

Configurando ASP.NET

Para habilitar ASP.NET primero debemos configurar algunos componentes asociados como el .NET Framework, filtros y extensiones ISAPI. La ejecución de comandos quedaría de la siguiente forma:

dism /online /enable-feature /featurename:NetFx2-ServerCore
dism /online /enable-feature /featurename:NetFx3-ServerCore
dism /online /enable-feature /featurename:IIS-ISAPIFilter
dism /online /enable-feature /featurename:IIS-ISAPIExtensions
dism /online /enable-feature /featurename:IIS-NetFxExtensibility
dism /online /enable-feature /featurename:IIS-ASPNET

Configurando PHP

Para habilitar PHP debemos validar primero que esté habilitado el component IIS-CGI . Descargamos PHP (al momento de escribir este artículo hice la prueba con la versión 5.2.12) y lo copiamos en el servidor que estamos trabajando, luego ejecutamos 2 comandos donde el primero registra PHP en el ambiente de ejecución de FastCGI y el segundo configura la extension. Navegamos hasta el directorio C:\Windows\System32\inetsrv y ejecutamos lo siguiente:

appcmd set config /section:system.webServer/fastCGI /+[fullPath='C:\php\php-cgi.exe']
appcmd set config /section:system.webServer/handlers /+[name='PHP-FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:\php\php-cgi.exe',resourceType='Either']

Podemos probar el funcionamiento de PHP creando un script sencillo y colocandolo en c:\inetpub\wwwroot . Podemos utilizar el siguiente script para el test:

<?php
phpinfo();
?>

Otras entregas relacionadas:

Entrega I: Habilitando los servicios de Internet Information Services (IIS)

Entrega III: Habilitando funciones de cache en el servidor web y para PHP

Saludos,

How To: Construir un servidor web con IIS7.5 Server Core (I)

Wednesday, February 17th, 2010

Habilitando los servicios de Internet Information Services (IIS)

En Windows Server 2008 R2 Server Core podemos hacer uso de IIS como rol incluido en esta modalidad y habilitar la administración remota para tener una administración delegada bajo la consola de administración gráfica de IIS disponible a la fecha.

Existen múltiples componentes relacionados con los servicios de IIS, para consultar cuales son podemos ejecutar el siguiente comando:

dism /online /get-features /format:table | find /i "IIS"

Para habilitar el role de IIS y su componente principal, procedemos a ejecutar lo siguiente:

dism /online /enable-feature /featurename:IIS-WebServerRole /featurename:IIS-WebServer /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent /featurename:IIS-DefaultDocument /featurename:IIS-DirectoryBrowsing /featurename:IIS-HttpErrors /featurename:IIS-ApplicationDevelopment /featurename:IIS-HealthAndDiagnostics /featurename:IIS-HttpLogging /featurename:IIS-LoggingLibraries /featurename:IIS-RequestMonitor /featurename:IIS-Security /featurename:IIS-RequestFiltering /featurename:IIS-HttpCompressionStatic /featurename:IIS-WebServerManagementTools /featurename:WAS-WindowsActivationService /featurename:WAS-ProcessModel /featurename:IIS-CGI

Habilitando la administración remota

Para habilitar la administración remota debemos activar IIS Management Services así como los servicios de WAS-WindowsActivationService y WAS-ConfigurationAPI (primero se habilita el .NET Framework ya que es requisito para luego habilitar estos componentes):

dism /onlie /enable-feature /featurename:NetFx2-ServerCore
dism /online /enable-feature /featurename:IIS-ManagementService
dism /online /enable-feature /featurename:WAS-WindowsActivationService
dism /online /enable-feature /featurename:WAS-ConfigurationAPI

Una vez activados los componentes necesarios, procedemos a guardar en el registro del sistema la habilitación de la administración remota y finalmente cambiamos el estado del servicio de Stopped a Start :

Reg Add HKLM\Software\Microsoft\WebManagement\Server /V EnableRemoteManagement /T REG_DWORD /D 1
net start wmsvc

Administrando el servidor web de forma remota

Para empezar a administrar el IIS de este servidor Server Core, abrimos la consola de administración de IIS (debe estar habilitada en Windows Vista/7) y seleccionamos la opción “Conectar a un servidor” donde suministramos los datos necesarios (nombre del equipo remoto, usuario, clave). Puedes conseguir mayor información de estos pasos en mi artículo How To: Administrar IIS de forma remota

En la próxima entrega estaremos configurando en este servidor las tecnologías de desarrollo que vamos a utilizar en él (PHP, ASP.NET, otros). Cualquier duda, no duden en comentar por acá.

Otras entregas relacionadas:

Entrega II: Habilitando ASP.NET y PHP en el servidor web

Entrega III: Habilitando funciones de cache en el servidor web y para PHP

Saludos,