Pensando en Red nada es tan fácil como parece serlo

12mar/080

Analizando como poner en marcha un sitio Web de alto rendimiento I

La puesta en marcha de un servicio web de alto rendimiento no nace de la noche a la mañana. Es un trabajo constante en el que tienen que ir de la mano la cordinación de más de un departamento. El departamento de desarrollo tiene que preveer el crecimiento haciendo escalable el desarrollo de la aplicación coordinando con las necesidades y/o requisitos del departamento de sistemas.

Un papel fundamental para su crecimiento es la disponibilidad y velocidad del servicio. Aquí es donde se tiene que analizar como vamos a hospedar la web.

En cuanto al desarrollo hay que preveer la escabilidad técnica por parte del equipo de sistemas para el correcto funcionamiento con tráfico elevado.

El análisis de la base de datos es un papel muy muy pero muy importante en todo esto. Una vez completado el esquema de la BD es importante el definir que tablas tendrán más escritura para poder, en un mañana próspero y posible la separación de BD's con tablas diferentes en caso de que así lo requiera el proyecto. No obstante, MySQL puede dar mucho juego. Desde el montar un cluster de BD a crear BD's con replicación o separar las tablas de la BD en diferentes BD con la desventaja que ello podría acarrear en un futuro.

Ahora es cuando nos sentamos a pensar con que tecnología vamos a trabajar. Exceptuando los servicios de Microsoft no conozco ningún sitio web de alto rendimiento que esté funcionando con ISS por lo que por el momento vamos a comenzar con tecnologías libres.

Sistema Operativo: Debian Estable
Servidor Web: Apache 2
Base de datos: MySQL 5.0
Código: PHP 5.1

10feb/082

Instalación de Lighttpd (Pronunciado Lighty)

Descargamos y descomprimimos Lighttpd:

wget http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz
tar xvzf lighttpd-1.5.0-r1992.tar.gz
cd lighttpd-1.5.0/

Configuramos:

./configure
make
make install

// Copiamos el directorio de los sources de lighttpd en /usr/src por seguridad, por si necesitamos
desinstalarlo y demás algún día.

cp lighttpd-1.5.0 /usr/src/ -R

Ahora vamos a crear el directorio de configuración si no existe (/etc/lighttpd) y copiar en el el fichero principal de configuración, que se encuentra entre los directorios del código fuente

mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/

Vamos a editar el fichero lighttpd.conf y ver las partes más importantes.

nano /etc/lighttpd/lighttpd.conf

Módulos del servidor:

Se estrablecen los módulos activos dentro de la directiva server.modules(), de esta forma:

server.modules = ("mod_rewrite","mod_alias","mod_accesslog")

De momento utilizaremos solo estos modulos. mod_rewrite para las normas de rewrite, mod_alias para los alias del servidor, mod_access para denegar el acceso a ciertos archivos y mod_accesslog para los log de acceso y error.

Configuración básica del servidor:

server.document-root = "/home/web/htdocs" # Directorio raiz del servidor
server.errorlog = "/var/log/lighttpd/error.log" # Archivo de log de errores
index-file.names = ( "index.phtml", "index.php" ) # Archivos de índice y su orden.
accesslog.filename = "/var/log/lighttpd/access.log" # Log de acceso del servidor.
url.access-deny = ( "~", ".inc" ) # Deniega la descarga de los archivos con las extensiones indicadas.
static-file.exclude-extensions = ( ".php", ".phtml") # Extensiones que el servidor tratará como dinámicas.
#server.port = 81 # Puerto por defecto. Si está comentado usa el 80
#server.bind = "grisu.home.kneschke.de" # Host del que escuchará peticiones por defecto. Si está comentado acepta todos.
server.error-handler-404 = "/missing.phtml" # Archivo que mostrará cuando se produzca un error 404 (No se encuentra la página)

Para empezar, con estas opciones nos vale.
Importante:
Si queremos incluir algun fichero;

include "lighttpd-inc.conf"

El fichero debe estar situado en /etc/lighttpd/

Por último, vamos a configurar nuestro servidor para que funcionen las páginas en php 5. Para ello necesitamos instalar el paquete php5-cgi y activar el módulo "mod_proxy_backend_fastcgi".

apt-get install php5-cgi

Para que todo funcione aún mejor, añadimos al fichero php.ini de /etc/php5/cgi la siguiente linea:

server.modules = ("mod_rewrite","mod_alias","mod_accesslog","mod_proxy_backend_fastcgi","mod_proxy_core",)

Y ahora configuramos el módulo:

$PHYSICAL["existing-path"] =~ ".php$" {
proxy-core.allow-x-sendfile = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" )
proxy-core.max-pool-size = 16
}

En nuestro caso, como tambien utilizamos archivos phtml haremos una copia:

$PHYSICAL["existing-path"] =~ ".phtml$" {
proxy-core.allow-x-sendfile = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" )
proxy-core.max-pool-size = 16
}

*Importante: por último para que se lanzen los procesos php ejecutar desde un script: spawn-fcgi -s /tmp/php-fastcgi.sock -f /usr/bin/php-cgi -u www-data -g www-data -C 5 -P /var/run/spawn-fcgi.pid

Otros detalles "sin importancia":

modulo rewrite: Son totalmente convertibles las máscaras del rewrite de apache a lighttpd sin demasiado esfuerzo, solo cambia la sintaxis dentro de lighttpd.conf (mejor hacer un include)
más info acerca del rewrite en: http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite

modulo alias: Creas alias virtuales para poder acceder a directorios que estan fuera del docroot (por ejemplo) o acortar rutas (por ejemplo tambien)

Ejemplo: alias.url = ( "/cgi-bin/" => ""/home/web/htdocs/rg/cgi-bin/" )

Ya tenemos un servidor lighttpd sencillo que soporta procesa php.

Manual gracias a: MiJack

7feb/081

Como obtener la fecha en PHP/MySQL

Llevo años trabajando como desarrollador web y nunca me había encontrado con un código como este:

fecha_php.jpg

Si programas en PHP entenderás sin problemas esta barbarie, si no entiendes el código sólo decirte que está rizando el rizo rizado de la permanente...

Archivado en: php 1 Comentario
10oct/070

Trabajando con la nueva API de Youtube

El compañero Tabernicola nos ha deleitado con un artículo fuera de lo común en su blog, pero el alma de informático le ha calado hondo y no ha podido evitar el escribir este manualillo de como usar el API. Desde luego es de obligada lectura si eres desarrollador y/o te gusta este tipo de cosillas.

Artículo de como usar la API de Youtube

Archivado en: php, Videos No hay comentarios

Page optimized by WP Minify WordPress Plugin