Acceder desde una Ip a IIS Express


Aunque IIS Express está diseñado principalmente para ser utilizado por desarrolladores en  un equipo de trabajo usando simplemente «localhost:puerto» como punto de pruebas pruebas, quizás no sepa que haciendo un par de cambios en la configuración , también es posible utilizarlo desde equipos externos, por ejemplo para poder hacer pruebas de una web o servicio desde otros dispositivos conectados a la misma red  como terminales móviles .

Partiremos de un proyecto ASP.NET  Core  creado en Visual Studio , da igual si se trata de una aplicación MVC, Web Forms, Web API o lo que sea. Para desarrollar el ejemplo, imaginemos que al ejecutarlo en local estamos usando la URL http://localhost:44342/.

Veamos paso a paso cómo acceder a esta aplicación desde otro equipo conectado a la red local, y cómo solucionar algunos de los problemas que podemos encontrar por el camino.

1. Averiguamos con qué dirección está visible nuestro equipo desde el exterior
Esto podemos hacerlo con cierta facilidad ejecutando el comando «ipconfig | find «IPv» » en la terminal (cmd)  de la siguiente forma:

C:\WINDOWS\system32>ipconfig | find "IPv4"
Dirección IPv4. . . . . . . . . . . . . . : 192.168.56.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.99.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.1.46
Dirección IPv4. . . . . . . . . . . . . . : 172.17.117.209
Dirección IPv4. . . . . . . . . . . . . . : 172.17.177.129

C:\WINDOWS\system32>

El número de resultados que veremos ahí dependerá de los adaptadores de red (físicos o virtuales) que tengamos configurados en nuestro equipo. De ellos tendremos que seleccionar la dirección que se encuentre en el rango de red usado por los equipos externos desde los cuales queremos acceder a nuestra web.

En el jemplo  como  todos los equipos de la red local usan direcciones del tipo 192.168.56.*,  el nombre de host que deberían usar para acceder a mi equipo de trabajo sería la 192.168.56.1

2. Localizamos el archivo de configuración de IIS Express del proyecto

Este archivo se llama «applicationhost.config» y en proyectos de Visual Studio se encuentra en una carpeta llamada «.vs\nombre de proyecto\config» que encontramos en el directorio  de la solución, en la subcarpeta del nombre del proyecto  y dentro de ella, en la subcarpeta «config».

En otros casos, el archivo de configuración se puede  encontrar en la carpeta de configuración de IIS Express de vuestro usuario en el equipo: %userprofile%\documents\iisexpress\config.

3. Localizamos las líneas donde se especifica la URL por defecto del proyecto

En el archivo «applicationhost.config«, debemos localizar la parte de la configuración donde se indica la URL de acceso al proyecto en la máquina local. Por ejemplo, podría ser algo como esto:

<bindings>
<binding protocol=»http» bindingInformation=»*:53980:localhost» />
<binding protocol=»https» bindingInformation=»*:44342:localhost» />
</bindings>

 

Observe que este binding está limitando el acceso a vuestro sitio web, permitiendo únicamente el uso del host «localhost» para acceder al mismo. Para habilitar el acceso desde equipos externos, lo primero que tenemos que hacer es añadir otros bindings con el nombre de host que se utilizará desde fuera.

4. Añadimos a la configuración de IIS Express el nuevo binding con la dirección de nuestro equipo

En la sección de configuración <bindings>, añadimos una nueva línea en la que indicaremos que la aplicación también será accesible utilizando como host nuestra IP, de forma que quedaría más o menos como aparece a continuación.

 Ojo, ¡deberiamos elegir un puerto distinto al que usamos en localhost para que no haya conflictos !

Bien, pues si ahora intentamos ejecutar sin depuración sin permisos de administrador  nos aparecera el error de que no es posible iniciar IIS Express, pero no se preocupe pues este error aparece siempre que no hayamos lanzado Visual Studio como administrador, pues el nivel de permisos del proceso bajo el que se lanza IIS Express no es suficiente como para «apropiarse» de una dirección y puerto TCP/IP del equipo y utilizarla para escuchar peticiones.

En cambio, si iniciamos Visual Studio como administrador veremos que arranca correctamente y que, de hecho, podemos acceder a la aplicación utilizando tanto localhost:44342 como con permisos de administrador 192.168.1.46:44342, lo que quiere decir que, si no existen problemas de permisos, el binding está bien hecho.

 

5. Reservar la URL y conceder permisos de uso (sólo no administradores)

Como hemos comentado antes, este paso no será necesario si estamos ejecutando Visual Studio (y por tanto IIS Express) como administrador. Pero si no es así, debemos abrir una la línea de comandos con permisos elevados y utilizar la siguiente instrucción para reservar la URL y darle derechos de uso a determinados usuarios del equipo, por ejemplo como sigue desde la terminal de windows (cmd)  con permisos de administrador (no lo intente desde PowerShell porque le dara error) :

Pero antes de hacerlo tened en cuenta unos detalles:

  • Primero, la URL debe estar completa, incluida la barra del final.
  • El usuario puede ser cualquier grupo del sistema o nombre de usuario con dominio.
  • Los nombres de grupo son sensibles al idioma de instalación de Windows. Es decir, si vuestro Windows está instalado en inglés, debéis usar el nombre «everyone» en lugar de «todos».

Tras ejecutar el comando, ya debería ser posible acceder a la aplicación desde el equipo utilizando tanto la URL interna (localhost) como la externa (192…), cada una con su puerto correspondiente.

Pero el acceso externo aún no está garantizado: el firewall impedirá el acceso a no ser que le indiquemos lo contrario.

6. Abrir el firewall

Por defecto, el firewall de Windows rechazará cualquier intento de acceso a la máquina desde el exterior, por lo que debemos configurar una regla de entrada que asegure que las peticiones hacia nuestra web podrán entrar sin que el firewall rechaze ese trafico.

Esto lopodemos hacer dede el intrefaz graficos en configuracion avanzada en reglas del Cortafuegois  o bien desde la  consola de comandos con permisos de administrador, ejecutando la siguiente orden :netsh advfirewall firewall add rule name=»Acceso externo a mi aplicacion web» dir=in action=allow protocol=TCP localport=44342

Por supuesto, recuerde que:

  • El parámetro localport debe ser el puerto que haya elegido para el acceso externo, el mismo que usamos en el archivo de configuración de IIS Express, y más adelante al reservar la URL.
  • Es conveniente poner un nombre reconocible a la regla, de forma que más adelante podamos identificarla con facilidad.

Como ultima nota, si  desea probar su aplicacion desde un  dispositivo android , aseguresea antes qeu este esta dentro de su red, y no olvide escribir la direcccion completa (con https)  y desde un navegador diferente al usado como navegador interna ( por ejemplo con Chrome o Firefox)

¡Y eso es todo! Si ha llegado hasta aquí, ya podra ejecutar o depurar vuestra aplicación en Visual Studio, y acceder a ella desde cualquier equipo de la red local usando la dirección que hayas elegido en los pasos anteriores.

Anuncio publicitario

Como instalar un servidor de BBD y no morir en el intento


PostgreSQL, también llamado Postgres, es un sistema de gestión de bases de datos relacional orientado a objetos y de código abierto, publicado bajo la licencia PostgreSQL,​ similar a la BSD o la MIT.

Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre o apoyados por organizaciones comerciales denominada el PGDG (PostgreSQL Global Development Group).

 

Instalación PostgreSQL

Empezaremos descargando pgAdmin desde este enlace: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows

Una vez en la página, seleccionamos la versión PostgreSQL deseada y sistema operativo con el que estamos trabajando

En el caso de W10 ,la ultima version es la 13.1  pero en muchos casos  por compatibiliad   podria ser  necesario  versiones mas antiguas   motivo por el cual   hay disponibles  para descargar  desde  la 9.3.25  hasta 13.1 tanto para Mac como para Windows  .

 


Pulsamos en el botón download now y se iniciará la descarga del instaladorun ejecutable.

Una vez descargado, vamos a instalar pgAdmin en nuestro equipo, veremos una pantalla como la que muestro a continuación.

Ya sabemos que hacer, pulsamos «Siguiente», seleccionando el directorio donde queremos realizar la instalación ( pordefecto C:\Program Files\PostgreSQL\13)  y pulsamos «Siguiente» un par de veces más hasta que el proceso de instalación comience.

Al terminar, nos preguntará si queremos instalar Stack Builder u otros compoenentes   que viene npor defecto.

 

Puulsamos siguinte para contunuar la instalacion.

A continuacion ,es interesante saber la ubicacion donde se almacenara  la BBDD  propiamente que el asistente permite cambiar

 


Ahora  nos pide la clave del administrador de la BBDD

 

Tambien es personalizable el puerto donde servira el interfaz de administracion ( por defecto es el puerto 5432)

 

Ya solo nos queda la configuración regional y empezara la instalación   propiamente dicha  hasta que veamos el mensaje  de finalización de la instalación y tras un rato habrá concluido la instalación de modo  que desde este momento ya tendremos PostgreSQL instalado en nuestro equipo.

 

Al terminar de la instalación , reiniciaremos  el pc, y en la primera ejecución es posible que Stack builder pida proseguir el resto de instalación.

 

Primeros pasos con el gestor de PostgreSQL pgAdmin.

Una vez finalizado el proceso de instalación, ya podemos abrir nuestro programa. Al abrir por primera vez el gestor de bases de datos comprueba si existe una nueva versión  ( en caso por ejemplo de haber instalado alguna version anterior,en cuyo caso pulsamos sobre el texto «here» y nos abrirá en otra ventana del gestor la página para actualizar nuestra versión.Una vez completada la descarga, podemos cerrar la ventana del gestor e ir donde hayamos descargado el ejecutable para lanzarlo. Aquí más de lo mismo, aceptamos las condiciones e instalamos el contenido donde deseemos. Para tenerlo todo bien organizado he hecho la instalación en el directorio raíz donde instalé PostgreSQL.

Al finalizar la instalación se abrirá automáticamente otra ventana del gestor de bases de datos pgAdmin donde ya no aparecerá la advertencia de actualización.

Trabajando con el gestor de PostgreSQL pgAdmin.

Para empezar a trabajar con pgAdmin tan solo tenemos que pulsar sobre el símbolo (+) correspondiente a «Servers» localizado en la parte superior izquierda. Y a continuación pulsaremos sobre el símbolo (+) correspondiente a «PostgreSQL 9.6». Veremos que el icono del aspa roja cambia por el logo del elefante, esto quiere decir que nuestro servidor está levantado.

Recordemos que el puerto utilizado por PostgreSQL es el 5432.

Creando perfil y nueva base de datos.

Pulsamos botón derecho en «Login/Group Roles»->»Create»->»Login/Group Role», y creamos el perfil deseado. Yo he creado un perfil llamado igual que mi usuario de windows ya que por defecto vamos a estar atacando a las bases de datos desde cmd con este perfil.

Ponemos en la casilla «General» el nombre, insertamos en la casilla «Definition» una contraseña para este nuevo perfil y ponemos en la casilla de «Privilegios» todo a YES. Bien pues si pulsamos sobre el botón «Guardar» ya disponemos de perfil para conectar a las bases de datos de PostgreSQL.

Ahora vamos a crear una base de datos de testeo para hacer nuestras pruebas. Para ello pulsamos botón derecho sobre «Database»->»Create»->»Database». En la pestaña «General»->»Database» ponemos el nombre  de la base de datos, yo la he llamado «test» y le damos permisos sobre ella al usuario creado anteriormente, por lo tanto lo seleccionamos del desplegable.

Pulsamos sobre el botón «Save» y listo, ya tenemos los preparativos para poder trabajar.

Comprobando acceso desde cmd a las bases de datos de Postgresql.

Abrimos una ventana de consola con permisos de administrador y accedemos a la ruta donde tenemos nuestro binario de PostgreSQL y tecleamos lo siguiente: psql — h

D:\Program Files\PostgreSQL\9.6\bin>psql -- test
Contraseña:

Con esto le estamos diciendo a PostgreSQL que queremos acceder mediante consola a la base de datos test y para ello nos pide una contraseña. La contraseña que pide es la relacionada con el que estamos trabajando (en mi caso el de windows que fue el perfil que creamos en pgAdmin en el paso anterior).

Ahora ya podemos realizar cualquier tipo de consulta mediante cmd.

Creando nuestra primera tabla en PostgreSQL.

Ya que tenemos la interface gráfica pgAdmin, vamos a crear desde aquí nuestra primera tabla y campos. También utilizaremos alguna consulta que devuelva datos a modo gráfico.

Pulsamos sobre el símbolo (+) de la base de datos «test» -> símbolo (+) de Schemas -> símbolo (+) de public. ahora pulsamos con el botón derecho sobre «Tables»->Create->Table.
A continuación asignamos un nombre a la tabla y pulsamos el botón «Save». Llegados aquí pulsamos con el botón derecho sobre la tabla y seleccionamos Create->Column.

Ahora ya sabemos crear tablas y crear columnas. Tan solo queda hacer una simple select y el resultado que veremos será similar a la siguiente imagen.

Comandos de interes para ejecutar desde consola.

1 – psql \l :: Te muestra las bases de datos existentes.
2 – psql \d :: Te muestra las relaciones (tablas, secuencias, etc.) existentes en la base de datos.
3 – psql \d [nombre_tabla] :: Para ver la descripción (nombre de columnas, tipo de datos, etc.) de una tabla.
4 – psql \c [nombre_bd] :: Para conectarte a otra base de datos.
5 – psql SHOW search_path; :: Para ver la ruta de búsqueda actual.
6 – psql SET search_path TO [nombre_esquema]; :: Para actualizar la ruta de busqueda.
7 – psql \q :: Para salir de psql.

 

 

Cómo desplegar wordpress en la nube de Google


En este post vamos a ver como configur un servidor de Cloud SQL que conectaremos a una aplicación wordpress a él mediante un proxy a través de una conexión externa. Para ello también configuraremos una conexión a través de un enlace IP privado que ofrece beneficios de rendimiento y seguridad. 

Al final , tendremos 2 instancias de trabajo del frontend de WordPress conectadas a través de 2 tipos de conexión diferentes a su backend de instancia de SQL :

 

 

1: creación de una base de datos de Cloud SQL

En esta parte configuraresmo un servidor SQL de acuerdo con las mejores prácticas de Google Cloud y crearemos una conexión IP privada.

  1. En el menú de navegación ( Menú de Navegación), haga clic en SQL .
  2. Haz clic en Crear instancia .
  3. Haga clic en Elegir MySQL .
  4. Especifique lo siguiente y deje los ajustes restantes como predeterminados:
Propiedad Valor
ID de instancia wordpress-db
Contraseña de root teclee una contraseña 
Región su zona
Zona Alguna
Versión de la base de datos MySQL 5.7

Anote la contraseña de root; se utilizará en un paso posterior y se denominará [ROOT_PASSWORD].

  1. Expanda Mostrar opciones de configuración .
  2. Expanda la sección Conectividad .
  3. Seleccione IP privada .
  4. En el cuadro de diálogo, haga clic en Habilitar API , haga clic en Asignar y conectar y luego haga clic en Cerrar . Esto habilita el acceso a servicios privados y adjunta una dirección IP privada a su servidor Cloud SQL.La IP privada es una conexión interna, a diferencia de la IP externa, que sale a Internet.
  5. Expanda la sección Tipo de máquina y almacenamiento .
  6. Aprovisione la cantidad adecuada de vCPU y memoria. Para elegir un tipo de máquina , haga clic en Cambiar y luego explore sus opciones.

Algunos puntos a considerar: Las máquinas de núcleo compartido son buenas para la creación de prototipos y no están cubiertas por Cloud SLA .Cada vCPU está sujeta a un límite de rendimiento de red de 250 MB / s para un rendimiento máximo. Cada núcleo adicional aumenta el límite de la red, hasta un máximo teórico de 2000 MB / s.Para cargas de trabajo sensibles al rendimiento, como el procesamiento de transacciones en línea (OLTP), una pauta general es asegurarse de que su instancia tenga suficiente memoria para contener todo el conjunto de trabajo y acomodar la cantidad de conexiones activas.

  1. Puede  seleccionar db-n1-standard-1 y luego haga clic en Seleccionar .
  2. A continuación, elija el tipo de almacenamiento y la capacidad de almacenamiento .

Algunos puntos a considerar :SSD (unidad de estado sólido) es la mejor opción para la mayoría de los casos de uso. HDD (unidad de disco duro) ofrece un rendimiento más bajo, pero los costos de almacenamiento se reducen significativamente, por lo que HDD puede ser preferible para almacenar datos a los que se accede con poca frecuencia y que no requieren una latencia muy baja. Existe por tanto  una relación directa entre la capacidad de almacenamiento y su rendimiento.

  1. Agregue algunos ceros a la capacidad de almacenamiento para ver cómo afecta el rendimiento. Restablezca el control deslizante a 10 GB.

Establecer su capacidad de almacenamiento demasiado baja sin habilitar un aumento de almacenamiento automático puede hacer que su instancia pierda su SLA.

  1. Haga clic en Cerrar .
  2. Haga clic en Crear en la parte inferior de la página para crear la instancia de la base de datos.

Es posible que deba esperar a que se propaguen los cambios de IP privada antes de que se pueda hacer clic en el botón Crear .

 

 

2: Configurar un proxy en una máquina virtual

Cuando su aplicación no reside en la misma región y red conectada a la VPC que su instancia de Cloud SQL, use un proxy para proteger su conexión externa.

Para configurar el proxy, necesita el nombre de conexión de la instancia de Cloud SQL. Para continuar necesitaríamos 2 máquinas virtuales preconfiguradas con WordPress y sus dependencias (s también se necesitará un  script de inicio y un  acceso a la cuenta de servicio ). Tenga en cuenta que  se debe usar el principio de privilegio mínimo y solo permitimos el acceso SQL para esa máquina virtual. También hay una etiqueta de red y un firewall preconfigurado para permitir el puerto 80 desde cualquier host.

  1. En el menú de navegación ( Menú de Navegación), haga clic en Compute Engine .
  2. Haga clic en SSH junto a wordpress-europe-proxy .
  3. Descarga el proxy de Cloud SQL y hazlo ejecutable:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxycontent_copy

Para iniciar el proxy, necesita el nombre de conexión de la instancia de Cloud SQL. Mantenga su ventana SSH abierta y regrese a Cloud Console.

  1. En el menú de navegación ( Menú de Navegación), haga clic en SQL .
  2. Haga clic en la instancia de wordpress-db y espere a que aparezca una marca de verificación verde junto a su nombre, que indica que está operativa (esto podría demorar un par de minutos).
  3. Anote el nombre de la conexión de la instancia ; se utilizará más adelante y se denominará [SQL_CONNECTION_NAME].
  4. Además, para que la aplicación funcione, debe crear una tabla. Haga clic en Bases de datos .
  5. Haga clic en Crear base de datos , escriba wordpress , que es el nombre que espera la aplicación, y luego haga clic en Crear .
  6. Regrese a la ventana SSH y guarde el nombre de la conexión en una variable de entorno, reemplazando [SQL_CONNECTION_NAME] con el nombre único que copió en un paso anterior.
export SQL_CONNECTION=[SQL_CONNECTION_NAME]content_copy
  1. Para verificar que la variable de entorno esté configurada, ejecute:
echo $SQL_CONNECTIONcontent_copy

Se debe imprimir el nombre de la conexión.

  1. Para activar la conexión de proxy a su base de datos de Cloud SQL y enviar el proceso a un segundo plano, ejecute el siguiente comando:
./cloud_sql_proxy -instances=$SQL_CONNECTION=tcp:3306 &content_copy

La salida esperada es

Listening on 127.0.0.1:3306 for [SQL_CONNECTION_NAME]
Ready for new connectionscontent_copy
  1. Presione ENTER.

El proxy escuchará en 127.0.0.1:3306 (localhost) y el proxy que se conecta de forma segura a su Cloud SQL a través de un túnel seguro utilizando la dirección IP externa de la máquina.

 

 

3: Conectar una aplicación a la instancia de Cloud SQL

Ahora conectaremos wordpress a la instancia de Cloud SQL.

  1. Configure la aplicación WordPress. Para encontrar la dirección IP externa de su máquina virtual, consulte sus metadatos:
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip && echocontent_copy
  1. Vaya a la dirección IP externa wordpress-europe-proxy en su navegador y configure la aplicación WordPress.
  2. Haga clic en Let’s Go .
  3. Especifique lo siguiente, reemplazando [ROOT_PASSWORD] con la contraseña que configuró al crear la máquina, y deje las configuraciones restantes como sus valores predeterminados:
Propiedad Valor
Nombre de usuario raíz
Contraseña [ROOT_PASSWORD]
Host de base de datos 127.0.0.1

Está utilizando 127.0.0.1, localhost como la IP de la base de datos porque el proxy que inició escucha en esta dirección y redirige ese tráfico a su servidor SQL de forma segura.

  1. Haga clic en Enviar .
  2. Cuando se haya establecido una conexión, haga clic en Ejecutar la instalación para crear una instancia de WordPress y su base de datos en su Cloud SQL. Esto puede tardar unos minutos en completarse.
  3. Complete la información de su sitio de demostración con información aleatoria y haga clic en Instalar WordPress . No tendrá que recordar ni utilizar estos detalles.

La instalación de WordPress puede tardar hasta 3 minutos, porque propaga todos sus datos a su servidor SQL.

  1. Cuando vea ‘¡Éxito!’ apareciendo en la ventana, elimine el texto después de la dirección IP en la barra de direcciones de su navegador web y presione ENTER. ¡Se le presentará un blog de WordPress en funcionamiento!

4: Conéctese a Cloud SQL a través de una IP interna

Si puede alojar su aplicación en la misma región y red conectada a VPC que su Cloud SQL, puede aprovechar una configuración más segura y con mejor rendimiento mediante IP privada.

Al usar la IP privada, aumentará el rendimiento al reducir la latencia y minimizar la superficie de ataque de su instancia de Cloud SQL porque puede comunicarse con ella exclusivamente a través de IP internas.

  1. En Cloud Console, en el menú de navegación ( Menú de Navegación), haga clic en SQL .
  2. Haga clic en wordpress-db .
  3. Anote la dirección IP privada del servidor de Cloud SQL; se denominará [SQL_PRIVATE_IP].
  4. En el menú de navegación , haga clic en Compute Engine .

Tenga en cuenta que wordpress-us-private-ip se encuentra en us-central1, donde se encuentra su Cloud SQL, lo que le permite aprovechar una conexión más segura.

  1. Copie la dirección IP externa de wordpress-us-private-ip , péguela en una ventana del navegador y presione ENTER.
  2. Haga clic en Let’s Go .
  3. Especifique lo siguiente y deje los ajustes restantes como predeterminados:
Propiedad Valor
Nombre de usuario raíz
Contraseña escriba la [ROOT_PASSWORD] configurada cuando se creó la instancia de Cloud SQL
Host de base de datos [SQL_PRIVATE_IP]
  1. Haga clic en Enviar .

Tenga en cuenta que esta vez está creando una conexión directa a una IP privada, en lugar de configurar un proxy. Esa conexión es privada, lo que significa que no sale a Internet y, por lo tanto, se beneficia de un mejor rendimiento y seguridad.

  1. Haga clic en Ejecutar la instalación . Un ‘¡Ya instalado!’ Se muestra la ventana, lo que significa que su aplicación está conectada al servidor de Cloud SQL a través de una IP privada.
  2. En la barra de direcciones de su navegador web, elimine el texto después de la dirección IP y presione ENTER. ¡Se le presentará un blog de WordPress en funcionamiento!

5: Revisión

Hemos visto como , crear una base de datos de Cloud SQL y como configurarla para usar tanto una conexión externa a través de un proxy seguro como una dirección IP privada, que es más segura y de mayor rendimiento. Recuerde que solo puede conectarse a través de IP privada si la aplicación y el servidor de Cloud SQL están ubicados en la misma región y forman parte de la misma red de VPC. Si su aplicación está alojada en otra región, VPC o incluso proyecto, use un proxy para asegurar su conexión a través de la conexión externa.