APACHE
El servidor HTTP Apache es un
servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux,
etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo
HTTP/1.12 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se
basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue
reescrito por completo. Su nombre se debe a que Behelendorf quería que tuviese
la connotación de algo que es firme y enérgico pero no agresivo, y la tribu
Apache fue la última en rendirse al que pronto se convertiría en gobierno de
EEUU, y en esos momentos la preocupación de su grupo era que llegasen las
empresas y "civilizasen" el paisaje que habían creado los primeros
ingenieros de internet. Además Apache consistía solamente en un conjunto de
parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor
"parcheado") suena igual que Apache Server.
El servidor Apache se desarrolla
dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation.
Apache presenta entre otras
características altamente configurables, bases de datos de autenticación y
negociado de contenido, pero fue criticado por la falta de una interfaz gráfica
que ayude en su configuración.
Apache tiene amplia aceptación en
la red: desde 1996, Apache, es el servidor HTTP más usado. Alcanzó su máxima
cuota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios
web en el mundo, sin embargo ha sufrido un descenso en su cuota de mercado en
los últimos años. (Estadísticas históricas y de uso diario proporcionadas por
Netcraft3 ).
La mayoría de las
vulnerabilidades de la seguridad descubiertas y resueltas tan sólo pueden ser
aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se
pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios
locales malévolos en las disposiciones de recibimiento compartidas que utilizan
PHP como módulo de Apache.
VENTAJAS
- Modular
- Código abierto
- Multi-plataforma
- Extensible
- Popular (fácil conseguir ayuda/soporte)
USO
pache es usado principalmente
para enviar páginas web estáticas y dinámicas en la World Wide Web. Muchas
aplicaciones web están diseñadas asumiendo como ambiente de implantación a
Apache, o que utilizarán características propias de este servidor web.
Apache es el componente de
servidor web en la popular plataforma de aplicaciones LAMP, junto a MySQL y los
lenguajes de programación PHP/Perl/Python (y ahora también Ruby).
Este servidor web es
redistribuido como parte de varios paquetes propietarios de software,
incluyendo la base de datos Oracle y el IBM WebSphere application server. Mac
OS X integra apache como parte de su propio servidor web y como soporte de su
servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland
en las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell
NetWare 6.5, donde es el servidor web por defecto, y en muchas distribuciones
Linux.
Apache es usado para muchas otras
tareas donde el contenido necesita ser puesto a disposición en una forma segura
y confiable. Un ejemplo es al momento de compartir archivos desde una
computadora personal hacia Internet. Un usuario que tiene Apache instalado en
su escritorio puede colocar arbitrariamente archivos en la raíz de documentos
de Apache, desde donde pueden ser compartidos.
Los programadores de aplicaciones
web a veces utilizan una versión local de Apache con el fin de previsualizar y
probar código mientras éste es desarrollado.
Microsoft Internet Information
Services (IIS) es el principal competidor de Apache, así como Sun Java System
Web Server de Sun Microsystems y un anfitrión de otras aplicaciones como Zeus
Web Server. Algunos de los más grandes sitios web del mundo están ejecutándose
sobre Apache. La capa frontal (front end) del motor de búsqueda Google está
basado en una versión modificada de Apache, denominada Google Web Server (GWS).
Muchos proyectos de Wikimedia también se ejecutan sobre servidores web Apache.
MODULOS
La arquitectura del servidor
Apache es muy modular. El servidor consta de una sección core y
diversos módulos que aportan mucha de la funcionalidad que podría considerarse
básica para un servidor web. Algunos de estos módulos son:
- mod_ssl -
Comunicaciones Seguras vía TLS.
- mod_rewrite -
reescritura de direcciones (generalmente utilizado para transformar
páginas dinámicas como php en páginas estáticas html para así engañar a
los navegantes o a los motores de búsqueda en cuanto a cómo fueron
desarrolladas estas páginas).
- mod_dav -
Soporte del protocolo WebDAV (RFC
2518).
- mod_deflate -
Compresión transparente con el algoritmo deflate del contenido enviado al cliente.
- mod_auth_ldap -
Permite autentificar usuarios contra un servidor LDAP.
- mod_proxy_ajp -
Conector para enlazar con el servidor Jakarta
Tomcat de páginas dinámicas en Java (servlets y JSP).
- mod_cfml -
Conector CFML usado
por Railo.
El servidor de base puede ser
extendido con la inclusión de módulos externos entre los cuales se encuentran:
- mod_cband -
Control de tráfico y limitador de ancho de banda.
- mod_perl -
Páginas dinámicas en Perl.
- mod_php -
Páginas dinámicas en PHP.
- mod_python -
Páginas dinámicas en Python.
- mod_rexx -
Páginas dinámicas en REXX y Object
REXX.
- mod_ruby -
Páginas dinámicas en Ruby.
- mod_aspdotnet -
Páginas dinámicas en .NET de Microsoft (Módulo retirado).
- mod_mono -
Páginas dinámicas en Mono
- mod_security - Filtrado a nivel de
aplicación, para seguridad.
PHP
PHP es un lenguaje de
programación de uso general de código del lado del servidor originalmente
diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros
lenguajes de programación del lado del servidor que se podían incorporar
directamente en el documento HTML en lugar de llamar a un archivo externo que
procese los datos. El código es interpretado por un servidor web con un módulo
de procesador de PHP que genera la página Web resultante. PHP ha evolucionado
por lo que ahora incluye también una interfaz de línea de comandos que puede
ser usada en aplicaciones gráficas independientes. PHP puede ser usado en la
mayoría de los servidores web al igual que en casi todos los sistemas operativos
y plataformas sin ningún costo.
PHP fue creado originalmente por
Rasmus Lerdorf en 1995. Actualmente el lenguaje sigue siendo desarrollado con
nuevas funciones por el grupo PHP.2 Este lenguaje forma parte del software
libre publicado bajo la licencia PHP que es incompatible con la Licencia
Pública General de GNU debido a las restricciones del uso del término PHP.
SINTAXIS
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title> Ejemplo básico PHP</title>
</head>
<body>
<?php
echo 'Hola mundo';
?>
</body>
</html>
CARACTERÍSTICAS DE PHP
Características
Orientado al desarrollo de aplicaciones
web dinámicas con acceso a información almacenada en una base de
datos.
- Es considerado un lenguaje fácil de aprender, ya
que en su desarrollo se simplificaron distintas especificaciones, como es
el caso de la definición de las variables primitivas, ejemplo que se hace
evidente en el uso de php
arrays.
- El código fuente escrito en PHP es invisible
al navegador web y al cliente, ya que es el
servidor el que se encarga de ejecutar el código y enviar su resultado
HTML al navegador. Esto hace que la programación en PHP sea segura y
confiable.
- Capacidad de conexión con la mayoría de los motores
de base de datos que se utilizan en la actualidad, destaca su conectividad
con MySQL y PostgreSQL.
- Capacidad de expandir su potencial utilizando
módulos (llamados ext's o extensiones).
- Posee una amplia documentación en su sitio web
oficial, entre la cual se destaca que todas las funciones del sistema
están explicadas y ejemplificadas en un único archivo de ayuda.
- Es libre,
por lo que se presenta como una alternativa de fácil acceso para todos.
- Permite aplicar técnicas de programación orientada a objetos.
Incluso aplicaciones como Zend framework, empresa que desarrolla PHP,
están totalmente desarrolladas mediante esta metodología.
- No requiere definición de tipos de variables aunque
sus variables se pueden evaluar también por el tipo que estén manejando en
tiempo de ejecución.
- Tiene manejo de excepciones (desde PHP5).
- Si bien PHP no obliga a quien lo usa a seguir una
determinada metodología a la hora de programar, aún haciéndolo, el
programador puede aplicar en su trabajo cualquier técnica de programación
o de desarrollo que le permita escribir código ordenado, estructurado y
manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho
del patrón de diseño Modelo Vista Controlador (MVC),
que permiten separar el tratamiento y acceso a los datos, la lógica de control y la interfaz de usuario en tres componentes
independientes.
- Debido a su flexibilidad ha tenido una gran acogida
como lenguaje base para las aplicaciones WEB de manejo de contenido, y es
su uso principal.
Inconvenientes
- Como es un lenguaje que se interpreta en ejecución,
para ciertos usos puede resultar un inconveniente que el código fuente no
pueda ser ocultado. La ofuscación es
una técnica que puede dificultar la lectura del código pero no
necesariamente impide que el código sea examinado.
- Debido a que es un lenguaje interpretado, un script
en PHP suele funcionar considerablemente más lento que su equivalente en
un lenguaje de bajo nivel, sin embargo este inconveniente se puede
minimizar con técnicas de cache tanto en archivos como en memoria.
- Las variables al no ser tipificadas dificulta a los
diferentes IDEs para ofrecer asistencias para el tipificado del código,
aunque esto no es realmente un inconveniente del lenguaje en sí. Esto es
solventado por Zend Studio añadiendo un comentario con el tipo a la
declaración de la variable.
XAMPP, LAMP, WAMP
XAMPP es un
servidor independiente de plataforma, software libre, que consiste
principalmente en la base de datos MySQL, el servidor Web Apache y los
intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del
acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache,
MySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como
un servidor Web libre, fácil de usar y capaz de interpretar páginas dinámicas.
Actualmente XAMPP esta disponible para Microsoft Windows, GNU/Linux, Solaris, y
MacOS X.
LAMP presenta una
funcionalidad parecida a XAMPP, pero enfocada en Linux, y WAMP lo hace
enfocado en Windows.
MySQL
MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con más de seis millones de
instalaciones.1 MySQL
AB —desde enero de 2008 una subsidiaria de Sun
Microsystems y ésta a su vez de Oracle
Corporation desde abril
de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU
GPL para cualquier uso
compatible con esta licencia, pero para aquellas empresas que quieran
incorporarlo en productos privativos deben comprar a la empresa una licencia
específica que les permita este uso. Está desarrollado en su mayor parte
en ANSI C.
Al contrario de proyectos como Apache, donde el software es desarrollado por una
comunidad pública y los derechos de autor del código están en poder del autor
individual, MySQL es patrocinado por una empresa privada, que posee el
copyright de la mayor parte del código. Esto es lo que posibilita el esquema de
licenciamiento anteriormente mencionado. Además de la venta de licencias
privativas, la compañía ofrece soporte y servicios. Para sus operaciones
contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David
Axmark, Allan Larsson y Michael Widenius.
MySQL es usado por muchos sitios web grandes y populares, como Wikipedia,2 Google3 4 (aunque no para búsquedas), Facebook,5 6 7 Twitter,8 Flickr,9 y YouTube.
PLATAFORMAS
MySQL funciona sobre múltiples plataformas, incluyendo:
- OpenBSD
- OS/2 Warp
- QNX
- SGI IRIX
- Solaris
- SunOS
- SCO
OpenServer
- SCO UnixWare
- Tru64
- eBD
- Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8 y Windows Server (2000, 2003, 2008 y 2012).
- OpenVMS18
CARACTERÍSTICAS
- Usa GNU
Automake, Autoconf, y Libtool para portabilidad
- Uso de
multihilos mediante hilos del kernel.
- Usa tablas
en disco b-tree para búsquedas rápidas con compresión de índice
- Tablas hash
en memoria temporales
- El código
MySQL se prueba con Purify (un detector de memoria perdida comercial) así
como con Valgrind, una herramienta GPL.
- Completo
soporte para operadores y funciones en cláusulas select y where.
- Completo
soporte para cláusulas group by y order by, soporte de funciones de
agrupación
- Seguridad:
ofrece un sistema de contraseñas y privilegios seguro mediante
verificación basada en el host y el tráfico de contraseñas está cifrado al
conectarse a un servidor.
- Soporta
gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50
millones de registros.
- Se permiten
hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede
consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho
de límite son 1000 bytes (500 antes de MySQL 4.1.2).
- Los
clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier
plataforma. En sistemas Windows se pueden conectar usando named pipes y en
sistemas Unix usando ficheros socket Unix.
- En MySQL
5.0, los clientes y servidores Windows se pueden conectar usando memoria
compartida.
- MySQL contiene
su propio paquete de pruebas de rendimiento proporcionado con el código
fuente de la distribución de MySQL.
APLICACIONES
MySQL es muy utilizado en aplicaciones
web, como Drupal o phpBB, en plataformas
(Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento
de errores como Bugzilla. Su popularidad como aplicación web está muy ligada
a PHP, que a
menudo aparece en combinación con MySQL.
MySQL es una base de
datos muy rápida en la lectura cuando utiliza el motor no
transaccional MyISAM,
pero puede provocar problemas de integridad en entornos de alta concurrencia en
la modificación. En aplicaciones web hay baja concurrencia en la modificación
de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a
MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que
va a utilizar MySQL, es importante monitorizar de antemano el rendimiento para
detectar y corregir errores tanto de SQL como de programación.
LOCALHOST
En informática,
en el contexto de redes TCP/IP, localhost es un nombre reservado
que tienen todas las computadoras, ratón o dispositivo independientemente de
que disponga o no de una tarjeta
de red ethernet.
El nombre localhost es traducido como la dirección
IP de loopback127.0.0.1 en IPv4, o como la dirección ::1 en IPv6.
USO
La dirección de loopback se puede
usar para probar el funcionamiento de TCP/IP haciendo ping a 127.0.0.1, al
recibir una respuesta se puede asumir que el software asociado al protocolo
está bien (el estado del hardware, como la tarjeta de red, no lo conocemos con
esta prueba, ya que no llega a salir del propio equipo).
Con fines educativos se suelen
instalar servidores locales http como XAMPP, LAMP o WAMP a los cuales se tendrá
acceso con localhost o 127.0.0.1 desde el navegador.
Con fines de restricción de
direcciones web, se modifica la correspondencia de dominios y direcciones IP en
el archivo "hosts" del sistema operativo, haciendo que cuando entres
a una dirección Web en específico, esta te redirija a 127.0.0.1.
BIOGRAFIAS