Archivo

Artículos etiquetados y‘HowTo’

How To: Administrar IIS7 de forma remota (Screencast)

16/07/2009 Deja un comentario

Hace un tiempo escribí un artículo haciendo referencia a cómo podíamos configurar IIS para ser administrado de forma remota, acá les dejo este tópico en formato screencast (video).

Pueden conseguir la versión escrita en este post de mi blog http://eduardosojo.com/how-to-administrar-iis7-de-forma-remota

Categorías:General, Infraestructura Etiquetas: ,

How To: Desarrollar modulos HTTP con .NET en IIS7 y usarlos desde PHP

03/05/2009 Deja un comentario

Una de las ventajas de IIS7 es la flexibilidad para aceptar modulos personalizados desarrollados por nosotros según nuestras necesidades. Estos modulos conocidos como Managed Modules pueden ser desarrollados con .NET (C#|VB) y colocarlos a la disposición del servidor completo o un sitio web definido.

Pero, ¿Cómo le sacamos provecho a esta flexibilidad si nuestro sitio web está desarrollado en PHP?
Con este pequeño ejemplo podemos ver cómo podemos construir un puente para pasar información a PHP apoyandonos en las variables del servidor.

Requisitos:
Tener instalado PHP con FastCGI en nuestro servidor web. Puedes descargar un instalador de PHP que configura también la extensión en IIS en el siguiente link: http://windows.php.net

Paso 1:
Creamos un nuevo sitio web en IIS con soporte para nuestra extensión PHP

Paso 2:
Dentro del directorio de nuestro sitio web creamos una carpeta llamada App_Code y creamos un archivo dentro de esta carpeta llamado variables.cs el cual va a contener el siguiente codigo:

using System;
using System.Web;
using System.Web.Security;

namespace PHPSite
{
    public class PHPSiteModule : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication app)
        {
            app.PostAuthorizeRequest += new EventHandler(ExtractToken);
        }

        private void ExtractToken(Object source, EventArgs args)
        {
            HttpApplication app = (HttpApplication)source;

            app.Context.Request.ServerVariables["APP_TOKEN"] = "MYTOKENLFFJ3OJVDKVC3";

        }
    }
}

Paso 3:
Para configurar nuestro modulo en IIS7, abrimos el IIS Manager (puedes llamarlo desde la barra de busqueda tecleando el comando inetmgr), seleccionamos nuestro sitio web que creamos, en la sección IIS entramos en la función llamada Modulos (Modules en inglés) y creamos un nuevo modulo (en la parte superior derecha se encuentra la opción para agregar nuevos modulos) donde le daremos un nombre y seleccionaremos en el tipo de modulo el que creamos anteriormente.

Presionamos OK para guardar nuestro modulo y ya estamos listos para consumirlo.

Paso 4:
En el directorio raíz de nuestro sitio web creamos un archivo llamado test.php el cual va a contener el siguiente código:

<?php
 echo "Mi Token registrado es: <strong>".$_SERVER["APP_TOKEN"]."</strong>";
?>

Guardamos los cambios y consultamos el script de php (http://rutadelaaplicacion/test.php) y listo, ya estamos leyendo información generada desde un modulo http de IIS7 a través de variables de servidor.

Este escenario nos abre la posibilidad de crear robustos procesos con .NET y consumir los resultados desde nuestras aplicaciones web o interactuar con modelos de autenticación como Forms Authentication y Windows Authentication desde PHP.

Abajo les dejo el link para descargar este ejemplo:

http://cid-f04bcee769e32165.skydrive.live.com/self.aspx/How%20To/PHP%20Site.zip

Espero les sea de utilidad.
Saludos,

Categorías:.NET, Desarrollo / Programación, Interop, PHP, Web Etiquetas: , , , ,

How To: Consumir valores de Web.Config de IIS7 desde PHP

03/05/2009 Deja un comentario

Utilizando el How To anterior (clic AQUÍ para consultarlo), aprovechemos para guardar información sensible o general para nuestro sitio web en el Web.Config que crea IIS7 para cada uno de los sitios web que generemos.

Nuestro Web.Config para este sitio web es:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration&gt;
    &lt;system.webServer&gt;
        &lt;modules&gt;
            &lt;add name="PHPToken" type="PHPSite.PHPSiteModule" /&gt;
        &lt;/modules&gt;
    &lt;/system.webServer&gt;
&lt;/configuration&gt;

Solo se encuentra disponible la sección de modulos donde se encuentra registrado el modulo HTTP que desarrollamos en .NET y que lo pusimos disponible para este sitio web. Podemos agregar secciones a este Web.Config como AppSettings y ConnectionStrings para almacenar valores sensibles y no disponibles para la consulta a través del URL.

Modifiquemos este mismo Web.Config quedando de la siguiente forma:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration&gt;
 &lt;appSettings&gt;
  &lt;add name="website_name" value="Sitio Web de Prueba" /&gt;
  &lt;add name="website_domain" value="sitiowebdeprueba.com" /&gt;
 &lt;/appSettings&gt;
 &lt;connectionStrings&gt;
  &lt;add name="MyConnection" value="server=(local);database=MyDataBase;..." /&gt;
 &lt;/connectionStrings&gt;
    &lt;system.webServer&gt;
        &lt;modules&gt;
            &lt;add name="PHPToken" type="PHPSite.PHPSiteModule" /&gt;
        &lt;/modules&gt;
    &lt;/system.webServer&gt;
&lt;/configuration&gt;

Una vez modificado, nos creamos un script en PHP para leer los valores disponibles tanto en AppSettings como en ConnectionStrings. El contenido del script sería el siguiente:

<?php
$xml = simplexml_load_file(“web.config”);
echo “<strong>Variables de AppSettings</strong>”;
$r = $xml->xpath(“//configuration/appSettings/add”);
for($i=0;$i<count($r);$i++)
{ echo “<div>Variable “.$r[$i]["name"].” = “”.$r[$i]["value"].”"</div>”; }

echo “<br /><strong>Variables de ConnectionStrings</strong>”;
$r = $xml->xpath(“//configuration/connectionStrings/add”);
for($i=0;$i<count($r);$i++)
{ echo “<div>Variable “.$r[$i]["name"].” = “”.$r[$i]["value"].”"</div>”; }
?>
[/pre]
De esta forma podemos almacenar información dentro del Web.Config que ya existe en nuestro sitio web y consultarla desde PHP sin ningun problema, evitandonos crear otros archivos para almacenar información de configuración de nuestras aplicaciones que pueda que no tengan un nivel de seguridad establecido o reconocido por el servidor web.

Abajo les dejo el link para descargar el codigo de este ejemplo actualizado.

http://cid-f04bcee769e32165.skydrive.live.com/self.aspx/How%20To/PHP%20Site%202.zip

Espero les sea de utilidad.

Saludos,

How To: Generar sitios web en IIS7 con Windows Powershell

03/05/2009 Deja un comentario

Hola a todos. Evaluando un poco los escenarios reales presente en un centro de datos o en un prestador de servicios de sitios web, nos topamos con la necesidad de poder hacer deploy rápido de sitios web bajo un mismo patron de configuración y de forma automatizada sin necesidad de hacer uso del IIS Manager del servidor.

El script diseñado basicamente muestra cómo podemos crear sitios web de forma rápida en IIS 7 apoyándonos en Powershell y su extensión para IIS. Para hacer uso del mismo tomar en cuenta la siguiente información:

REQUERIMIENTOS:

- Windows Server 2008

- Rol Internet Information Services 7 habilitado

- Powershell instalado en el servidor (viene en las características del servidor, sólo debe habilitarse)

- Powershell Provider for IIS instalado (http://www.iis.net/default.aspx?tabid=2018)

PASOS:

1. Abrir IIS Powershell Management Console en modo administrador (Clic derecho sobre el icono y seleccionar la opción Run as Administrator|Ejecutar como Administrador)

2. Configurar powershell para ejecución de scripts. Para esto, abrir powershell y teclear el comando get-executionpolicy. Si el resultado de esta consulta es distinto a RemoteSigned, teclear el siguiente comando: set-executionpolicy RemoteSigned.

3. Correr el script de la siguiente forma:

PS IIS:> . "iis.ps1"

4. En la barra de búsqueda del menú de inicio teclear inetmgr para abrir el IIS Manager donde veremos los sitios web creados por el scripty el application pool con los sitios web asignados

NOTA: Importante que los scripts se ejecutan con powershell colocando “.” delante de la ruta del script, esto con la finalidad de indicarle a powershell la interpretación que debe tomar con el parametro que se encuentra entre comillas.

Este script está disponible para su descargar en:

http://cid-f04bcee769e32165.skydrive.live.com/self.aspx/Powershell/IIS-Powershell%20script.rar

Espero les sea de utilidad.

Saludos,

How To: Administrar IIS7 de forma remota

03/05/2009 1 Comentario

Hola a todos, a continuación les dejo la secuencia de pasos para habilitar la administración remota de los servicios de Internet Information Services 7.

1. Ingresar en nuestro servidor con Windows Server 2008 y abrir el administrador del servidor.

2. Localizar la sección Resumen de Funciones y hacer clic en el link Ir a Funciones ubicado del lado derecho.

3. En la sección Servicios de función, hacer clic en el link Agregar servicios de función ubicado del lado derecho.

4. en el grupo Herramientas de administración, habilitar la opción Servicio de administración, clic en Siguiente e Instalar. Esta opción nos va a proporcionar dentro del administrador de IIS una serie de funciones para la administración remota en IIS7.

5. Una vez finalizada la instalación, abrimos el menú de inicio y en la barra de busqueda tecleamos la palabra inetmgr y aparecerá la aplicación listada en los resultados. Esta aplicación está disponible en la ruta C:WindowsSystem32inetsrv

6. En el Administrador de Internet Information Services (IIS) hacer clic en el servidor local (en la lista desplegada del lado izquierdo). En la sección Administración, se han agregado 3 nuevas funciones: Permisos del Administrador de IIS, Servicio de administración y Usuarios del administrador de IIS.

7. Ingresar en la función Servicio de administración. Por defecto, este servicio está detenido. Habilitamos la opción Habilitar conexiones de manera remota y seleccionar en la sección Credenciales de identidad la segunda opción: Credenciales de Windows o credenciales del Administrador de IIS.

8. Del lado derecho en la barra de Acciones, hacer clic en Aplicar y luego en Iniciar para activar el servicio. Regresamos a la página principal e ingresamos a la función Usuarios del Administrador de IIS, donde haremos clic en el link Agregar usuario ubicado del lado derecho.

9. Luego de crear el usuario. Navegar por el directorio de Sitios disponibles en elservidor web (listado ubicado del lado izquierdo en el item Sitios) y seleccionar uno, viendo del lado derecho todas las funciones disponibles para este sitio web. Seleccionar la función Permisos del Administrador de IIS ubicada en la sección Administración.

10. Hacer clic en el link Habilitar usuario ubicado del lado derecho y seleccionamos la opción Administrador de IIS, donde seleccionaremos el usuario que se creó en el paso 8. Clic en aceptar para agregar el usuario.

NOTA: Es importante tomar en cuenta que por defecto la administración remota de IIS se hace utilizando el puerto 8172 (el cual es editable en la función Servicio de administración), por lo que se debe tomar las previsiones con este puerto en el firewall.

Una vez configurado IIS para ser administrado de forma remota solo nos queda habilitar la consola local de IIS e instalar la extensión IIS Manager for Remote administration .

Espero les sea de utilidad.

Saludos,

Categorías:Infraestructura Etiquetas: , ,