Entradas

Mostrando las entradas etiquetadas como servidores web

Node como servicio en CentOS 7

Imagen
Al instalar Node este no lo hace como un servicio, por eso para entornos de producción donde es necesario que el sistema este activo 24/7 es necesario utilizar alguna herramienta para este propósito. Existen varias alternativas entre las cuales está crear un script y ejecutarlo como servicio, utilizar upstart o módulos propios de node como forever o pm2 , de este último va el post. PM2 es un gestor de procesos en entornos de producción para aplicaciones Node.js con un balanceador de carga incorporado. Permite mantener las aplicaciones siempre activas, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de un administrador del sistema. sudo npm install pm2@latest -g sudo pm2 startup sudo pm2 save sudo pm2 start app.js sudo systemctl restart pm2-root $ sudo pm2 start app.js [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /folder/app.js in fork_mode (1 instance) [PM2] Done. ┌──────────┬────┬──────┬─────┬─────...

Slim 3 en Apache como proxy de Nginx

Imagen
Supongo que si has llegado a este post es que conoces Slim , pero para los que no, voy a hacer una pequeña introducción. Slim es un micro framework PHP que te ayuda a escribir con rapidez aplicaciones web simples pero potentes y APIs. Aunque esa es su definición, Slim es realmente útil a la hora de crear servicios web. Ya va por la versión número 3 y aunque no tiene ni página en la Wikipedia, es bastante recomendable. Bien, yendo al grano. Si bien en su página web de documentación vienen detalladas las configuraciones para nginx, apache y otros servidores , lo que no viene es la configuración si tenemos un Nginx como front que utiliza Apache como proxy para las peticiones de PHP. Para este caso concreto lo que debemos hacer es configurar Nginx para que envíe la petición tal y como la recibe a Apache y que apache se encargue de procesarla. Imaginemos que el servicio web se encuentra en una subcarpeta de nuestra aplicación, /api, de manera que accedemos /api/public. Est...

Servidores web para Windows

Imagen
Llevo ya muchos años trabajando con servidores web, de ellos bastante tiempo sobre Windows y es bastante complicado. Llegar a una configuración óptima en Windows solo puede ser con prueba y error, no hay una receta mágica que te lo permita, pero no por ello son malos servidores, en mi opinión creo que se han dejado de lado. Windows representa sólo el 32,2 % en los sistemas operativos que mantienen servidores web. ¿Por qué tan poca cuota? Para montar un servidor web bajo Windows sólo existen 2 excusas potentes: Trabajas con ASP Tu base de datos está en Microsoft SQL Server Para el punto 1 no hay alternativa posible, ASP necesita IIS y por ello Windows. Por el contrario el punto 2 es más susceptible a cambio (y más ahora con los nuevos desarrollos en los que la propia Microsoft está involucrada como el driver ODBC y la adaptación a Linux del propio SQL Server ). Para trabajar con SQL Server no es necesario ASP, puedes acceder desde PHP con ODBC, eso si...

El modo pasivo de FTP en PHP

Antes de cualquier explicación debemos saber las diferencias entre el modo activo y el modo pasivo en FTP. Podemos decir, resumiendo mucho, en modo pasivo las conexiones son siempre abiertas por el pc cliente , mientras que en modo activo se abren por el que envía los datos, el servidor si se trata de bajar archivos o información al pc local, el cliente si se trata de subir archivos al servidor. Tendiendo lo anterior en cuenta en el modo activo se abre una conexión para datos desde el servidor a la maquina cliente, esto es, una conexión desde fuera hacia dentro; si la maquina cliente está protegida por un firewall, este filtra o bloquea la conexión entrante al serle un proceso desconocido. En modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el firewall no tiene ninguna conexión entrante que filtrar. Por este motivo la razón de que algunas funciones de PHP nos funcionen en un servidor u otro con el mismo código no depende de la versión inst...

mssql_connect(): Unable to connect to server

Existen dos posibles soluciones para este error de la librería de PHP mssql (obsoleta ya desde la versión 5.3 de PHP por la aparición del driver de Microsoft para SQL Server sqlsrv). El error unable to connect to server puede deberse a una de estas dos razones: La librería ntwdblib.dll perteneciente a las MS SQL Client Tools está desfasada, por tanto tenemos que localizarla en nuestro ordenador y descargar una versión más reciente. En la configuración del php.ini tenemos la directiva mssql.compatability_mode a 0 y deberíamos tenerla a 1. Con estas sencillas comprobaciones nos evitaremos muchos quebraderos de cabeza al intentar conectar nuestro servidor web con PHP y un servidor de base de datos SQL Server con esta librería.

Configurar Apache para acceder a carpetas remotas

Imagen
En el pasado post escribí sobre cómo configurar IIS 7 para acceder a carpetas remotas , este es el turno de apache. El problema en ambos casos es el mismo: el usuario que ejecuta el servicio por defecto no puede acceder a contenido ni funciones de red . La solución sin embargo en apache es mucho más simple y basta con cambiar este usuario en el servicio de apache. ¿Por qué? pues porque apache solamente tiene un servicio mientras IIS cuenta con varios que están relacionados entre si y cambiar los permisos muchas veces genera que los servicios no se reinicien debido a que no tienen suficientes permisos los nuevos usuarios o que servicios que dependen del servicio cambiado tienen usuarios distintos. Veamos como cambiar el usuario por defecto de un servicio apache. Lo primero es ir a inicio –> ejecutar y escribimos services.msc, en la nueva ventana localizamos el servicio de apache: Hacemos clic derecho y seleccionamos propiedades, en la nueva ventana elegimos inicio de sesión: ...

Acceder a contenido remoto en IIS 7 con PHP

Imagen
En realidad lo de PHP es por mi caso particular pero este post se aplica a cualquier script que vayamos a realizar pues trata realmente sobre los permisos de IIS para acceder a contenido en otros servidores distintos del local . Podrían ser en unidades de red pero en mi caso concreto lo hago accediendo a una carpeta compartida en un servidor externo . El origen del problema que impide a IIS acceder a unidades de red radica en los permisos de los usuarios por defecto que ejecutan los servicios o scripts PHP en mi caso. Existe una funcionalidad activada por defecto llamada acceso anónimo y esta se conecta por defecto con el usuario IUSR el cual no tiene permisos de red. Para acceder a esta funcionalidad abrimos el panel de control del IIS y accedemos en el nombre de nuestro servidor a la funcionalidad autentificación: La abrimos y seleccionamos la opción de acceso anónimo y en el panel derecho le damos a edit: Nos saldrá una nueva ventana Al pulsar en set elegimos en la nuev...