Entradas

Mostrando las entradas etiquetadas como apache

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...

Asegurando nuestro servidor Apache

Imagen
Tan importante como asegurar y proteger nuestro código PHP es asegurar y proteger el servidor sobre el que corre, en la mayoría de los casos apache. En este fantástico tutorial en inglés nos dan 13 pautas para tener un servidor apache más robusto e incluso algo optimizado. Ocultar las versiones del sistema operativo y de apache. Quitar la posibilidad de listar directorios. Mantener siempre nuestro servidor apache actualizado. Eliminar módulos innecesarios. Tener un grupo y un usuario diferente que corran apache en entornos linux. Restringir el acceso a directorios. Utilizar los módulos security y evasive para evitar ataques de denegación de servicio. En este enlace tenéis como instalar mod_evasive en entornos xampp y en este encontrareis versiones para diferentes compilaciones de apache . No permitir los enlaces simbólicos . Des-habilitar la inclusión del lado del servidor y la ejecución de scripts CGI. Limitar el tamaño de las solicitudes. Protegernos de ata...

Configurar PHP para cada subdominio

Por defecto, los ajustes del archivo de configuración de PHP (php.ini) se aplican a nivel global, por servidor si es dedicado o por usuario si es compartido. Muchas veces es posible que necesitemos sustituir esta configuración predeterminada para un subdominio o subdirectorio, para hacerlo debemos hacer lo siguiente: copiar el archivo php.ini a nuestro subdominio editar o crear un archivo .htaccess e incluir la siguiente línea SetEnv PHPRC. editar el archivo php.ini con las características que queramos. Con estos 3 pasos quedaría configurado un archivo php.ini para nuestro subdominio independiente de la configuración global de PHP pero este archivo sería visible con lo cual debemos protegerlo con el mismo archivo htaccess: <Files ~ "\.ini$"> Order allow,deny Deny from all </Files> Esto denegará cualquier solicitud web a cualquier archivo en ese directorio que termine en .ini; evitando así que la configuración de PHP pueda ser vista por otros. Ahora ...

Nuevas funcionalidades en PHP 5.5

Una vez que hemos visto todas las ventajas que nos puede traer PHP 5.4 y sabiendo que esta no es la última versión estable sería interesante ver cuáles son las ventajas de esta para una vez decididos migrar optemos por una u otra. Generadores Una de las necesidades de programación más comunes, es ser capaz de realizar una acción sobre todos los elementos de un objeto. Por ejemplo, usando un foreach en una matriz, para obtener cada clave o, un foreach sobre un objeto, para obtener el nombre de cada parámetro y su valor. El mecanismo para la aplicación de este comportamiento es conocido como un iterador, que se utiliza para recorrer todos los elementos de un objeto o una matriz. Los iteradores se pueden definir de forma explícita con clases personalizadas, pero eso puede ser un proceso difícil de manejar y complejo, con apaños y, más que un puñado de funciones. ¿Qué pasa si quiero actuar en un subconjunto de una matriz, y realizar algo de lógica a medida que avanzo, pero aún así ser...

XAMPP Call to undefined function ldap_connect()

Imagen
Para activar la librería LDAP en cualquier entorno Windows debemos seguir los siguientes pasos: Activar la extensión en el archivo php.ini Agregar a la variable de sistema PATH la ruta de PHP. Cito el manual de PHP Para que esta extensión funcione, hay unos ficheros DLL que deben estar disponibles en el sistema de Windows PATH . Para más información en como hacer esto, vea la FAQ titulada " Como añadir mi directorio PHP en el PATH de Windows ". Aunque copiar los ficheros DLL desde el directorio PHP al directorio del sistema de Windows también funciona (porque el directorio del sistema por defecto es el PATH del sistema), esto no se recomienda. Esta extensión requiere que los siguientes ficheros estén en el PATH : libeay32.dll y ssleay32.dll Las versiones anteriores de PHP 4.3.0 requieren adicionalmente libsasl.dll . Para activar la librería en el php.ini lo único que tenemos que hacer es descomentar (eliminar el ; inicial) la siguiente línea ;extension=php_ldap...

MySQL 5.6 en CentOS 6 con PowerStack

Imagen
Todos los que trabajan con versiones estables y profesionales de Linux saben que la llegada de las últimas versiones de un determinado software casi nunca llegan con los repositorios oficiales, siempre es necesario utilizar repositorios de terceros que complementan o actualizan nuestro servidor. El trio apache + PHP + MySQL no está exento de este problema y si bien es cierto que para CentOS contábamos con los repositorios Remi estos últimamente están algo desfasados, sobre todo con apache y MySQL, fundamentalmente este último. Buscando un poco de información por internet he encontrado en foros oficiales que es muy probable que Remi deje de dar soporte a MySQL, esto fundamentalmente tras la compra de esta última por Oracle. Remi comenzaría a utilizar MariaDB, una base de datos de los fundadores de MySQL que muchos dicen que es mejor pero pocos han probado. Entonces ¿que hacer si queremos seguir teniendo las ultimas versiones de MySQL utilizando Yum, esta brillante herramienta de Cent...

Monitorar uso de la CPU por procesos

Imagen
Hasta ahora ninguno de los plugins que hemos visto permite saber el uso de la CPU por usuarios o por procesos pero para ello hay 2 plugin adicionales que te permiten hacer esa tarea. De esta forma se puede monitorar el consumo de CPU de procesos como apache, mysql y el propio munin. Los citados plugin se encuentran en la siguiente ruta y se llaman cpu-usage-by-process y cpubyuser, el primero lo renombraremos como cpubyproc y modificaremos el archivo de configuración de munin en /etc/munin/plugin-conf.d/munin-node agregándole las siguientes líneas: [cpubyproc] env.procs crond httpd mysqld munin-node [cpubyuser] env.USERS apache mysql munin los proceso y los usuarios se pueden modificar a gusto de cada cual. Para saber el listado de procesos activos escribiremos ps aux y para el listado de usuarios cat /etc/passwd | cut -d":" –f1. Importante: para evitar errores del tipo Warning: bad syntax, perhaps a bogus '-'? debemos buscar la línea 68 del plugin cpubyproc y...

Monitorar Apache en CentOS 6 con Munin

Imagen
Al igual que para MySQL, los plugins de Apache no vienen activados por defecto . En este manual los activaremos y además agregaremos uno extra que no es oficial. aunque hay muchos más pero este es el que me pareció mas interesante. Entre los plugins que viene con la instalación de apache se puede monitorar lo siguiente: accesos por segundo procesos activos, inactivos y slots libres número de bytes por segundo Y el plugins adicional que podemos encontrar aquí nos permitirá ver el tamaño medio en bytes de los procesos de apache. Los tres primeros como ya están en el directorio /usr/share/munin/plugins/ podemos activarlos de la siguiente manera: ln -s /usr/share/munin/plugins/apache_* /etc/munin/plugins/ No son necesarias más configuraciones extras. El plugin que no es oficial presenta algunos bugs y es por ello que hay que modificar algunas líneas, el plugin se llama apache_memmory : Modificamos las líneas 13 y 14 con el usuario que ejecuta apache (apache) y el nombre del...

Instalando Munin en CentOS 6

Imagen
Munin es una herramienta para el monitorado de recursos que puede ayudar a analizar las tendencias de los mismos e identificar y solucionar problemas asociados a una bajada de rendimientos en nuestros servidores. Según está diseñado Munin llega a ser una herramienta prácticamente de plug and play aunque dependiendo de la distribución dónde la instalemos puede dar algunos problemas o no. Si bien es cierto que una instalación predeterminada proporciona una gran cantidad de gráficos con casi ningún trabajo para el caso de monitorado de MySQL y Apache son necesarias varias configuraciones extras las cuales veremos en otros post. Sin más os dejo el paso a paso de la instalación para la última versión de Munin a la fecha (2.0.8) en un CentOS 6.3. Lo primero que debemos hacer es instalar algunos paquetes extras: yum install perl-XML-SAX Es muy importante instalar este paquete antes de la instalación de Munin porque si tienes habilitado el repositorio de RPMForge te puede dar colisiones...

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: ...

Requerimientos PHP, Apache y SQL Server driver

Cada vez nos volvemos más locos con las distribuciones de PHP, si son compatibles con apache, con cuál distribución de apache, en qué están compiladas, para que sistemas son, en fin un sin número de preguntas que nos pueden llegar a volver loco. En este post voy a intentar resumir estos requerimientos agregando el driver de Microsoft para PHP y SQL Server. Importante: Este post se basa en entornos con Windows. Requerimientos Driver SQL Server para PHP Las versiones 1.0 y 1.1 de este driver están completamente fuera de soporte por parte de Microsoft, encontrarlas tiene que ser en sitios externos y no oficiales, estas versiones son compiladas para equipos de 32 bits y en VC6 además de que no soportan Microsoft Native Client 2008 R2, necesitan ambas el 2005. La versión 2.0 necesita PHP > 5.2.13 y Microsoft SQL Server 2008 R2 Native Client y la versión 3.0 PHP > 5.3.6 y Microsoft SQL Server 2012 Native Client. Requerimientos PHP >= V5.2 estas versiones aparecen compiladas ta...

Crear certificados digitales en Windows

Este manual se podría decir que es una actualización del artículo wiki crear e instalar certificados digitales en Apache HttpServer . Lo primero que debemos hacer es descargarnos la distribución de OpenSSL para Windows . Para los que no lo sepan y parafraseando a la Wikipedia decir que OpenSSL es un software open source para libre descarga que incluye un paquete de herramientas de administración y bibliotecas relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web para acceso seguro a sitios con el protocolo HTTPS, herramientas que ayudan al sistema a implementar el Secure Sockets Layer (SSL). Una vez que hemos descargar OpenSSL debemos ejecutar el Símbolo del sistema y navegar hasta la ruta de instalación de este programa. Esto es muy importante porque de hacerlo desde otras carpetas nos puede dar un error del tipo 'openssl' is not recognized as an internal or external command, operable program or batch...

Time to First Byte

El Time To First Byte o TTFB es una medida que se utiliza a menudo como un indicador de la capacidad de respuesta de un servidor web o de otros recursos de red. Es la duración entre el momento en que se realiza una petición HTTP y la recepción del primer byte de la página por el navegador. Se compone del tiempo de conexión de socket, el tiempo necesario para enviar la solicitud HTTP y el tiempo para conseguir el primer byte de la página. Según la definición anterior podemos llegar a la conclusión de que el Time To First Byte depende de las capacidades de nuestro servidor y ellas son las que influyen directamente en que este tiempo sea mayor o menor. Aquí os dejo una web en la que podremos medir el Time to First Byte de nuestro sitio. ¿Cómo mejorar el Time To First Byte ? La respuesta es simple, mejorando las capacidades de nuestro servidor o eliminado carga del mismo. En este segundo aspecto es muy importante ver si estamos utilizando herramientas de compresión de códigos JS o CSS ...

Direcciones IP emisoras de SPAM

A partir de este mes intentaré publicar mensualmente una lista con las direcciones IPs emisoras de spam que detecte en todos los sitios web para los que trabajo. El listado irá organizado de mayor emisor a menor de spam. De esta forma podremos agregar estas direcciones ip en nuestros archivos htaccess para bloquearlas con la instrucción deny from ip . Sin más aquí os dejo el listado de marzo de 2011: Ataques Dirección IP Último ataque 78 91.201.66.97 2011-03-30 14:14:29 78 91.224.160.3 2011-03-30 13:06:42 61 91.201.66.98 2011-03-29 21:29:56 36 91.224.160.4 2011-03-29 11:58:10 35 91.201.66.76 2011-03-30 17:09:47 10 89.112.14.13 2011-03-30 06:28:33 10 188.143.232.120 2011-03-21 01:00:06 6 95.65.79.220 2011-03-19 15:28:08 6 95.65.77.99 2011-03-19 13:09:18 6 94.100.25.52 2011-03-26 16:22:39 ¿Os coincide alguna?

Instalación y configuración de Subversion en Windows

Imagen
¿Qué es Subversion? Antes de saber que es Subversion debemos tener en cuenta algunos conceptos previos cómo el de versión , control de versiones y sistemas de control de revisiones . Una versión , revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas. Un Sistema de Control de Revisiones ( Revision Control System - RCS) es una implementación de software para el control de versiones que automatiza las tareas de guardar, recuperar, registrar, identificar y mezclar versiones de archivos. Resumiendo, Subversion no es más que un sistema de control de versiones diseñado específic...

Actualizar PHP, Apache y MySQL en CentOS

Imagen
Este post pretende actualizar en un servidor CentOS 5.5 a las versiones de PHP 5.3.5, apache 2.2.8 y MySQL 5.5.8. CentOS 5.5 por defecto viene con unas versiones obsoletas de PHP (5.1.6), apache 2.0 y MySQL 5.0, instalando algunos nuevos repositorios , sobre todo el de CentOS Testing, se pueden actualizar estas versiones a algunas un poco más actuales pero en el caso de PHP y MySQL (sobre todo) aún insuficientes. Sin embargo para actualizar apache a la versión 2.2.8 solo es necesario este repositorio y el comando yum update httpd. Nota: al actualizar apache es recomendable guardar el archivo httpd.conf que se localiza en /etc/httpd/conf y luego sobrescribir el creado por el instalador con el antiguo, o al menos comparar los contenidos porque sobrescribe muchas directivas como las codificaciones UTF8 (AddDefaultCharset UTF-8) y StartServers, MinSpareServers, MaxSpareServers, ServerLimit, MaxClients, MaxRequestsPerChild. Además elimina los siguientes tipos de datos (necesari...

Benchmark Apache y MySQL en CentOS

Imagen
Decir que este post es un benchmark en toda regla es muy ambicioso, lo que voy a hacer es compartir los datos que he obtenido en mi caso particular que tal vez puedan ser aplicados a otros casos en los cuales no creo que difieran mucho los resultados globales. Para los que no estén familiarizados con el tema, un benchmark no es más que una comparativa, en este caso será medir el rendimiento de Apache y MySQL luego de una actualización de versiones. Servidor de pruebas de carga: Sistema Operativo: CentOS 5.5 (Final) Versión Núcleo de Linux: 2.6.18-194.17.4.el5 Versión GCC: 4.1.2 20080704 (Red Hat 4.1.2-48) CPU: 4 x Six-Core AMD Opteron(tm) Processor 2423 HE 2009 MHZ RAM: 5 GB Versiones y programas a comparar: Apache 2.2.3 vs. 2.2.8 PHP 5.2.10 vs 5.3.5 MySQL 5.0.64 vs 5.5.8 En el siguiente gráfico se muestra el consumo de CPU durante una semana, la línea roja significa el momento ...

Diferencias entre apache 2.0 y 2.2

El otro día estuve instalando apache 2.2 y noté algunas diferencias interesantes respecto a la versión 2.0 del mismo servidor web. Librerías incluidas por defecto en apache 2.2 Ahora apache 2.2 trae instaladas por defecto las librerías xml, zip y mycrypt. Módulos sustituidos en apache 2.2 La nueva versión de apache ha sustituido algunos módulos y los ha unificado con otros que trae instalados por defecto, dichos módulos sustituidos en la versión 2.2 son los siguientes: LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule imap_module modules/mod_imap.so

Apache, PHP y SQL Server: VC9 y x86

Imagen
Este manual tiene el objetivo de instalar las últimas versiones de Apache, PHP y el driver de SQL Server de Microsoft para PHP . El software se instalará en una máquina con sistema operativo de 64 bits y se instalarán las versiones compiladas en VC9 y la distribución de PHP Thread Safe (TS). Una traducción un poco literal para las versiones de PHP sería Thread Safe (segura) y otra Non Thread Safe (no segura). Diferencias entre las versiones de PHP Thread Safe y Non-Thread Safe Diferencias entre VC9 y VC6 La diferencia entre las versiones VC6 y VC9 es el compilador usado para generarlas. VC6 (Visual Studio 6 Compiler) y VC9 (Visual Studio 2008 Compiler) Si usas PHP con Apache 1 o Apache2 de apache.org tienes que utilizar la versión VC6 de PHP. Si usas PHP con IIS, debe utilizar las versiones de PHP VC9. Las versiones VC6 se compilan con el antiguo Visual Studio 6 compilador y las versiones VC9 se compilan con el compilador de Visual Studio 2008 y tiene mejoras en el rendimie...