1
Instalación, configuración y desarrollo de
aplicación Web estudiando diversas alternativas
de alojamiento
Ingeniería Técnica en Informática de Sistemas
Marzo 2012
Alumno: Jorge Molió Latorre
Director: Ángel Rodas Jordá
2
Resumen
El presente documento recoge la Memoria del Proyecto Fin de Carrera que hemos
realizado. Los capítulos que en él se encontrarán son descritos brevemente a
continuación:
Introducción
En este primer capítulo el lector encontrará una descripción detallada del proyecto en
la que se incluyen los objetivos del mismo, la motivación que nos ha llevado a realizar
el presente PFC y la exposición de los materiales y métodos utilizados.
Alojamiento web
En este segundo capítulo haremos hincapié en la importancia de un buen nombre de
dominio y elaboraremos un estudio sobre las empresas registradoras de dominios.
También describiremos como instalar y configurar nuestro propio servidor Web, y
también, por el contrario expondremos las distintas posibilidades donde hospedar un
sitio Web.
Creación del entorno web
En este tercer capítulo nos hemos centrado en el descubrimiento y descripción de los
requisitos funcionales de la aplicación. Donde explicaremos detalladamente los Casos
de Uso. Describiremos todas las tareas que se han realizado para lograr la elaboración
del Modelo Conceptual de Datos. Explicaremos los componentes que interactúan entre
sí en cada uno de los tres niveles de diseño. Y haremos una breve descripción de las
tecnologías que se han utilizado en el desarrollo de la aplicación, las herramientas con
las que hemos trabajado y las pruebas que se han realizado sobre el producto
realizado.
Promoción y posicionamiento Web
En este cuarto capítulo analizaremos las técnicas de posicionamiento web SEO y las
utilizaremos para posicionar mejor nuestro sitio web. También realizaremos un estudio
sobre portales especializados en turismo rural y presentaremos un análisis de las
características de los tres mejores portales.
Conclusiones
Ya para finalizar se listan una serie de conclusiones a las que hemos llegado durante la
elaboración de este Proyecto Fin de Carrera.
3
Índice de contenidos
1.- Introducción…………………………………………………………………………………………………. 5
1.1.- Motivación………………………………………………………………………………….…... 5
1.2.- Objetivos…………………………………………………………………………………….….. 6
1.3.- Definiciones, acrónimos y abreviaturas………………………………………….…… 6
1.4.- Materiales y métodos…………………………………………………………………….…. 8
2.- Alojamiento Web…………………………………………………………………………………….…… 12
2.1.- Nombre de dominio………………………………………………………………………… 12
2.2.- Alojamiento propio…………………………………………………………………………. 15
2.2.1.- Instalación Turnkey Lamp………………………………………………….. 16
2.2.2.- Configuración del servidor...………………………………………………. 17
2.2.2.1.- Configuración de la interfaz de red...………..…………... 17
2.2.2.2.- Actualización de los repositorios………………………….… 19
2.2.2.3.- Configuración de los servidores virtuales……………….. 20
2.2.2.4.- Instalación y configuración servidor vsftp…………….... 22
2.2.2.5.- Uso de MySQL e iptables………………………………….…… 26
2.2.3.- Redireccionar hacia nuestro servidor……………………………..……. 29
2.3.- Alojamiento en la red…………………………………………………………….……….. 32
2.3.1.- Estudio de las empresas de hosting…………………………….……… 33
2.3.2.- Elección de 1and1………………………………………………………..…… 36
2.3.3.- Asociar nombre a nuestra cuenta……………………………………..… 36
3.- Creación del entorno web…………………………………………………………………………….. 39
3.1.- Especificación de los requisitos……………………………………………………….. 39
3.1.1.- Propósito y ámbito………………………………………………………....… 39
3.1.2.- Descripción general…………………………………………………………… 40
3.1.3.- Requisitos funcionales…………………………………………………….…. 43
3.2.- Análisis………………………………………………………………………………………….. 51
3.2.1.- Diagramas de casos de uso……………………………………………….. 52
3.2.2.- Diagrama de clases…………………………………………………………… 54
3.3.- Diseño…………………………………………………………………………………………… 56
3.3.1.- Nivel de presentación………………………………………………………… 58
3.3.2.- Nivel de aplicación………………………………………………………....... 63
3.3.3.- Nivel de persistencia………………………………………………….……… 64
3.4.- Implementación Web………………………………………………………………..……. 65
3.4.1.- Tecnologías utilizadas…………………………………………………..…… 65
3.4.2.- Implementación de la interfaz……………………………………………. 72
3.4.3.- Implementación de la funcionalidad………………………………..….. 75
3.4.4.- Implementación de la gestión de datos………………………….……. 78
3.4.5.- Pruebas……………………………………………………………………….….. 80
4
4.- Promoción de una página Web……………………………………………………………………… 81
4.1.- Técnicas de posicionamiento Web SEO…………………………………………….. 82
4.1.1.- Etiqueta <TITLE>…………………………………………………………….. 84
4.1.2.- Metatag…………………………………………………………………………... 85
4.1.3.- Contenidos en etiquetas <H1>,<p>…………………………….…….. 88
4.1.4.- Contenidos en imágenes y su tamaño…………………………………. 89
4.1.5.- Dominios y URL amigables……………………………………………….… 90
4.1.6.- Geolocalización. Webs con idiomas……………………………….……. 93
4.1.7.- Técnicas fraudulentas. Penalizaciones…………………………….…… 95
4.2.- Ficheros complementarios………………………………………………………………. 99
4.2.1.- Sitemap……………………………………………………………………..……. 99
4.2.2.- Robots.txt………………………………………………………………….…... 100
4.2.3.- htaccess…………………………………………………………………….…… 101
4.2.4.- Estilos y javascript……………………………………………………….….. 102
4.3.- Promoción externa……………………………………………………………….………. 103
4.3.1.- Directorios…………………………………………………..…………………. 104
4.3.2.- Enlaces desde otras páginas………………………….…………………. 105
4.3.3.- Posicionamiento con “pago por click”……………….……………….. 106
4.3.4.- Redes sociales………………………………………………………………… 108
4.4.- Publicación en portales especializados……………………………………………. 108
5.- Conclusiones……………………………………………………………………………………….……. 119
5.1.- Conclusión…………………………………………………………………………………… 119
5.2.- Trabajos futuros………………………………………………………………….……….. 119
6.- Bibliografía……………………………………………………………………………………………….. 121
5
CAPITULO I
Introducción
En este primer capítulo el lector encontrará una descripción detallada del proyecto en
la que se incluyen los objetivos del mismo, la motivación que nos ha llevado a realizar
el presente PFC y la exposición de los materiales y métodos utilizados.
1.1.- Motivación
El presente proyecto tiene sus orígenes en el negocio familiar de la Casa Rural Sansofi.
Lo principal fue crear una página Web como cualquier otra pequeña y mediana
empresa, con el tiempo fue necesaria la utilización de la aplicación Web para el control
y gestión de los huéspedes. Todo ello llevó su tiempo de trabajo en la primavera de
2010.
Más tarde, durante el verano de 2011 realicé un periodo de prácticas en empresa de 3
meses de duración como instalador y administrador de servidores Web, DNS y SMTP
basados en Unix.
Todo ello me llevó a finales de Septiembre a solicitar un PFC al profesor Ángel Rodas,
presentándole el trabajo realizado durante el periodo de prácticas y la página web
anteriormente realizada. A partir de ese momento surgió la idea de nuestro proyecto
final de carrera de tipo B: “Instalación, configuración y desarrollo de aplicación Web
estudiando diversas alternativas de alojamiento”.
Lo verdaderamente importante del proyecto es la gran variedad de temas que abarca
todos ellos relacionados entre si. La primera parte la podríamos englobar en el
apartado de Sistemas y Redes, correspondiente con la intensificación de tercero con el
mismo nombre.
La segunda parte enfocada a los servicios de la Red y también a la programación de
páginas y aplicaciones Web. Correspondiente con la intensificación de Ingeniería del
Software y algunas asignaturas optativas como APW y SPW, Aplicaciones Web y
Servicios para la Web.
El proyecto “Instalación, configuración y desarrollo de aplicación Web estudiando
diversas alternativas de alojamiento” me ha permitido desarrollar amplios
conocimientos en el campo de los sistemas operativos y sobretodo en las tecnologías
de red, así como en la promoción de un negocio familiar a través de la red siendo
nosotros mismos administradores no solo de nuestra Web sino también de el sistema
6
que da soporte para ello, tema demandado por las empresas y cada vez más
importante.
1.2.- Objetivos
El presente PFC tendrá por objetivo cumplir con los siguientes tres puntos:
Instalación, configuración del servidor web y estudio de alternativas de
alojamiento y dominio.
Aprender a instalar y configurar un servidor Web (donde estará alojada nuestra Web),
comprando para ello un hosting a un proveedor y teniendo alojada allí nuestra Web.
Como alternativa veremos como comprar un nombre de dominio y asociarlo a nuestro
servidor.
Utilización de herramientas avanzadas para mejora de páginas Web.
Utilizar HTML, CSS, JavaScript y diversos applets para mejorar la página Web. Realizar
una aplicación en la misma Web utilizando PHP y MySQL para controlar y gestionar los
clientes y que estos puedan realizar consultar a un calendario, rellenar encuestas y
diversas funcionalidades para ofrecen un mejor servicio a los huéspedes.
Estudio del posicionamiento Web.
Promocionar la Web a través de la red para que llegue a un determinado mercado.
Para ello publicaremos la Web en portales especializados y aprenderemos a posicionar
nuestra Web en buen lugar en los principales motores de búsqueda.
1.3.- Definiciones, acrónimos y abreviaturas
Autenticarse: acción de introducir el identificador de usuario (Username) y la
contraseña (Password) asociada al mismo, de forma que el sistema pueda verificar si
los valores almacenados en la Base de Datos son los mismos, en cuyo caso, los dará
por validos e iniciara una serie de acciones, programadas previamente por el diseñador
web.
Base de Datos o BD: conjunto de datos pertenecientes a un mismo contexto y
almacenados sistemáticamente para su posterior uso. En el contexto en que nos
encontramos, su almacenamiento se produce de forma digital (electrónica). En lo
sucesivo en este documento, nos referimos a la Base de Datos como BD.
7
E-mails: servicio de red que permite a los usuarios enviar y recibir mensajes
rápidamente (también denominados mensajes electrónicos o emails) mediante
sistemas de comunicación electrónicos.
FTP (File Transfer Protocol): protocolo para intercambiar archivos en Internet. Se
utiliza principalmente para descargar un archivo de un servidor o para subir un archivo
a un servidor a través de Internet.
Hipertexto: cualquier texto disponible en el WWW que contenga enlaces con otros
documentos.
HTTP (Hypertext Transfer Protocol): protocolo usado en cada transacción de la
World Wide Web. Esta orientado a transacciones y sigue el esquema petición-
respuesta entre un cliente y un servidor.
HTTPS (Hypertext Transfer Protocol Secure): Protocolo de red basado en el
protocolo HTTP, destinado a la transferencia segura de datos de hipertexto. Garantiza
un nivel de seguridad mayor que el de HTTP.
IEEE (The Institute of Electrical and Electronics Engineers): asociación
tecnicoprofesional mundial dedicada a la redacción y aprobación de normas que se
establecen para garantizar el acoplamiento de elementos construidos
independientemente.
Interface de usuario: representa la forma y disposición visual de los elementos en
pantalla (texto, imágenes, objetos gráficos) que posibilitan la interacción de un usuario
en un programa o aplicación.
Javascript: lenguaje interpretado (no requiere compilación) utilizado en paginas Web,
con una sintaxis parecida a Java. Permite el desarrollo de interfaces de usuario
mejoradas y paginas web dinámicas.
MySQL: sistema de gestión de base de datos, desarrollado bajo la filosofía del
software libre.
Navegador web: programa que permite visualizar la información que contiene una
pagina web.
Página web: documento creado en formato HTML que es parte de un grupo de
documentos hipertexto o recursos disponibles en el World Wide Web. Una serie de
páginas web componen lo que se llama un sitio web.
8
Password o contraseña: serie secreta de caracteres que permite a un usuario, junto
a su Username, identificarse en el portal, "conociendo" este los servicios e información
personalizada que debe mostrar al mismo.
Servidor: ordenador remoto que provee los datos solicitados por parte de los
navegadores de otras computadoras. También se entiende como el software que
configura un PC como servidor para facilitar el acceso a la red y sus recursos.
Sesión: secuencia de páginas web que un usuario visita en un sitio web, desde que
entra en nuestro sitio, hasta que lo abandona.
Tramitaciones o gestiones: están asociadas a alguno de los posibles trámites y
deben haber sido previamente iniciadas por un Usuario Residencial. Sus posibles
estados son: Iniciado, En Revisión, Aprobado o Denegado.
Username o nombre de usuario: palabra con la que un usuario es reconocido el
portal.
Usuario Administrador: usuario que además de estar registrado, tiene el máximo
nivel de control sobre la administración de los contenidos del portal.
Usuario Interno: usuario que además de estar registrado, tiene control sobre la
administración de parte de los contenidos del portal.
Usuario Anónimo: cualquier usuario que acceda a nuestro portal Web y no se haya
autenticado.
Usuario Registrado: usuario que tras introducir su Username y Password, ha sido
validado por la base de datos y autenticado por tanto correctamente.
Web, WWW o World Wide Web: sistema de documentos de hipertexto enlazados y
accesibles a través de Internet.
Website: serie de Páginas web que generalmente conforman un concepto único o
temática.
1.4.- Materiales y métodos
En esta sección presentaremos la distribución de red utilizada para dicho proyecto, las
tecnologías utilizadas, junto con las herramientas software.
En el punto 2.2 alojamiento propio veremos como instalar un servidor web donde más
adelante veremos como instalar nuestro sitio web y que funcione. En la Figura 1,
9
observamos una posible distrubición de red (es la de nuestro caso en concreto). El
dispositvo con IP 192.168.1.1 es un router encargado de dirigir el tráfico en nuestra
intranet, el dispositivo 192.168.1.5 se trata de nuestro servidor, el dispositivo con IP
192.168.1.10 se trata de nuestro laptop, disponible para conectarnos a nuestra
intranet al servidor, esto lo veremos con mayor detalle en el punto 2.2.2.4 cuando nos
conectemos a través de FTP haciendo uso del programa FileZilla
Figura 1.- Distribución de la red
Tecnologías utilizadas
Para la elaboración del Proyecto hemos hecho uso de las siguientes tecnologías:
HTML (Hypertext Markup Language): es el lenguaje de programación que permite la
elaboración de páginas web, permitiendo definir su estructura y el contenido.
CSS (Cascade Style Sheet): es un lenguaje utilizado para definir la presentación de un
documento estructurado escrito en el lenguaje HTML o XML. La idea que se encuentra
detrás del desarrollo de CSS es separar la estructura de un documento de su
presentación.
PHP: es un lenguaje de programación interpretado, diseñado originalmente para la
creación de páginas web dinámicas. Se usa principalmente para la interpretación del
lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde
una interfaz de línea de comandos o en la creación de otros tipos de programas.
10
SQL: El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured
query language) es un lenguaje declarativo de acceso a bases de datos relacionales
que permite especificar diversos tipos de operaciones en estas. Una de sus
características es el manejo del álgebra y el cálculo relacional permitiendo efectuar
consultas con el fin de recuperar -de una forma sencilla- información de interés de una
base de datos, así como también hacer cambios sobre ella.
JavaScript: es un lenguaje de programación interpretado, definido como orientado a
objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza
principalmente en su forma del lado del cliente, implementado como parte de un
navegador web permitiendo realizar mejoras en la interfaz del usuario y la creación de
páginas web dinámicas. Fue diseñado con una sintaxis similar al C, aunque adoptando
nombres y convenciones de programación de Java.
jQuery: es una biblioteca o framework del lenguaje JavaScript, creado inicialmente por
John Resig que permite simplificar la manera de interactuar con los documentos HTML,
manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar
interacción con la tecnología AJAX a las páginas web. Se trata de un software libre y
de código abierto.
Herramientas utilizadas
Al igual que hemos hechos con las tecnologías que se han utilizado vamos a hacer una
breve descripción de las herramientas para el desarrollo con las que hemos trabajado:
MagicDraw UML: es una herramienta CASE desarrollada por la compañía No Magic,
Inc. La herramienta es compatible con el estándar UML 2.3, desarrollo de código para
diversos lenguajes de programación (Java, C++ y C#, entre otros) así como para
modelas datos. La herramienta cuenta con capacidades para trabajar en equipo y es
compatible con la gran mayoría de IDEs (Integrated Developmet Environment, Entorno
de desarrollo informático) del mercado.
FileZilla: es un cliente FTP multiplataforma de código abierto y software libre,
licenciado bajo la Licencia Pública General de GNU. Soporta los protocolos FTP, SFTP y
FTP sobre SSL/TLS (FTPS).
Inicialmente fue diseñado para funcionar en Microsoft Windows, pero desde la versión
3.0.0, gracias al uso de wxWidgets, es multiplataforma, estando disponible además
para otros sistemas operativos, entre ellos GNU/Linux, FreeBSD y Mac OS X.
El código fuente de FileZilla y las descargas estaban2 hospedadas en SourceForge, el
cual presentó a FileZilla como el Proyecto del Mes en noviembre de 2003.3
Actualmente hospeda el código fuente en su propio sitio web y las descargas en Ohloh.
yEd: es un programa de diagramas libre de propósito general con una interfaz
multiplataforma. Su plataforma esta escrita en Java y puede ejecutarse bajo Windows,
11
Linux, Mac OS y otras plataformas que soporten la JVM. yEd puede utilizarse para
dibujar diferentes tipos de diagramas, incluyendo diagramas de flujo, diagramas de
redes, diagramas UML, mapas mundi, diagramas entidad-relación y organigramas. yEd
además permite el uso de vectores personalizados y gráficos de trama como diagramas
de elementos.
Dreamweaver: es una aplicación en forma de suite que está destinada a la
construcción, diseño y edición de sitios y aplicaciones Web basados en estándares. Es
el programa más utilizado en el sector del diseño y la programación web, por sus
funcionalidades, su integración con otras herramientas como Adobe Flash y,
recientemente, por su soporte de los estándares del World Wide Web Consortium.
MySQL: es un sistema de gestión de bases de datos relacionales, multihilo y
multiusuario. Desde enero de 2008 es una subsidiaria de Sun Microsystems y ésta a su
vez de Oracle Corporation desde abril de 2009. MySQL ha sido desarrollo como
software libre ofreciendo dos tipos de licencias una libre para cualquier usuario del
producto y una privativa que deberá ser adquirida en el momento de que MySQL sea
incluida dentro de otro producto.
Tomcat (Jakarta Tomcat o Apache Tomcat): funciona como un contenedor de servlets
desarrollado por el proyecto Jakarta en la Apache Software Foundation, el cual
implementa las especificaciones de los servlets y de las Java Servlet Pages (JSP) de
Sun Mycrosystems.
12
CAPITULO II
Alojamiento web
Es el servicio que provee a los usuarios de Internet un sistema para poder almacenar
información, imágenes, vídeo, o cualquier contenido accesible vía web. Es una analogía
de "hospedaje o alojamiento en hoteles o habitaciones" donde uno ocupa un lugar
específico, en este caso la analogía alojamiento web o alojamiento de páginas web, se
refiere al lugar que ocupa una página web, sitio web, sistema, correo electrónico,
archivos etc. en internet o más específicamente en un servidor que por lo general
hospeda varias aplicaciones o páginas web.
Un alojamiento web se puede diferenciar de otro por el tipo de sistema operativo, uso
de bases de datos y motor de generación de sitios web exista en él. La combinación
más conocida y extendida es la del tipo LAMP (Linux, Apache, MySQL y PHP).
Algunos de los servicios más comunes que se pueden entregar son lo de FTP, manejo
por sitio web y múltiples clientes en las bases de datos.
“Instalación, configuración y desarrollo de aplicación Web estudiando diversas
alternativas de alojamiento”
2.1.- Nombre de dominio
Los dominios de Internet son los nombres que permiten identificar a empresas,
personas, organizaciones... en Internet. Un dominio permite visitar páginas Web o
disponer de cuentas de correo electrónico entre otras funciones. Y es que
técnicamente un dominio sirve para localizar una maquina en Internet que es la que se
encarga de gestionar estos servicios. Éstas maquinas se identifican mediante un
número, llamado IP, como por ejemplo 214.62.30.21. Evidentemente un nombre de
dominio es mucho más fácil de recordar que una secuencia de números. Para tratar
más a fondo este tema puedes dirigirte a la sección DNS.
Si una empresa, un particular o una organización desean ofrecer cualquier tipo de
servicio o información en Internet es prácticamente indispensable contar con un
nombre de dominio. Las ventajas son muy numerosas:
En primer lugar se potencia la imagen de marca. No es lo mismo contar con una
dirección Web del estilo http://hostinggratuito.com/usuarios/miempresa que con
http://www.miempresa.com. Sucede exactamente lo mismo con las direcciones de
correo electrónico. Es mucho mejor disponer de cuentas del tipo [email protected]
que de una cuenta de correo proporcionada gratuitamente como
13
Por otro lado todos los servicios asociados al dominio, (hosting, correos...) permanecen
independientes de la máquina que los presta. Por ejemplo si decide cambiar de
proveedor de alojamiento el traspaso se realiza de forma totalmente transparente al
exterior manteniendo el mismo nombre de dominio.
Un nombre de dominio es único y exclusivo. Es imposible que existan en Internet y por
ende en todo el mundo dos dominios iguales. Solo hay un dominios-internet.com
En definitiva contar con un nombre de dominio a la hora de comenzar cualquier tipo de
proyecto en Internet es indispensable.
Desde el punto de vista técnico, a la vez que identifican los equipos conectados a la
red ya que resuelven las direcciones IP, permiten su fácil localización y hacen amigable
el uso de Internet.
Precisamente esta amigabilidad ha potenciado el crecimiento de Internet en todo el
mundo y por tanto, ha contribuido a que Internet se haya constituido en una
herramienta para el desarrollo económico, social y cultural de los pueblos.
Desde el punto de vista comercial, los nombres de dominio, como marca, sirven para
identificar todo tipo de entidades como Organismos, Empresas, personas físicas...
junto con los servicios que prestan.
Registro de un dominio
Ahora pasamos a esquematizar el proceso de registro de un dominio:
1. Primero:
1. Elegir un dominio.
2. Verificar la disponibilidad del nombre de dominio deseado en algún
registrador.
3. Ingresar los datos personales.
4. Elegir la cantidad de tiempo que el dominio permanecerá registrado.
5. Pagar el dominio, normalmente con tarjeta de crédito
2. Una vez comprado, el ahora dueño del dominio (registrante) debe configurarlo
con la URL a la cual redireccionar, IP del servidor al que encontrará mediante la
DNS, servidor DNS usada por este.
3. El dueño del dominio debe esperar un tiempo para que el dominio sea
reconocido en todos los servidores de Internet. Para los dominios .com y .net la
demora es entre 4 y 8 horas, y para otros es generalmente entre 24 y 48
horas. En ese período:
14
1. El registrador contacta con ICANN y realiza el proceso de forma
transparente para el registrante.
2. Se avisa al registrante que el dominio fue registrado.
4. El nuevo dominio funciona, y resuelve a la IP apropiada en el servidor DNS
usado, pero no en el resto de servidores DNS del mundo. Poco a poco se va
propagando el cambio al resto de servidores (propagación DNS). Como cada
uno tiene distintos tiempos de actualización y parámetros de caché distintos,
pasan varias horas hasta que todos los servidores DNS del mundo conocen
cómo hacer la resolución del dominio.
5. La página ya es accesible mediante un nombre de dominio desde cualquier
computadora
Figura 2.- Proceso de registro
15
2.2.- Alojamiento propio
En este punto vamos a explicar detalladamente la opción de tener instalado nuestro
propio servidor en casa. Para ello abordaremos los puntos 2.2.1 Instalación del
servidor y 2.2.2 Configuración del servidor
Son muchas las desventajas de tener en nuestro hogar un servidor web en ejecución y
más con los precios tan bajos que compañías de hosting ofrecen hoy en día ,entre
muchas otras desventajas, entre las que podemos citar: Intervalos sin servicio. Poco
ancho de banda de subida. Poca capacidad de respuesta ante picos inesperados de
tráfico. Disponibilidad reducida del ordenador que usemos como servidor para otras
tareas. Preocupación por si el servicio se está dando correctamente, etc
Pero tiene una ventaja que supera con creces las anteriores desventajas, y es la de
aprender, muy importante para el desarrollo del presente PFC. Con ella podremos ver
cómo configurar Apache, cómo reparar nuestras bases de datos MySQL, cómo
mantener nuestro sistema estable para tener que hacer el mínimo número de paradas
posible, cómo crearnos scripts para tener los aspectos nuestro servidor monitorizado…
Figura 3.- Diagrama de flujo, servidor propio
16
Siguiendo el diagrama de flujo de la figura 3 nos damos cuenta que tras tener
instalado y configurado nuestro servidor web necesitamos comprar un nombre de
dominio a un agente registrador (ver punto 2.1 Nombre de dominio) a través de una
empresa de servicios de Internet, en nuestro caso elegiremos 1and1.
Posteriormente explicaremos como redireccionar todo el tráfico que llegue a nuestro
nombre canónico en 1and1 hacia nuestro host, servidor web instalado en el hogar.
2.2.1.- Instalación del servidor
Se puede descargar en la dirección http://www.turnkeylinux.org/lampstack siendo la
versión 11.2 la última versión estable en el momento de la realización de este manual.
Al tratarse de software libre no es necesario estar registrado en la página web.
Figura A.1 Portal de Turnkey Linux (lampstack)
Consiste en un Ubuntu reducido, con los elementos necesarios para realizar la tarea de
servidor Web. Su versión es la 10.04 LTS, nombre en clave Lucid, y ofrece soporte
hasta Marzo de 2015, incluye el Kernel 2.6.32 y no lleva instalada la interfaz gráfica.
Todo se realiza desde la consola, para optimizar recursos.
Los requisitos del sistema son muy básicos 256MB de memoria RAM, 2GB de espacio
en disco duro, adaptador Ethernet, tarjeta gráfica de 64MB, monitor, teclado y unidad
de CD-ROM para instalar el sistema.
A partir de aquí consultar en el Anexo A
17
2.2.2.- Configuración del servidor
Para dejar nuestro servidor operativo y en condiciones óptimas para ser usado
debemos configurarlo según la utilidad que queramos hacer de él. En nuestro caso
ofrecer servicio web, al haber instalado la distribución Turnkey Lamp Stack, ya
tenemos configuradas de manera predeterminada muchas de sus características.
Primero abordaremos el punto de la configuración de la interfaz de red, nos
conectaremos al router mediante ethernet y configuraremos los valores de dirección de
re y similares, veremos como hacerlo en esta distribución, al igual que como resolver
los nombres de los servidores de Internet. Es muy importante tener bien configurada
la red, es el paso esencial para garantizar un buen servicio de Internet.
En el segundo punto detallaremos como actualizar el sistema y también como
actualizar los repositorios, para poder encontrar con facilidad cualquier programa que
queramos instalar haciendo uso de apt-get.
En el punto 3 describiremos como configurar Apache2 para ejecutar servidores
virtuales y poner ofrecer diferentes sitios web en una única máquina física, este punto
es muy importante.
En el cuarto punto instalaremos y configuraremos un servidor de FTP en nuestro
servidor web, para poder conectarnos a través de FTP o SSH a nuestro servidor desde
cualquier punto del planeta haciendo uso de Internet.
Y por último en el quinto punto veremos como configurar el sistema de gestión de
base de datos MySQL, como crear una base de datos a través de su interfaz
phpMyAdmin y como configurar el cortafuegos de Linux iptables.
Con todo esto configurado ya seríamos capaces de subir archivos html, php, etc a
nuestro sitio en el servidor web y conectándonos a él a través de su dirección ip
externa para poder consultar la página web albergada en él.
2.2.2.1.- Configuración de la interfaz de red
Primero vamos a configurar la interfaz de red, lo podemos hacer una vez terminada la
instalación del sistema (ver punto 2.1 Instalación del servidor) mediante la Turnkey
Linux Configuration Console, o también siendo el usuario root modificando el archivo
del sistema /etc/network/interfaces
# cd /etc/network/interfaces
18
Para modificar el archivo podemos usar el editor nano
# nano interfaces
auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1
iface eth0 inet static: Seleccionamos la interfaz de red eth0 y la declaramos como
estática
address: dirección ip de nuestra propia intranet, en este caso 192.168.1.5
netmask: mascara de subred, como es una dirección de clase C, la máscara es /24
gateway: puerta de acceso, dirección ip de nuestra puerta de acceso a Internet, en
este caso es la dirección ip del router
dns-name-severs: lista de servidores de nombres, en este caso es el propio router el
encargado de resolver las solicitudes/peticiones DNS, en su propio configuración
tendrá una lista de servidores DNS
Archivo resolv.conf
Debemos configurar también el archivo /etc/resolv.conf. El resolvconf es un conjunto
de rutinas en la libreria C que provee acceso a los dominios de internet (DNS). La
configuración del archivo resolv.conf contiene información que es leída por las rutinas
del resolvconf la primera vez que son invocadas por un proceso. El archivo está
diseñado para ser leído por humanos y contiene una lista de palabras claves con
valores que provee varios tipos de información sobre resolvconf.
En esta distribución de Linux no podemos modificar directamente el archivo
/etc/resolv.conf, este es creado por el programa resolvconf que captura la información
de la configuración de la interfaz de red, anteriormente configurada
Una muestra con el programa cat del archivo resolv.conf en nuestro servidor es la
siguiente:
# cat /etc/resolv.conf
Figura 5.-Archivo resolv.conf
19
2.2.2.2.- Actualización de los repositorios
En la distribución Debian y en nuestro caso la Ubuntu Turnkey (derivado de Debian)
existe lo que se denominan repositorios. Estos repositorios consisten en sitios web
donde se encuentran almacenados los paquetes, que una vez descargados, instalan el
software en el ordenador. Inicialmente Ubuntu posee una serie de repositorios
oficiales, que están mantenidos por el equipo de Ubuntu. Si usamos exclusivamente
estos repositorios se nos garantiza un alto nivel de estabilidad. Sin embargo agregar
repositorios externos es útil para instalar software no soportado oficialmente por
Ubuntu, normalmente porque se trata de programas que no son libres ni de código
abierto, o porque están en una versión no estable pero totalmente funcional para
nuestros intereses.
El sistema de instalación de paquetes que usemos, en nuestro caso apt-get,
internamente usa un fichero donde se encuentran los repositorios, este fichero lo
podemos encontrar en:
# cd /etc/apt/sources.list.d
Es preferible modificar los repositorios, quedando como en la Figura 6, para ello
modificamos el fichero sources.list con el programa nano
# nano /etc/apt/sources.list.d/sources.list
Figura 6.- Lista de repositorios
Una vez modificado el fichero de repositorios tenemos que actualizar la lista de
paquetes, esto es importante para poder actualizar el sistema e instalar más adelante
con apt-get cualquier programa que necesitemos , para eso basta con ejecutar el
siguiente comando en un terminal:
# apt-get update
20
2.2.2.3.- Configuración de servidores virtuales. VirtualHosts
El término Hosting Virtual se refiere a hacer funcionar más de un sitio web (tales como
www.company1.com y www.company2.com) en una sola máquina. Los sitios web
virtuales pueden estar "basados en direcciones IP", lo que significa que cada sitio web
tiene una dirección IP diferente, o "basados en nombres diferentes", lo que significa
que con una sola dirección IP están funcionando sitios web con diferentes nombres (de
dominio). El hecho de que estén funcionando en la misma máquina física pasa
completamente desapercibido para el usuario que visita esos sitios web.
Apache fue uno de los primeros servidores web en soportar hosting virtual basado en
direcciones IP. Las versiones 1.1 y posteriores de Apache soportan hosting virtual
(vhost) basado tanto en direcciones IP como basado en nombres. Ésta última variante
de hosting virtual se llama algunas veces basada en host o hosting virtual no basado
en IP.
Toda la configuración de Apache está en el archivo /etc/apache2/
Mirando el contenido de este directorio, observamos distintos archivos y directorios,
entre los cuales están: sites-available y sites-enabled.
En ambos directorios debe existir un archivo “default”, el cual tomaremos como base
para editar la configuración de nuestros Hosts Virtuales. En sites-available tendremos
los VirtualHosts disponibles (pero no “activados”) para ser usados y en sites-enabled,
tendremos los VirtualHosts que tenemos funcionando. La forma de trabajar entre estos
directorios es a través de un enlace simbólico; así el default de sites-enabled será un
enlace simbólico del default de sites-available.
Debian incluye sus propias herramientas para activar y desactivar tanto sitios web
como módulos:
a2ensite-> Activa un sitio web.
a2dissite-> Desactiva un sitio web
a2enmod-> Activa un módulo de apache disponible en mods-available.
a2dismod->Desactiva un módulo.
Vamos a comenzar a preparar los VirtualHosts. Para ello nos dirigimos a
/etc/apache2/available-sites/ y utilizaremos el archivo default como base para preparar
la configuración de estos, para ello hacemos una copia:
# cp default casarural-sansofi.com
21
El contenido de este sitio web lo podemos volcar en /var/www2/ Para ello, creamos el
siguiente directorio donde volcar el contenido de nuestra web:
# mkdir /var/www2/
Ahora sólo queda editar los archivos de configuración de los hosts virtuales.
Abrimos con un editor de texto el siguiente archivo
# nano /etc/apache2/sites-available/casarural-sansofi.com
<VirtualHost *:80> ServerName www.casarural-sansofi.com ServerAlias casarural-sansofi.com SSLEngine on SSLCertificateFile /etc/ssl/certs/cert.pem DocumentRoot /var/www2/ </VirtualHost> <Directory /var/www2/> Options Indexes FollowSymLinks MultiViews Order allow,deny allow from all <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_value include_path . </IfModule> </Directory>
Ahora solamente nos queda activar el sitio:
#a2ensite casarural-sansofi.com
Esto creará el enlace simbolico de estos archivos entre sites-available y sites-enabled.
Ahora sólo tendremos que recargar la configuración para que apache coja los cambios.
# /etc/init.d/apache2 reload
Con esto mantenemos la interfaz web de la distribución Turnkey ver Figura 7 y
tenemos nuestra página web albergada en nuestro servidor.
Ya tenemos nuestro sitio disponible. Otro tema a tratar será la base de datos, la
distribución LAMP Snack de Turnkey nos proporciona un phpMyAdmin, habrá que
22
configurar los ficheros fuente para que se conecten a nuestra base de datos. Eso lo
trataremos en el punto de programación.
Figura 7.- Interfaz web del sistema
2.2.2.4.- Instalación servidor vsftp y uso de FileZilla FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o ficheros
informáticos) es uno de los protocolos estándar más utilizados en Internet siendo el
más idóneo para la transferencia de grandes bloques de datos a través de redes que
soporten TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El
puerto 20 es utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es
utilizando para el envío de órdenes del cliente hacia el servidor. Prácticamente todos
los sistemas operativos y plataformas incluyen soporte para FTP, lo que permite que
cualquier computadora conectada a una red basada sobre TCP/IP pueda hacer uso de
este servicio a través de un cliente FTP.
VSFTPD (Very Secure FTP Daemon) es un sustento lógico utilizado para implementar
servidores de archivos a través del protocolo FTP. Se distingue principalmente porque
sus valores por defecto son muy seguros y por su sencillez en la configuración,
comparado con otras alternativas como Wu-ftpd. Actualmente se presume que VSFTPD
es quizá el servidor FTP más seguro del mundo.
En nuestro caso instalaremos el servidor VSFTPD, utilizará el puerto 22 de FTP para
subir desde nuestra máquina local los archivos de la página web al sitio en nuestro
servidor, en este caso se trata del directorio /var/www2
23
Instalaremos el servidor FTP mediante el programa apt-get
# apt-get install vsftpd
Una vez instalado procedemos a configurarlo
Configuración del servidor FTP
Fichero de configuración.
/etc/vsftpd.user_list
Procedimientos.
Utilice un editor de texto y modifique el fichero /etc/vsftpd/vsftpd.conf. A continuación
analizaremos los parámetros a modificar o añadir, según se requiera para necesidades
particulares.
Parámetro anonymous_enable.
Se utiliza para definir si se permitirán los accesos anónimos al servidor. Establezca
como valor YES o NO de acuerdo a lo que se requiera.
anonymous_enable=YES
Parámetro local_enable.
Es particularmente interesante si se combina con la función de jaula (chroot).
Establece si se van a permitir los accesos autenticados de los usuarios locales del
sistema. Establezca como valor YES o NO de acuerdo a lo que se requiera.
local_enable=YES
Parámetro write_enable.
Establece si se permite el mandato write (escritura) en el servidor. Establezca como
valor YES o NO de acuerdo a lo que se requiera.
write_enable=YES
Parámetro ftpd_banner.
24
Este parámetro sirve para establecer el banderín de bienvenida que será mostrado
cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve
que considere conveniente.
ftpd_banner=Bienvenido al servidor FTP de Molió.
Parámetro anon_max_rate.
Se utiliza para limitar la tasa de transferencia en bytes por segundo para los usuarios
anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente
ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios
anónimos:
anon_max_rate=5120
Parámetro local_max_rate.
Hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En
el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los
usuarios locales:
local_max_rate=5120
Parámetro max_clients.
Establece el número máximo de clientes que podrán acceder simultáneamente hacia el
servidor FTP. En el siguiente ejemplo se limitará el acceso a 5 clientes simultáneos.
max_clients=5
Parámetro max_per_ip.
Establece el número máximo de conexiones que se pueden realizar desde una misma
dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor proxy
o puerta de enlace y debido a esto podrían quedar bloqueados innecesariamente
algunos accesos. En el siguiente ejemplo se limita el número de conexiones por IP
simultáneas a 5.
max_per_ip=5
Para ejecutar por primera vez el servicio, utilice:
# service vsftpd start
25
Para hacer que los cambios hechos a la configuración surtan efecto, utilice:
# service vsftpd restart
Para detener el servicio, utilice:
# service vsftpd stop
Para añadir VSFTPD al arranque del sistema en todos los niveles de corrida, utilice:
# chkconfig vsftpd on
Uso de FileZilla
Una vez instalado el servidor FTP en el servidor web necesitamos un cliente FTP para
conectarnos al servidor remotamente. En este caso se trata de Filezilla, un cliente FTP
multiplataforma de código abierto y software libre, licenciado bajo la Licencia Pública
General de GNU. Soporta los protocolos FTP, SFTP y FTP sobre SSL/TLS (FTPS). En
nuestro caso utilizaremos el protocolo SFTP, también conocido como SSH.
Nos conectaremos desde un cliente en Windows (ver Figura 1.- Distribución de la red)
que se halla en el host 192.168.1.10 al servidor FTP hallado en 192.168.1.5.
Se puede descargar de la página oficial http://filezilla-project.org/download.php , una
vez descargado e instalado vamos a configurarlo.
Figura 8.- FileZilla
26
En la Figura 8 podemos observar la simple interfaz del cliente FTP FileZilla, para
conectarnos debemos introducir la ip donde se encuentre el servidor FTP, el nombre de
usuario, su contraseña y el puerto por el que queramos conectarnos. En nuestro caso:
Servidor: 192.168.1.5
Usuario: root
Contraseña: “contraseña de root”
Puerto: 22
En el menú de la izquierda esta el árbol de directorios de la máquina local, en el de la
derecha el árbol de directorios del servidor remoto, para subir archivos al sitio web
debemos dirigirnos a /var/www2 en el servidor remoto, todo ello con una simple
interfaz gráfica, haciendo clic con el botón derecho del ratón sobre un directorio
podremos empezar la transferencia, de subida si seleccionamos un archivo local o de
bajada si seleccionamos un archivo remoto.
2.2.2.5.- Uso de MySQL e iptables
La distribución Turnkey Lamp Stack ofrece el sistema de gestión de base de datos
administrable a través de la red, conocido como phpMyAdmin, herramienta escrita en
PHP con la intención de manejar la administración de MySQL a través de páginas web,
utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar
y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL,
administrar claves en campos, administrar privilegios, exportar datos en varios
formatos y está disponible en 62 idiomas.
Figura 9.- phpMyAdmin
27
Es posible acceder a ella a través de nuestra intranet, haciendo uso de un navegador
Web, accediendo a través de la url http://192.168.1.5, nos aparece disponible la
interfaz Web del sistema, ya descrita anteriormente en la Figura 7, seleccionamos la
herramienta phpMyAdmin. Para loguearnos hacemos uso del usuario root de MySQL y
su contraseña, seleccionado con anterioridad en la instalación de sistema, ¡ojo! No es
la misma que la del usuario root del sistema.
Una vez nos logueamos podemos encontrar las bases de datos de la interfaz web del
sistema y también podemos crear las nuestras, eso lo veremos con detalle en el punto
de programación de la aplicación web.
Uso de iptables
Netfilter es un framework disponible en el núcleo Linux que permite interceptar y
manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes
en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el
proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en
Linux.
Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el
administrador puede definir políticas de filtrado del tráfico que circula por la red. El
nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la
infraestructura ofrecida por el proyecto Netfilter.
No vamos a detenernos en detalles del iptables, puesto que es un tema muy correoso,
solo describiremos la configuración necesaria para que funcione nuestro servidor web y
poder acceder a los recursos que ofrece el sistema como también la posibilidad de
conectarnos mediante SSH al servidor.
Para acceder al control del menú Linux Firewall accedemos mediante un navegador
web a nuestro servidor http://192.168.1.5 desde nuestra intranet, tal y como aparece
en la Figura 7, seleccionamos la opción webmin, nos logueamos haciendo uso del
usuario root y en el menú de arriba seleccionamos la opción Networking, tal y como lo
muestra la Figura 9.
Figura 10.- Linux Firewall
28
Accedemos asi a la configuración del Firewall de nuestro sistema, en este caso es el ya
mencionado iptables.
Figura 11.- Configuración de iptables
If input interface is lo: Aceptará siempre el tráfico cuando la petición sea de la interfaz
lo.
If protocol is ICMP and ICMP type is echo-request: Para el protocolo ICMP también
aceptará tráfico, siempre que sea del tipo petición, cualquier ping que hagamos a
nuestro host será aceptado.
If state of connection is ESTABLISHED,RELATED: Este tipo de configuración viene
predeterminada para cualquier tipo de Firewall.
If protocol is TCP and destination port is 22: Aceptar el tráfico para el protocolo SSH,
para poder conectarnos remotamente, subir y descargar archivos.
If protocol is TCP and destination port is 80: Evidentemente aceptará el tráfico del
protocolo HTTP, la idea es tener instalado un servidor web y que esto sea possible.
If protocol is TCP and destination port is 443: Aceptará el tráfico para la conexión
segura del protocolo HTTPS, con cifrado SSL
If protocol is TCP and destination port is 12320: Aceptará el tráfico del web shell
If protocol is TCP and destination port is 12321: Aceptará el tráfico del webMin
If protocol is TCP and destination port is 12322: Aceptará el tráfico del web
phpMyAdmin
29
2.2.3.- Redireccionar hacia nuestro servidor
Primero debemos comprar el nombre de dominio que necesitemos, para ello
consultamos el Anexo C y asi sabremos como hacerlo.
Una vez ya tenemos el nombre de dominio comprado a 1and1 y siendo clientes de
dicha empresa vamos a explicar como redireccionar todas las peticiones DNS hacia
nuestro servidor.
DNS
Domain Name System o DNS (en español: sistema de nombres de dominio) es un
sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso
conectado a Internet o a una red privada. Este sistema asocia información variada con
nombres de dominios asignados a cada uno de los participantes. Su función más
importante, es traducir (resolver) nombres inteligibles para los humanos en
identificadores binarios asociados con los equipos conectados a la red, esto con el
propósito de poder localizar y direccionar estos equipos mundialmente.
Tipos de registros DNS
Registro NS: (siglas de Name Server), contiene los servidores de nombre de ese
dominio, lo que permite que otros servidores de nombres vean los nombres de su
dominio.
Registro MX: es el registro de Intercambio de correo (Mail eXchange). Indica que host
se encarga del procesamiento del correo electrónico de ese dominio.
Registro A: (Adress) asocian nombres de host a direcciones IP dentro de una zona.
Son los más numerosos dentro del archivo.
Registro CNAME: son llamados también alias, si bien son conocidos como entradas de
nombre canónico (CNAME, Canonical Name). Su uso más común es utilizar para
apuntar a un único host más de un nombre, asi se simplifican procesos como albergar
simultaneamente un servidor web y otro FTP en un mismo equipo.
Configuración en 1and1
Por tanto, el servidor en el cual tenemos registrado el dominio casarural-sansofi.com
realizará la función de DNS, devolviendo el valor de la consulta a la petición como la ip
de nuestro propio servidor donde tenemos albergada la página web, para ello a
continuación explicaremos como configurar en el panel de control de 1and1 los
parámetros necesarios.
30
Figura 12.- Dominios y espacio web. 1and1
Entramos en el panel de control de 1and1, logueandonos previamente con nuestro
usuario y contraseña, seleccionamos la ventanda de “Dominios” se encuentra la
primera, arriba a la izquierda, tal y como vemos en la Figura 11.
Nos aparecerá la lista de nombres de dominio que tengamos, en este caso solo
tenemos un único dominio, el casarural-sansofi.com
Figura 13.- Selección de dominio
Seleccionamos el dominio en concreto, arriba en la pestaña DNS, seleccionamos la
opción de “modificar la configuración DNS”, tal y como vemos en la Figura 12.
En la nueva venta, ver Figura 13, nos desplazamos al final en la sección “Configuración
DNS avanzada”, en la opción Dirección IP (registro A), seleccionamos el valor “Otras
direcciones IP” e introducimos la dirección ip externa de nuestra red, en este caso es la
siguiente: 87.203.87.36. Luego ya se encargará el router mediante NAT de dirigir el
tráfico que llegue por el puerto 80 a nuestro servidor en 192.168.1.5.
31
Figura 14.- Configuración DNS de 1and1
Ahora solo hay que esperar unos 30 minutos aproximadamente para que 1and1
refresque los registros DNS de sus servidores con el nuevo valor.
Una vez llegados a este punto y con los servidores DNS de 1and1 actualizados ya
somos capaces de acceder desde cualquier punto del planeta conectado a Internet con
un navegador a interpretar los ficheros que tengamos en el sitio de nuestro servidor,
en /var/www2 consultando la página web http://www.casarural-sansofi.com. Y por
otro lado desde nuestra intranet introduciendo en el navegador la dirección ip del
servidor 192.168.1.5 interpretar la interfaz web para administrar el servidor albergada
en el sitio de nuestro servidor /var/www .
32
2.3.- Alojamiento en la red En este punto vamos a explicar detalladamente la opción de tener albergada nuestra
página web en una compañía de web hosting. Para ello abordaremos los puntos 2.3.2
Elección de 1and1 y 2.3.3 Asociar el nombre de dominio a nuestra cuenta.
Existen diversas modalidades de hosting, en nuestro caso trataremos la de hosting
compartido de pago. Es indiscutiblemente la modalidad más popular y extendida.
Consiste en un conjunto de cuentas que tienen asociadas un conjunto de recursos,
todo ello controlado por el panel de control del Hosting, existen dos paneles de
control: uno de superadmin, que crea las cuentas manual o automáticamente y
nuestro panel de control de usuario con menos funcionalidad y sin capacidad de crear
cuentas fuera de la nuestra.
Cuando contratamos un servicio de este estilo, no significa que la información se
encuentre dentro del mismo servidor físico, pudiendo estar la información repartida en
distintos servidores (de esto se encarga el software del panel de control).
Figura 15.- Diagrama de flujo, alquiler de Hosting
33
Una cuenta no es más que un directorio dentro de la jerarquía interna del servidor;
nosotros gestionaremos a alto nivel mediante nuestro panel de control todos los
recursos como pudiesen ser crear una base de datos.
Un gran inconveniente está en la velocidad tanto de procesamiento como de ancho de
banda, dado que un servidor está recibiendo peticiones de diferentes websites y
ejecutando por ejemplo directivas en PHP de diferentes cuentas alojadas.
Aun considerando el inconveniente anterior, resulta una solución eficaz para un
negocio pequeño o mediano. La optimización de velocidad consistiría en un Hosting
dedicado o el antes mencionado housing.
2.3.1.- Estudio de las empresas de Hosting
Vamos a realizar un estudio de las empresas de Hosting, para elegir aquella que más
se acople a nuestros intereses.
Como vemos en la tabla a nivel nacional existe una gran diferencia en cuanto a cuota
de mercado, ambas compañías 1and1.es y arsys.es están disputándose la primera
posición.
Ranking de los 10 proveedores de Hosting más importantes de España
Ranking Compañía de Hosting Cuota
de mercado
Dominios
totales
1 1AND1.ES 19.9985 % 320,969
2 ARSYS.ES 17.8442 % 286,394
3 DINAHOSTING.COM 4.7956 % 76,967
4 CDMON.NET 4.2985 % 68,989
5 TERRA.ES 3.7153 % 59,630
6 ABANSYS.COM 2.9593 % 47,496
7 NOMINALIA.COM 2.9275 % 46,985
8 HOSTALIA.COM 2.8979 % 46,511
9 ACENS.NET 1.6657 % 26,734
10 REDCORUNA.COM 1.6344 % 26,231
Tabla 1.- Proveedores de Hosting en España
34
Tras ver la Tabla 1 y la Figura 15, llegamos a la misma conclusión, existe una gran
diferencia en cuanto a cuota de mercado entre las empresas 1and1.es y arsys.es con
respecto al resto.
Figura 16.- Empresas de Hosting en España
Tabla del ranking mundial de compañías de Hosting, vemos como 1and1.es aparece en
el puesto nº47, siendo la compañía Española con mayor cuota de mercado.
Ranking Compañía de Hosting País Cuota
de mercado
Dominios
totales
1 WILDWESTDOMAINS.COM 25.0729 % 32,565,524
2 ENOM.COM 2.7028 % 3,510,553
3 NETWORKSOLUTIONS.COM 2.3291 % 3,025,175
4 ONEANDONE.COM 2.2362 % 2,904,497
5 HOSTGATOR.COM 1.5603 % 2,026,519
6 SEDOPARKING.COM 1.4014 % 1,820,177
7 YAHOO.COM 1.2821 % 1,665,290
8 BLUEHOST.COM 1.2293 % 1,596,697
… … … … …
47 1AND1.ES 0.2471 % 320,969
… … … … …
Tabla 2.- Proveedores de Hosting en el mundo
35
A continuación mostramos una tabla comparativa con los planes de hosting que
ofrecen unos de los cinco proveedores de Hosting más importantes en España,
incluyendo a 1and1.es y arsys.es, con los cuales nos quedaremos definitivamente con
uno de ellos.
Proveedor 1&1 Arsys Abansys Dinahosting Piensa
solutions
Nombre Producto/ Características
Pack Dual Basic
Profesional Plan
Inicial Plan
Personal Plan Entry
Precio mensual
1,99 € 4 € 2,99 € 4,5 € 1,95 €
Plataforma Linux Linux Linux Linux Linux
Número de dominios incluidos
1 - - - -
Espacio en disco
1 GB 300 MB 250 MB 1000 MB 200 MB
Transferencia mensual
Ilimitada 3 GB Ilimitado 10 GB 4 GB
Cuentas correo
10 (2 GB por
buzón)
40 (3 GB por buzón)
10 (250 MBs el buzón)
20 -
MySQL Sï Opcional No No -
FTP Ilimitados Ilimitadas 5 1 1
SSL Opcional No No No No
PHP Sí Sí Sí No No
CGI Sí Sí Sí No Sí
Perl Sí Sí Sí No Sí
Antivirus y Antispam
Sí
Antispam, Antivirus adicional 2€/mes
Sí No Antispam
Estadísticas web
Sí Sí Sí No Sí
Aplicaciones incluídas
Editor Web, Blog y Foto
Albúm
Editor Web Chat No No
Tabla 3.- Comparativa de características empresas de Hosting
36
2.3.2.- Elección de 1and1
Nos vamos a centrar específicamente en el plan Basic de 1and1.es, por 1,99€/mes, y el
profesional de arsys.es, esta compañía ofrece el plan profesional por 4€al mes y antes
lo hacia por 8€, esto lo hace para enfrentarse a su rival competidora 1and1.es que en
los últimos meses gracias a la publicidad en TV ha incrementado la distancia en cuanto
a cuota de mercado con arsys.
Principal inconveniente de arsys, la base de datos, solo ofrece base de datos MySQL de
20MB con el plan empresarial, por 8€/mes, mientras que 1and.es ofrece en el plan
Basic un espacio de gestión de base de datos de 1GB.
La única ventaja significativa que ofrece arsys.es son las cuentas de correo, esta
empresa ofrece 40 cuentas con un buzón de 3GB, mientras que 1and1.es solo ofrece
10 con un buzón de 1GB, pero en nuestro caso es algo insignificativo.
Ambas empresas ofrecen una cuenta FTP, necesaria para subir los archivos al servidor,
pero tampoco es algo importante, con una cuenta tenemos suficiente para las tareas
que vamos a realizar.
En cuanto a programación ambas soportan flash, javascript, html 5, php y perl,
suficiente para ofrecer una página web moderna y decente.
Por tanto ambos packs ofrecen prácticamente lo mismo, lo único que los diferencia es
la base de datos, mejor en 1and1.es y las cuentas de correo, mejor en arsys.es, pero
como necesitaremos una base de datos de mejores prestaciones para ejecutar la
aplicación web, nos decantamos por la elección de 1and1.es, eso y la diferencia de 3€
menos al mes hace que en definitiva 1and1.es sea nuestra elección final.
2.3.3.- Asociar el nombre de dominio a nuestra cuenta
Una vez seleccionado 1and1.es como la empresa ideal en España para albergar
nuestra página web, pasamos a comprar el nombre de dominio, para ello consultamos
el Anexo C y asi sabremos como hacerlo.
Una vez comprado el nombre de dominio a 1and1.es, vamos a asociar el nombre de
dominio al directorio de trabajo de nuestro sitio en el hosting que hemos comprado.
Entramos en el panel de control de 1and1, logueandonos previamente con nuestro
usuario y contraseña, seleccionamos la ventana de “1&1 Gestión de archivos” se
encuentra la tercera, arriba a la izquierda en la sección de “Acceso”, tal y como vemos
en la Figura 16.
37
Figura 17.- Gestión de archivos, 1and1
Esto nos lleva a una nueva ventana, donde crearemos nuestro directorio de trabajo, en
la pestaña “Datos” seleccionamos “Nueva carpeta” y elegimos el nombre que
queramos, por ejemplo “sansofin”, tal y como vemos en la Figura 17.
Figura 18.- Creación de un directorio en 1and1
Una vez creado el directorio de trabajo, conocido como sitio, pasamos a asociar el
nombre de dominio que hemos comprado con dicho directorio de trabajo. Volvemos al
menú de inicio de la interfaz y ahora seleccionamos el apartado de “Dominios”, tal y
como vemos en la Figura 16. Seleccionamos nuestro dominio “casarural-sansofi.com” y
aparecerá la configuración de destino del dominio, en “destino”, pulsamos la opción de
“Modificar”. Una vez hecho esto el programa nos llevará configurar el destino del
dominio, tal y como vemos en la Figura 18.
38
Figura 19.- Destino del dominio
Ahora nos encontramos en la página de “destino del domino”, solo hay que seleccionar
el directorio para la página web, desplegaremos el menú desplegable de la opción
“Directorio existente” y seleccionaremos el directorio /sansofin, le damos a enviar y
este será nuestro directorio de trabajo al cual nos conectaremos mediante FTP con el
programa dreamweaver para subir los archivos de la página web.
39
CAPITULO III
Creación del entorno Web
En este punto describiremos la evolución software de nuestra página web, desde la
fase inicial hasta la fase final. El propósito de este punto es definir las distintas fases
intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para
garantizar que el software cumpla los requisitos para la aplicación y verificación de los
procedimientos de desarrollo: se asegura que los métodos utilizados son apropiados.
Para ello pasaremos por la fase de especificación de requisitos, donde describiremos
las funciones, características e interacciones de nuestro programa con los distintos
tipos de usuarios, seguidamente abordaremos la fase del análisis, donde definiremos
los casos de uso y el diagrama de clases, a continuación trataremos el diseño,
definiendo cómo estos requisitos se cumplirán, y para finalizar describiremos la fase de
implementación llevando a cabo a código fuente todo lo diseñado en la fase anterior.
3.1.- Especificación de los requisitos
La especificación de requisitos debe recoger todas aquellas características a cumplir
por nuestra aplicación para satisfacer las expectativas o exigencias del cliente, en el
caso que nos ocupa, así como de los usuarios finales.
La descripción de los requisitos debe realizarse tratando de conservar una perspectiva
cercana al usuario final, evitando términos o tecnicismos que habitualmente emplearía
un desarrollador. Con este fin, se emplea habitualmente un documento que reúne de
forma ordenada estos requisitos y que se conoce como Especificación de Requisitos
Software (ERS), el cual puede tener diferentes formatos.
3.1.1.- Propósito y ámbito
En el proyecto que nos ocupa, se ha optado por organizar los requisitos capturados
empleando una ERS en base al estándar IEEE 830-1998, el cual puede ser utilizado
como referencia en la especificación de proyectos Web, dadas las analogías existentes
con la metodología de proyectos software.
Esta decisión esta orientada en favor no solo de estructurar los requisitos definidos
previamente, sino también en pro de obtener una especificación consistente y no
ambigua.
40
Esta especificación de requisitos representa una parte vital dentro de la memoria, pues
el desarrollo de apartados posteriores deberán cumplir y satisfacer las exigencias de
cada uno de estos requerimientos de partida.
El portal debe denotar un marcado carácter interactivo y amigable, apto para abarcar
la mayor tipología de público objetivo posible. Deberá prevalecer durante todo el
desarrollo del mismo, la importancia de que sus elementos principales deben “estudiar”
y adaptarse al comportamiento de cada usuario, invitando de este modo a permanecer
el mayor tiempo posible en el.
De obligado cumplimiento será cumplir con un aspecto gráfico amigable, denotando
tranquilidad y comodidad en cada uno de los apartados de la página web, los más
relevantes serán: una galería de imágenes de la casa donde resaltar los aspectos más
importantes, como piscina, terrazas, jardines, barbacoa, salón-comedor y habitaciones
confortables; otro aspecto a tener en cuenta es la ubicación de la casa, debe
permanecer clara, para que los futuros visitantes conozcan los aledaños; las tarifas y la
ocupación son aspectos muy importantes, para conocer precios y disponibilidad; como
último aspecto importante el contacto, ya sea por teléfono o a través de la misma web.
Por ultimo, la aplicación deberá contemplar un apartado para la administración de sus
contenidos, donde los administradores de la página web tendrán la posibilidad de
moderar los comentarios que los clientes hacen en la página, añadir, eliminar o
modificar reservas para el alojamiento o revisar si existen nuevas solicitudes de pre-
reserva. En este sentido, el portal presentará una interfaz intuitiva y segura, que
confine la coherencia de la información almacenada en la base de datos.
3.1.2.- Descripción general
El objetivo de este apartado pretende ofrecer una visión lo mas generalizada posible
de la página web, evitando incurrir en descripciones pormenorizadas o mas especificas,
evitando así innecesarias modificaciones en futuras versiones del documento.
El producto a desarrollar no se integrará en un sistema más amplio. De este modo,
funcionará de forma autónoma sobre cualquier plataforma, valiéndose para ello de
cualquier navegador web de actualidad y obviamente, de una conexión a Internet.
Las tecnologías principales empleadas en su implementación han sido:
- Lenguaje HTML para diseñar los aspectos gráficos.
- Lenguaje PHP para la funcionalidad dinámica.
- Plantillas CSS para optimizar la legibilidad de la información mostrada, así
como para propiciar un diseño actual, acorde a las últimas tendencias.
41
- JavaScript de forma puntual, para mostrar el calendario en el apartado de
contacto.
- Applets de Facebook para fomentar la interacción en las redes sociales.
- MYSQL como sistema de gestión de base de datos, usando phpMyAdmin para
manejar la administración de MySQL.
Funciones de la página web
Las funciones ofrecidas por la página web en función de la topología de usuario y que
pueden ser distinguidas son las siguientes:
Operaciones sobre imágenes
Visualización de lista de miniaturas.
Selección de imagen en concreto.
Cambio y cierre de imagen.
Operaciones sobre enlaces
Acceso a otras webs (links).
Operaciones sobre solicitudes de reservas
Selección de fecha en calendario.
Envío de solicitud de reserva.
Visualización de envió de solicitud correcta.
Operaciones sobre comentarios
Visualización de comentarios.
Creación, eliminación y modificación de comentarios propios.
Operaciones sobre el calendario
Visualización de fechas libres.
Consulta de disponibilidad para una determinada fecha.
Operaciones sobre gestión de reservas
Visualización de reservas.
Creación, edición y eliminación de reservas.
Consulta de reservas.
Operaciones sobre usuarios
Visualización de usuarios y toda la información asociada en su registro.
Registro y autenticación de usuarios.
Modificación de la información del registro.
Creación, edición y eliminación de usuarios.
Cierre de sesión de usuario.
42
Las demás operaciones de la página web consisten en listar información de texto o
similar, disponible para cualquier tipo de usuario.
Características de los usuarios
Usuario Anónimo
Cualquier visitante esporádico o no, el cual no se haya autenticado.
Tendrá acceso total al apartado de La casa, Imágenes, Ubicación, Entorno y Enlaces.
En el apartado de Contacto podrá enviar una solicitud de reserva, pero en el apartado
de Tarifas no podrá realizar una pre-reserva interactuando con el calendario.
En el apartado de Opiniones, podrá leer las opiniones pero no podrá escribir ninguna
nueva.
No tendrá acceso al apartado de administración Lugar del propietario.
Tendrá acceso a toda la información de la parte más estática de la página, pero solo
en modo lectura.
Usuario Registrado
Se trata de cualquier usuario que haya completado el proceso de registro y se haya
logueado en el portal.
Tendrá el mismo acceso y funcionalidad que el usuario anónimo y además podrá
realizar las siguientes opciones, realizar una pre-reserva interactuando con el
calendario e insertar un comentario en el apartado de Opiniones, además podrá
modificar y borrar sus propios comentarios una vez los haya insertado.
No tendrá acceso al apartado de administración Lugar del propietario.
Usuario Interno
Este tipo de usuario solo puede ser creado por el usuario administrador.
Podrá realizar las mismas funciones que un usuario anónimo.
Accederá al Lugar del propietario siendo capaz de listar todo el contenido que se
encuentre en él, reservas realizadas mediante calendario, histórico de reservas. Pero
no podrá realizar la función de modificar y eliminar ningún contenido.
Usuario Administrador
Solo existe un único usuario administrador creado junto con la aplicación.
Realiza la misma función que un usuario interno y además:
Será el encargado de realizar cualquier modificación (y eliminación) sobre la gestión de
reservas.
Podrá crear nuevos usuarios internos, como también usuarios registrados, además de
tener acceso a la información del registro de usuario.
Podrá modificar y eliminar comentarios creados por usuarios registrados.
43
3.1.3.- Requisitos funcionales
Siguiendo una clasificación basada en la tipología de usuario, a continuación vamos a
mostrar una descripción detallada de los casos de uso distintos en función del usuario,
definiremos cada caso de uso mediante el acrónimo CU, distinguiéndolo con el número
en concreto y siendo titulados:
Usuario anónimo
Recordamos que este tipo de usuario puede ser cualquier futuro cliente, tendrá acceso
a la mayoría de apartados estáticos de la página web.
CU-01 Registrarse en la página web
Introducción
El usuario anónimo decide formar parte de la página web
como futuro usuario registrado, para poder acceder a nuevas
funcionalidades, seguramente será un huésped que ya haya
estado en la casa.
Entradas Cada uno de los campos del formulario de registro.
Proceso
El sistema muestra el formulario de alta de nuevo usuario. Si el
usuario confirma su envío, el sistema verifica que hayan sido
cumplimentados los campos obligatorios.
El nuevo usuario será insertado en la BD asegurándose de que
el em@il no exista.
Salidas Texto informando de que el proceso fue exitoso.
CU-02 Visualizar galería de imágenes
Introducción El usuario podrá visualizar todas las imágenes en una galería
estática, para ello deberá pulsar la pestaña de imágenes.
Entradas Pestaña “imágenes” seleccionada por el usuario en el menú de
selección.
Proceso
El sistema recibe como entrada el código de la pestaña
seleccionada, carga los estilos y las imágenes para representar
la galería.
Salidas Página con las imágenes en miniatura.
CU-03 Visualizar en detalle una imagen
Introducción
El usuario podrá aumentar el tamaño de las imágenes una vez
seleccionada la galería, también podrá avanzar a la imagen
siguiente y retroceder
Entradas Imagen seleccionada por el usuario.
44
Proceso
El sistema recibe como entrada el código de la pestaña
seleccionada, carga los estilos y el código javascript para
representar la galería.
Salidas Ventana con la imagen seleccionada, a una mayor resolución.
CU-04 Visualizar la descripción de la casa
Introducción El usuario en esta pestaña dispondrá de una descripción breve
pero concisa de la casa, junto con 3 imágenes.
Entradas Pestaña “la casa” seleccionada por el usuario.
Proceso
El sistema recibe como entrada el código de la pestaña
seleccionada, carga el texto, las imágenes y los estilos para
representar dicha página.
Salidas Página con la descripción de la casa.
CU-05 Visualizar la ubicación en el mapa
Introducción
El usuario en esta pestaña dispondrá de breve descripción para
que sea capaz de acceder a la casa rural, junto con un mapa
dinámico de la zona elaborado por gmaps.
Entradas Pestaña “ubicación” seleccionada por el usuario en el menú de
selección.
Proceso
El sistema recibe como entrada el código de la pestaña
seleccionada, carga el texto, las imágenes y los estilos para
representar dicha página.
Salidas Página con la información sobre ubicación y el mapa.
CU-06 Visualizar las tarifas
Introducción
El usuario en esta pestaña dispondrá de una tabla con las
tarifas correspondientes por temporada, para que conozca los
precios dependiendo de cuando decida venir a la casa.
Entradas Pestaña “tarifas” seleccionada por el usuario en el menú de
selección.
Proceso
El sistema recibe como entrada el código de la pestaña
seleccionada, carga el texto, los estilos y el calendario para
representar dicha página.
Salidas Página con las tarifas en función de la temporada y el
calendario de disponibilidad.
CU-07 Visualizar el calendario de ocupación
Introducción El usuario en esta dispondrá de la visualización del calendario
45
de ocupación, en gris estarán las fechas libres, mientras que
en rojo los días ocupados, se abrirá una nueva ventana con
solo el calendario, con el mes en concreto y dos adyacentes,
con el selector podrá cambiar de mes hacia delante o atrás en
el tiempo.
Entradas Selección de la imagen del calendario.
Proceso
El sistema carga los estilos del calendario a crear, busca en la
BD la ocupación confirmada para marcar en rojo las fechas no
disponibles y crea el calendario de ocupación.
Salidas Ventana emergente con la disponibilidad del calendario.
CU-08 Enviar una solicitud de reserva
Introducción
El usuario decide formar realizar una reserva para pasar unos
días en la casa rural, cumplimenta los campos del formulario y
espera a recibir un m@il con la disponibilidad y precios sobre
sus fechas seleccionadas.
Entradas Todos los campos obligatorios del formulario.
Proceso
El sistema crea un correo electrónico con los campos que han
sido rellenados en el formulario y es enviado a la dirección de
correo del administrador de la página.
Salidas Texto informando sobre el correcto envío de la información.
CU-09 Acceder a un enlace
Introducción El usuario puede acceder a otras páginas de sitios relacionados
o de interés común.
Entradas Click en la imagen del sitio al que acceder
Proceso El usuario es redirigido al website en concreto abriendo una
nueva pestaña en el navegador.
Salidas Website en concreto, el que hemos seleccionado.
CU-10 Visualizar opiniones ajenas
Introducción El usuario podrá visualizar las opiniones de otros huéspedes
que han estado alojados en la casa rural anteriormente.
Entradas Pestaña “opiniones” seleccionada por el usuario en el menú de
selección.
Proceso
El sistema busca en la BD y extrae toda la información
necesaria para cada usuario, luego estos mismos campos los
introduce en una tabla y es lo que el usuario visualiza.
Salidas La información en modo texto referente a los comentarios
realizados por otros usuarios.
46
Usuario registrado
Recordamos que un usuario registrado dispone de la misma funcionalidad que un
usuario anónimo, además de las descritas a continuación.
CU-11 Autenticarse en la página web
Introducción
Para identificarse en la página web e iniciar así una sesión,
será suficiente con que el usuario ingrese su Username y
Password en el área de Usuarios.
Entradas Los datos de Username y Password ingresados por el usuario.
Proceso
El sistema contrasta la información recibida con la BD. En caso
de encontrar una tupla que coincida, valida la operación e
inicia una sesión. Así el usuario tendrá acceso a otro tipo de
contenidos.
Salidas Mensaje de fallo en caso de una mala autenticación o de
bienvenida en caso contrario.
CU-12 Modificar perfil y preferencias de usuario
Introducción El usuario puede editar los datos de registro así como alterar
sus preferencias.
Entradas Formulario cumplimentado con los campos modificados a
conveniencia del usuario.
Proceso
El sistema muestra el sistema de modificación al usuario. Si
éste confirma su envío, el sistema verifica que los campos
modificados presentan el formato adecuado. A continuación
modifica las tuplas con los nuevos valores en la BD.
Salidas Se informa al usuario que la modificación concluyó con éxito o
que el proceso fue cancelado.
CU-13 Realizar una pre-reserva mediante el calendario
Introducción
El usuario puede reservar unas fechas modificando
directamente el calendario de ocupación, siempre y cuando
sea un usuario registrado, (aceptado por el sistema)
Entradas Todos los campos obligatorios del formulario.
Proceso
El sistema verifica que hayan fechas libres para esa reserva,
consultando la BD, entonces modifica los valores de ambas
tablas, de reserva y del calendario, para confirmar que dicha
reserva ha sido realizada.
Salidas Calendario con los días seleccionados en rojo, junto con un
mensaje al usuario de operación realizada con éxito.
47
CU-14 Insertar una opinión
Introducción El usuario registrado puede insetar una opinión en el área de
opiniones.
Entradas Formulario con el texto del mensaje y otros campos
introducidos por el usuario.
Proceso
El sistema comprueba que los campos obligatorios han sido
rellenados y que el texto de la opinión no contiene lenguaje
ofensivo, en cuyo caso insertamos una nueva tupla en la BD.
Salidas Se informa al usuario de que el mensaje fue insertado
correctamente o error en caso contrario.
CU-15 Modificar una opinión
Introducción
El usuario puede modificar una opinión, siempre y cuando sea
propietario de la misma. El sistema no dará la opción de
modificado sino se cumple esta condición.
Entradas Enlace “modificar opinión” junto con los datos a modificar.
Proceso
El sistema comprueba que los campos obligatorios han sido
rellenados y que el texto de la opinión no contiene lenguaje
ofensivo, en cuyo caso modificamos la tupla en la BD
Salidas Se informa al usuario de que el mensaje fue modificado
correctamente o error en caso contrario.
CU-16 Eliminar una opinión
Introducción
El usuario puede eliminar una opinión, siempre y cuando sea
propietario de la misma. El sistema no dará la opción de
borrado sino se cumple esta condición.
Entradas Enlace “eliminar opinión” seleccionado por el usuario, el cual
lleva asociado el identificador del mensaje a eliminar.
Proceso El sistema borra de la BD la tupla asociada al identificador del
mensaje.
Salidas Se informa al usuario de que el mensaje fue eliminado
correctamente.
CU-17 Cerrar sesión
Introducción El usuario puede cerrar la sesión activa en cualquier momento.
Entradas Enlace “cerrar sesión” seleccionado por el usuario, el cual
envía una variable de logout.
Proceso Es destruido el identificador de sesión así como las variables de
sesión.
48
Salidas Se muestra la página desde donde hemos realizado logout con
las opciones propias de un usuario anónimo.
Usuario interno
Recordamos que este usuario es el responsable de gestionar las reservas que sucedan
en tiempo real en la aplicación.
CU-18 Visualizar histórico de reservas
Introducción
El usuario puede obtener un listado de reservas realizadas,
utilizando un formulario de búsqueda en base al año de la
estancia de la reserva.
Entradas Selección del año a buscar.
Proceso
El sistema realizar una búsqueda de la reservas totales
mediante consulta a la BD, mediante sentencias SQL es capaz
de listar tan solo las estancias del año introducido.
Salidas Listado de todas las reservas en una tabla, con todos sus
atributos que aportan información adicional.
CU-19 Visualizar pre-reservas mediante calendario
Introducción
El usuario puede visualizar las pre-reservas realizadas por los
usuarios registrados, para atender su petición y comenzar las
gestiones.
Entradas Selección de pestaña de pre-reservas.
Proceso El sistema busca la pre-reserva en la BD y extrae toda la
información necesaria de la tupla encontrada.
Salidas Se informa al usuario interno de las nuevas pre-reservas
mediante una tabla.
CU-20 Eliminar pre-reservas mediante calendario
Introducción
El usuario puede, en caso de no tener interés de llenar esos
días la casa, anular la pre-reserva y ponerse en contacto con el
cliente para confirmárselo.
Entradas Selección de pre-reserva a eliminar en la tabla de pre-reservas.
Proceso El sistema consulta la BD directamente, accede a la tupla en
concreto y la borra.
Salidas Se muestra un mensaje informando de la eliminación de la
tupla, siempre tendrá éxito esta acción.
49
CU-21 Crear una reserva
Introducción El usuario puede dar de alta nuevas reservas, cumplimentando
cada uno de los campos del formulario.
Entradas Formulario cumplimentado y enviado por el usuario.
Proceso
El sistema muestra el formulario de apertura de una nueva
reserva. Al cumplimentar el envío el sistema verifica que estén
cumplimentados los campos obligatorios. Si se cumplen las
condiciones anteriores en sistema introducirá una nueva
reserva en la BD.
Salidas Se informa al usuario de que la reserva fue introducida
exitosamente.
Además el usuario interno es capaz de autenticarse y cerrar sesión en la página web,
comportamientos ya descritos anteriormente en los casos de uso CU-11 y CU-17.
Usuario administrador
Por último recordamos que este tipo de usuario dispone de las posibilidades de un
usuario interno, además de las funcionalidades que se describen a continuación.
CU-22 Visualizar usuario registrados en la página web
Introducción
El administrador puede obtener un listado de todos los
usuarios registrados en la página. El listado resultado estará
ordenado en órden alfabético de primer apellido, mostrará sus
datos y opciones como eliminación y visualización en detalle.
Entradas Seleccionar la sección usuarios, dentro del panel del
administrador.
Proceso El sistema obtiene de la BD la información necesaria de cada
usuario registrado en la misma.
Salidas Listado ordenado alfabéticamente por apellido de todos los
usuarios junto con algunas opciones.
CU-23 Visualizar los detalles de los usuarios
Introducción El administrador puede visualizar todos los detalles de un
usuario determinado a excepción de su contraseña.
Entradas Username seleccionado por el administrador.
Proceso El sistema busca el usuario en la BD y extrae toda la
información necesaria de la tupla encontrada.
Salidas Ventana emergente mostrando toda la información disponible
50
sobre el usuario a excepción de su contraseña.
CU-24 Crear un usuario
Introducción El administrador puede dar de alta nuevos usuarios, ya sea con
privilegios de interno o de registrado.
Entradas Formulario cumplimentado por el administrador.
Proceso
El sistema muestra el formulario de nuevo usuario. Si el
administrador confirma su envío, el sistema verifica que hayan
sido marcados los campos obligatorios. De ser así el nuevo
usuario es insertado en la BD, siempre que no exista
duplicidad en los campos username y em@il.
Salidas Se informa al administrador que el evento fue introducido con
éxito o que el proceso fue cancelado.
CU-25 Eliminar un usuario
Introducción El administrador puede eliminar usuarios de la BD a
conveniencia.
Entradas Formulario de confirmación de borrado de usuario, enviado por
el administrador.
Proceso
El sistema muestra un formulario de confirmación de borrado.
Si éste es confirmado, se elimina de la BD la tupla asociada al
usuario.
Salidas Se muestra un mensaje informando que la eliminación
concluyó con éxito o bien que el proceso fue cancelado.
CU-26 Modificar una reserva
Introducción El administrador puede modificar una reserva de la BD.
Entradas Formulario de confirmación de modificación de reserva enviado
por el administrador.
Proceso
El sistema muestra un formulario de confirmación de
modificación. Si éste es confirmado, se modifica de la BD la
tupla asociada a la reserva.
Salidas Se muestra un mensaje informando que el modificado
concluyó con éxito.
CU-27 Eliminar una reserva
Introducción El administrador puede eliminar una reserva de la BD.
Entradas Formulario de confirmación de borrado de reserva enviado por
el administrador.
51
Proceso
El sistema muestra un formulario de confirmación de borrado.
Si éste es confirmado, se elimina de la BD la tupla asociada a
la reserva.
Salidas Se muestra un mensaje informando que la eliminación
concluyó con éxito.
CU-28 Eliminar una opinión
Introducción
El administrador puede eliminar cualquier opinión a
conveniencia, con el fin de retirar comentarios ofensivos o
simplemente si se diera el caso de que el mensaje no guarde
relación con el contenido.
Entradas Enlace de “eliminar opinión” seleccionado por el administrador.
Proceso Se elimina de la BD la tupla correspondiente a la opinión
seleccionada.
Salidas Se muestra un mensaje informando que la eliminación
concluyó con éxito.
3.2.- Análisis
Una vez han sido descritos los requisitos capturados, en el capitulo anterior, es preciso
profundizar en alguna metodología que propicie la detección de aquellos apartados
generales que guardan una relación directa con esos requisitos. Esta metodología debe
tener la virtud de ser lo suficientemente abstracta como para conseguir mantener la
independencia con los diversos recursos tecnológicos disponibles para su
implementación, los cuales serán abordados en capítulos posteriores.
En la actualidad, existe una metodología ya consolidada y denominada RUP (Rational
Unified Process), que cubre ampliamente las expectativas expresadas en el párrafo
anterior. Esta metodología se apoya en modelos UML (Unified Modeling Language) que
ayudan a describir la función, la arquitectura o el diseño del software.
UML es el lenguaje de modelado de sistemas software mas utilizado actualmente,
respaldado por el OMG (Object Management Group), que sirve eficazmente para
describir procesos haciéndose valor para ello de elementos gráficos. Permite visualizar,
especificar, construir y documentar un sistema. Ofrece por tanto de un estándar que
podemos hacer servir óptimamente en nuestra aplicación web.
UML dispone de diversos diagramas para identificar las diversas entidades del sistema
a modelar. De entre todos ellos, nos basaremos en el Diagrama de Casos de Uso así
como en el Diagrama de Clases para continuar con el desarrollo del proyecto que nos
ocupa.
52
3.2.1.- Diagrama de casos de uso
Un Diagrama de Casos de Uso muestra como debería reaccionar el sistema con el
usuario, o bien con otro sistema, para conseguir un objetivo. Se trata por tanto de una
representación de la secuencia de acciones entre un sistema y sus actores,
respondiendo a un evento que inicia uno de los actores principales.
El uso de este tipo de diagramas esta ampliamente extendido debido a la notación
relajada de la que hace uso, resultando por tanto muy cercano para el usuario final.
En la Figura 20 se muestran los diversos actores identificados cuyas peculiaridades ya
fueron descritas en apartados anteriores. El diagrama pone de manifiesto la
especialización de algunos de los usuarios. El usuario registrado hereda atributos del
usuario anónimo, por otro lado el usuario interno también hereda atributos del usuario
anónimo pero no del usuario registrado. Y definitivamente el usuario administrador
hereda atributos del usuario interno.
Figura 20.- Actores principales del sistema
En los diagramas de casos de uso debemos tener en cuenta que han sido
consideramos en las Figuras 23 y 24 tan solo los casos de uso propios de determinados
usuarios, entendemos que los casos de uso del usuario administrador son heredados
del usuario interno y este del usuario anónimo. Como sigue, el usuario registrado
heredará los casos de uso del usuario anónimo, pero estos han sido obviados en los
diagramos en concreto para facilitar su lectura.
Expondremos a continuación los diferentes casos de uso para cada uno de los actores
identificados.
53
Figura 21.- Casos de uso para el usuario anónimo
Figura 22.- Casos de uso para el usuario registrado
54
Figura 23.- Casos de uso para el usuario interno
Figura 24.- Casos de uso para el usuario administrador
3.2.2.- Diagrama de clases
Los Diagramas de Clases muestran las diversas entidades que componen un sistema y
como se relacionan unas con otras. Podríamos decir que son diagramas estáticos en
tanto en cuanto describen la estructura del sistema.
Una clase define los atributos y los métodos de una serie de objetos, de forma que
todos los objetos de una clase determinada tienen el mismo comportamiento y el
mismo conjunto de atributos. Para el caso que nos ocupa, un objeto podría ser un
usuario, un contacto o una opinión.
A continuación se muestra el Diagrama de Clases (Figura 25) que representa el
sistema objeto de estudio. Asimismo se incluye la cardinalidad y nombre de algunas de
las relaciones, con el objetivo de facilitar la comprensión de aquellos escenarios que
podrían suscitar cierto grado de ambiguedad.
55
Figura 25.- Diagrama de clases del proyecto
56
3.3.- Diseño
En este capitulo, la aplicación será descrita con un nivel de detalle todavía mas elevado
si cabe que el conseguido en el capitulo de Análisis. Para conseguir el objetivo anterior,
nos haremos servir de una arquitectura Web basada en el modelo de tres niveles.
Arquitectura basada en tres niveles
De entre todos los estilos arquitectónicos que podemos elegir para realizar el diseño de
la aplicación (arquitecturas de flujos de datos, de componentes independientes,
centradas en datos –repositorios–, de máquina virtual o arquitecturas heterogéneas) la
que mejor se amolda los objetivos que se pretenden lograr con el desarrollo de la
aplicación es la arquitectura de componentes independientes debido a que este
esquema favorece tanto la distribución de los datos como el procesamiento que se va a
realizar sobre ellos, en una serie de unidades independientes (los denominados
componentes) que interactuarán entre sí para lograr un objetivo. Normalmente no se
podrá acceder de forma directa al estado que almacena un componente sino que se
deberá hacer invocando a sus operaciones.
De hecho el adoptar este esquema arquitectónico va a permitir que nos podamos
centrar más en los procesos que se llevarán a cabo sobre los datos, es decir, nos
centraremos más en la funcionalidad que se está pidiendo para el sistema y en su
organización en unidades independientes. Además, el hecho de seguir esta
arquitectura nos va a reportar una ventaja adicional: al desarrollar cada una de las
partes del sistema como una serie de unidades independientes va a favorecer al
reutilización de las mismas (posteriormente las podremos utilizar en otras aplicaciones)
además de que favorecerá el hecho de que cada componente pueda ser instalado en
máquinas diferentes (lo que nos permitirá, por ejemplo, conseguir un mayor balanceo
en las cargas de los servidores web ya que las máquinas en las que se instale la parte
web pueden ser independientes de las máquinas donde estén almacenados los datos
físicamente).
Una vez que nos hemos decantado por este estilo arquitectónico dentro de él podemos
englobar a varios estilos: sistemas basadas en niveles, sistemas cliente-servidor,
sistemas orientados a objetos distribuidos, sistemas basados en eventos, sistemas
orientados a servicios, sistemas de procesos paralelos y sistemas peer-to-peer. De
entre todos ellos nos vamos a decantar por el estilo arquitectónico basado en niveles
en el cual el sistema se representará de una forma jerárquica entre todos los
elementos que los forman, de manera que cada una de las capas proporciona servicios
a la capa que está inmediatamente por encima (o delante) de ella y se sirve los
elementos de la capa que está inmediatamente por debajo (o detrás) de ella.
57
En el caso de la aplicación que estamos diseñando se ha realizado una división del
sistema en las siguientes tres capas:
Figura 26.- Arquitectura de tres niveles
A continuación describiremos en detalle cada uno de los niveles:
• Nivel de Interfaz o Presentación: formado por aquellos elementos que permiten
al usuario interactuar con el sistema (formularios, imágenes, consulta de
disponibilidad…). También utilizada por el sistema para informar al usuario (mensajes
de error, información demandada,…). Asimismo, se refiere también al diseño y al
formato en que es mostrada la información. Debe tener la virtud de resultar intuitiva y
amigable para el usuario, esto es, comprender su funcionamiento en el menor tiempo
posible, en pocas palabras: “ponerle las cosas fáciles” al usuario. El nivel de interfaz es
el que se comunica con el nivel de aplicación.
• Nivel de Aplicación o Lógico: formado por las funciones que implementan el
comportamiento de las diferentes clases, ya especificado en el apartado de análisis. Es
el apartado encargado por tanto de pilotar las operaciones, de aplicar la lógica de
control, de procesar y gestionar la información. Este nivel representa el enlace que
comunica los otros 2 niveles.
• Nivel de Almacenamiento o Persistencia: integra la Base de Datos y el Sistema
de Gestión de la Base de Datos (MySQL y phpMyAdmin respectivamente, en el caso
que nos ocupa). No solo es el encargado de almacenar la información, sino también el
responsable de la seguridad e integridad de la misma. A continuación se detalla como
han sido abordados cada uno de los niveles para el caso en estudio.
58
3.3.1.- Nivel de presentación
Esta capa será la encargada de generar la interfaz de usuario en función de las
acciones que éste lleve a cabo en la aplicación, es decir, que deberá contener todos los
componentes necesarios que permitan realizar la interacción de los usuarios con la
aplicación. De hecho, en el estudio de los requisitos del sistema hemos visto que
tenemos un total de cuatro usuarios diferentes: administradores, internos, registrados
y anónimos, por lo que la capa de presentación deberá ofrecer las funcionalidades que
permitan a todos ellos la realización de los casos de uso que cada uno ellos inicia.
En la Figura 27, podemos observar la estrategia llevada a cabo para diseñar la página
principal, todas las demás páginas tienen el mismo formato. Una cabecera que en
todas las páginas es la misma, contiene una imagen del entorno y los rótulos de “Casa
rural Sansofí”, un menú para acceder a las secciones de la página web y bajo de el
menú un recuadro con el fondo en blanco con los contenidos de cada sección, de cara
a los usuarios anónimos (posibles futuros huéspedes) tiene un aspecto, claro y conciso
de la información, en la página principal se ha optado por mostrar una foto de la casa
vista en perspectiva caballera, con las montañas de la Sierra de Corbera de fondo,
dando el toque de calidez ideal que invitan al usuario a continuar visitando las demás
secciones de la página web.
Figura 27.- Página principal
59
Figura 28.- Descripción de la casa
Figura 29.- Imágenes de la casa
60
En las secciones de las Figuras 28, 29, 30, 31 y 32 conservamos la misma misma
plantilla, junto con la imagen de cabecera y el logo de la empresa, el menú con enlaces
a contenidos, el cuerpo de la página (que incluirá la información propia de cada
sección) y un pie de página para todas las secciones igual que incluye.
En la Figura 28 realizamos una breve descripción de la casa, en el primer párrafo
definimos su ubicación y el entorno, junto con una imagen acorde con el texto, esta
estratégia será la misma para los otros dos párrafos. En el segundo explicamos el
equipamiento del hogar y el tercero es un texto de puro marketing que intenta
convencer a los futuros huéspedes de lo idónea que es la casa para su estancia.
En la Figura 29 nos encontramos con la sección de imágenes, su contenido es muy
característico, primero aparecen los exteriores, dando una mayor importancia a la
piscna y barbacoa; luego aparecen las terrazas, comoder y cocina; para terminar los
dormitorios.
En la Figura 30 encontramos un applet de google maps ideal para situar la casa rural
en un punto del mapa y poder acceder a los alrededores de forma dinámica. Junto al
mapa se encuentra una breve descripción de la ubicación del lugar, ofreciendo dos
posibilidades para llegar a la casa rural, bien por la autopista o por la carretera
nacional. Y también se ofrecen las coordenadas GPS para que nos lleve dicho aparato.
Figura 30.- Ubicación de la casa
61
Figura 31.- Formulario de contacto
Figura 32.- Opiniones de huéspedes
62
La sección de la Figura 31 nos ofrece la posibilidad de ponerse en contacto con el
administrador de la casa rural, para ello disponemos de un formulario de contacto
visible y claro, en un fondo de color blanco, los campos a cumplimentar serán los
necesarios para procesar una pre-reserva. También aparece la dirección de la casa,
junto con el teléfono y nombre de la persona de contacto, pudiendo contactar por
teléfono o por correo electrónico.
En la Figura 32 observamos un diseño muy sencillo (en todas las secciones predomina
el diseño sencillo) ofreciendo la información de manera muy clara y directa, obviando
cualquier parafernalia que pueda entretener la mente del futuro cliente en detalles sin
importancia. Los campos que aparecen a cumplimentar en esta sección son los
necesarios, siendo el comentario el más importante, que transmitirá confianza a los
lectores que tengan pensado pasar una estancia en la casa rural.
La sección de la Figura 33 ofrece enlaces a otros sitios web, siendo el primero la
cuenta de usuario de Facebook de la casa rural, importante tener allí una página (esto
será comentado en el capítulo IV). El segundo un negocio de venta de naranjas del
huerto de la casa rural y por último, un enlace a un portal especializado en turismo
vacacional, donde se encuentra el anuncio en múltiples idiomas.
Las secciones de tarifas y entorno no han sido comentadas en dicho PFC por motivos
de privacidad.
Figura 33.- Enlaces a otros sitios
63
3.3.2.- Nivel de aplicación
Este nivel contiene la lógica que modela los procesos de aplicación y será donde se
realizará todo el procesamiento necesario para poder atender las peticiones de los
usuarios (actores) que nos llegarán desde el nivel de presentación. Además este nivel
es el responsable de interactuar con el nivel de acceso de acceso a datos para poder
ejecutar su lógica.
Es precisamente el papel de enlace descrito anteriormente, el que le confiere su
carácter de independencia y que por tanto permite efectuar modificaciones en los otros
2 niveles, sin que ello suponga una revisión en profundidad en el resto de niveles.
Figura 34.- Diagrama de tareas
En la Figura 34 puede observarse una muestra de diagrama de procesos o tareas
donde son representados los procesos externos como puntos de entrada de la
información a la aplicación de la página objeto de estudio, así como también quedan
representados los conjuntos de procesos internos que se desencadenaran
respondiendo al “estimulo” de los primeros. Estos procesos internos pueden
descomponerse en otros a su vez más específicos, en coherencia con las definiciones
dadas en los casos de uso.
Según puede extraerse de la figura anterior, el diagrama representa los procesos
externos como aquellos que son accedidos por elementos “actor”, así como los
conjuntos de tareas relacionadas con otras “subtareas”, relación manifiesta mediante el
uso de flechas indicando relaciones de dependencia.
64
3.3.3.- Nivel de persistencia
Esta capa, también denominada a veces capa de integración, será la encargada de
implementar el acceso a los datos de los cuales se nutre la aplicación, habitualmente
recurriendo a un gestor de base de datos relacional.
A continuación analizaremos nuestro diseño lógico, esto es, la estructura de la base de
datos representada en un lenguaje comprensible por cualquier sistema de gestión de
bases de datos relacionales.
USUARIO (dni:varchar(9), nombre:varchar(20), apellidos:varchar(60),
nacimiento:date, email:varchar(50), username: varchar(25), password: varchar(50),
tipo:varchar(3))
CP:{id}
VNN:{nombre, email, username, password, tipo}
RESERVAS (id:int(9), nombre:varchar(50), origen:varchar(50), estancia:date,
observaciones:text, precio:int(4), email:varchar(45) )
CP:{id}
VNN:{nombre, estancia, precio}
PREFERENCIAS_USUARIOS (username: varchar(40), casa: varchar(8),
ubicacion:int(4), tarifas: int(4), enlaces: int(4), contacto: int(4), opiniones: int(4), )
CP: {username}
VNN: {casa, ubicacion, tarifas, enlaces, contacto, opiniones}
CAj: {username} -> USUARIO
OPINIONES (id:int(3), username:varchar(25), nomb:varchar(50), ciudad:varchar(40),
encontr:varchar(80), fecha:date, texto:text )
CP:{id}
VNN:{id, username, nomb, ciudad, encontr, fecha, texto}
CAj:{username} -> USUARIO
CALENDARIO (id, nombre, llegada, salida)
CP:{id}
VNN:{id, nombre, llegada, salida}
CAj:{nombre} -> RESERVAS
65
3.4.- Implementación
En el capitulo anterior, la aplicación objeto de este estudio fue estructurada en
diversos niveles y fueron descritos todos ellos de la forma mas abstracta posible,
evitando entrar en detalles sobre tecnologías o recursos de implementación.
En el capitulo que nos ocupa, serán revisadas las tecnologías Web recurridas para
implementar la aplicación, progresando de forma ordenada a través de la estructura de
niveles que fue especificada.
3.4.1.- Tecnologías utilizadas
A continuación serán descritas con mayor nivel de profundidad, las tecnologías
utilizadas más importantes en este proyecto que ya fueron presentadas en el punto
1.4.- Materiales y métodos.
HTML
HTML, siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es
le lenguaje que predomina en el desarrollo de paginas web. Gracias a el, es posible no
solo describir el contenido de texto de una pagina web sino tambien su forma o
estructura, permitiendo incrustar imagenes y otros objetos en la misma.
La historia del estandar se remonta a principio de 1990, cuando Tim Berners-Lee
define el HTML como un subconjunto de un conocido lenguaje de etiquetas
denominado SGML y ademas crea algo más valioso aun, el World Wide Web.
Figura 35.- Etiquetas empleadas por el lenguaje HTML
66
Este lenguaje se escribe a base de etiquetas delimitadas por corchetes angulares (< ,
> ). Cuando se utiliza una etiqueta, habitualmente debe utilizarse otra de cierre, la cual
antepondra el simbolo de barra ( / ). Sirva un ejemplo:
<p>Esto esta escrito con una fuente normal mientras que <strong>esto esta escrito
con una fuente mas gruesa o negrita</strong></p>
El parrafo anterior sera mostrado como:
Esto esta escrito con una fuente normal mientras que ésto está escrito con una
fuente más gruesa o negrita
El lenguaje HTML puede ser escrito y editado con cualquier editor de textos sencillo,
aunque habitualmente se emplean editores potentes que permiten visualizar el
resultado de lo que se esta haciendo asi como identificar errores de programación.
Una página web HTML debe contener una estructura mínima de etiquetas como sigue:
<html>
<head>
<title>Aquí iría el título de la página</title>
</head>
<body>
Aquí debe ir el contenido de la página
</body>
</html>
El diseño en HTML debe respetar unos criterios de accesibilidad web, siguiendo unas
pautas o normativas. Se encuentra disponible y desarrollado por el W3C a traves de las
Pautas de Accesibilidad al Contenido Web 1.0 WCAG
CSS
El lenguaje HTML está algo limitado si queremos emplearlo para definir la forma de un
documento, ya que no fue concebido precisamente para este fin. Aun asi, durante
mucho tiempo los disenadores han debido recurrir a “trucos” para salvar esta
dificultad, causando a menudo problemas en las paginas a la hora de su visualizacion
en distintas plataformas.
CSS u hojas de estilo en cascada (Cascading Style Sheets), es un lenguaje usado para
definir la presentacion de un documento estructurado escrito en HTML. Lo que se
pretende con esta tecnologia es separar la estructura de una página web de su
67
presentación, esto es, el contenido en si a mostrar de la forma con que se desea que
aparezca.
CSS puede incorporarse en el mismo documento HTML o bien adjuntarse como un
documento por separado (obviamente el documento HTML debera entonces
referenciarle).
Enumeraremos algunas de las ventajas de CSS:
• Podemos definir la forma de presentación de un website entero, de solo una página o
una porción de la misma. Se agilizan por tanto enormemente, las tareas de
modificación: por ejemplo, bastaría con editar una hoja de estilo CSS para que tuviera
una repercusión inmediata en todas las páginas del website.
• El documento HTML es mas fácil de entender, pues conseguimos con CSS separar la
forma del contenido (el código que hace referencia a la forma, ya no estará
entremezclado con el código restante).
• Una misma pagina Web puede ser mostrada de forma correcta en diversos
dispositivos de salida: un móvil, una impresora, una PDA. Para ello bastara con
sustituir la hoja de estilo empleada.
• Aumento considerable de la accesibilidad, ya que un navegador web permite a un
usuario especificar su propia hoja de estilo local. Idóneo por tanto para usuarios con
deficiencias visuales (hojas que aumentan el tamaño de letra o la combinación de
colores).
Otro de los recursos ampliamente buscados por diseñadores web y que están basados
en CSS son los denominado Framewoks CSS. Estos no son mas que declaraciones de
estilos escritas en CSS que preparan y agilizan la maquetación de una pagina web,
principalmente porque resetean y normalizan los estilos, con el fin de homogeneizar los
resultados (conseguimos que nuestras paginas sean mostradas del mismo modo en
cualquier navegador web).
Modelo de caja en CSS
CSS pone a disposición del diseñador otro recurso muy extendido que es el Modelo de
Caja. Este modelo permite estructurar los diferentes contenidos de la pagina como si
de cajas rectangulares de tratara. Cada caja puede pertenecer a un servicio (por
ejemplo, el buscador), una sección (por ejemplo el apartado de noticias) o a su vez
una parte de una sección (por ejemplo la fotografía de la noticia).
68
Las cajas a su vez están compuestas por partes o capas, presentando en conjunto una
estructura tridimensional. De esta forma, toda caja tiene una parte que es el borde,
otra que es el relleno, un margen, un color y una imagen de fondo, un relleno y
finalmente un contenido. Cada una de estas partes podríamos representarlas como una
estructura de capas superpuestas, como puede verse en la Figura 36.
Figura 36.- Modelo de caja en CSS
Las cajas se implementan en HTML, delimitándolas con un par de etiquetas <div>
</div>. Posteriormente se asigna a cada caja una serie de estilos CSS a través de un
identificador o una clase. Sirva como ejemplo el siguiente extracto de código HTML que
describe una de las diversas cajas empleadas en nuestro portal objeto de estudio:
PHP
PHP (PHP Hypertext Pre-processor) es un lenguaje de programación interpretado,
diseñado originalmente para la creación de páginas web dinámicas. Fue creado en
1994 por el programador danes-canadiense Rasmus Lerdorf (Personal Home Page
Tools por aquel entonces) para mostrar su curriculum vitae y conocer el tráfico que su
web recibía.
69
PHP es un lenguaje poderoso y esta ampliamente extendido, se utiliza en mas de 20
millones de sitios web además de en un millón de servidores. Uno de los motivos es un
gran perecido con otros populares lenguajes de programación estructurada, lo que
facilita su dominio en el menor tiempo. Otra de las razones es que es libre (licencia
GNU) y por tanto, fácilmente accesible a todos. Y por añadir alguna razón más,
indicaremos que PHP permite ser ejecutado en la mayoría de los sistemas operativos e
interactuar con los servidores web y motores de base de datos más populares.
El código fuente escrito en PHP es invisible al navegador y al cliente. El servidor es el
encargado de ejecutar el código y enviar su resultado HTML al navegador (véase
Figura 37). Esto hace que la programación en PHP sea segura y confiable.
Fig. 37. - Esquema funcionamiento PHP
Nuestro caso de estudio esta fundamentado principalmente en PHP, integrado entre el
código HTML. El esquema de funcionamiento para un potencial usuario que visualizara
alguna de sus paginas web es muy similar al descrito en la Figura 37, y ayuda a
entender 2 conceptos con los que abríamos la introducción de este apartado: PHP
como “lenguaje interpretado” y orientado al desarrollo de “paginas web dinámicas”. A
continuación describiremos brevemente un posible escenario de nuestro portal web
que se ajusta a la figura anterior.
Un usuario pretende visualizar alguna de las paginas de nuestro, posiblemente
enviando alguna información adicional a través de un formulario. El navegador web
realizara esta solicitud. La petición será recibida por el servidor web donde estará
alojada la pagina web, analizara la misma y allí donde encuentre instrucciones PHP, las
interpretara y las “cambiara” por un resultado ya escrito en HTML. Si fuera necesario,
podría consultar a la Base de Datos para incorporar alguna información sustraída de la
misma. Finalmente devolverá el resultado final al cliente (navegador web) que inicio la
solicitud o petición.
70
Como es posible comprobar en la descripción del escenario anterior, la página web
será interpretada por el servidor previo a ser devuelta al cliente y además, su
contenido se generara a partir de algún dato introducido por el usuario, probablemente
a través de un formulario, es decir, este contenido no estaba inicialmente en el archivo
HTML original, lo que responde al concepto de página web dinámica (el resultado
no siempre es el mismo como sucedería en una pagina web estática).
Javascript
JavaScript es un lenguaje de scripting, esto es, un archivo de ordenes, generalmente
almacenado en formato de texto plano, que representa a un programa habitualmente
de complejidad sencilla que puede efectuar diversas tareas como combinar
componentes o bien interactuar con el sistema operativo o con el usuario, motivo por
el que es frecuentemente recurrido para diseñar interfaces de usuario.
JavaScript es interpretado por la amplia totalidad de navegadores web modernos.
Puede incluirse en cualquier documento y es compatible con HTML en el navegador del
cliente. La W3C define que el método óptimo para utilizar JavaScript es incluirlo en un
archivo externo, por razones de accesibilidad y rendimiento.
Fue desarrollado por Brendan Eich de Netscape con el nombre de Mocha, el cual fue
renombrado posteriormente a LiveScript, para finalmente quedar como JavaScript
coincidiendo con el anuncio de que Netscape soportaría oficialmente Java en su, por
aquel tiempo, popular navegador web, estrategia que no estuvo exenta de algunas
polémicas. En nuestro caso utilizamos Javascript para generar un calendario dinámico
donde los clientes pueden seleccionar las fechas de entrada y salida de sus estancias,
véase la Figura 38.
Figura 38.- Calendario dinámico en Javascript
71
MySQL
MySQL es un sistema de gestion de base de datos, relacional, multihilo y multiusuario.
Relacional porque se sustenta en un modelo de datos (modelo relacional) basado en la
logica de precicados y en la teoria de conjuntos. Multihilo porque permite el acceso
concurrente a la informacion, de forma ordenada y segura. Finalmente es multiusuario
porque permite proveer servicio a multiples usuarios simultaneamente.
MySQL se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, lo
que implica comprar una version comercial licenciada si el usuario no se ajusta al GPL
o requiere introducir codigo MySQL en aplicaciones comerciales. 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.
El uso de MySQL esta muy extendido en aplicaciones web, en plataformas
(Linux/Windows-Apache-MySQL-PHP/Perl/Python). Su popularidad como aplicación
web esta muy ligada a PHP, que a menudo aparece en combinacion con MySQL. Su
origen se remonta al ano 1995 cuando la empresa MySQL AB busca adaptar el
lenguaje SQL (que ya existia desde 1981) de forma que continue cumpliendo su
estandar pero sin sacrificar velocidad, fiabilidad o usabilidad.
Figura 39.- Tabla de la utilidad phpMyAdmin para la gestión de base de datos
Para el caso que nos ocupa, se opto por MySQL por su extremada sencillez de manejo,
gracias en parte a la interface PHPMyAdmin. Esta inferface organiza la informacion en
base a tablas y permite manipular a informacion, tanto de contenido como de
estructura, de forma rapida y confiable.
72
3.4.2.- Implementación de la interfaz
Presentamos a continuación los elementos CSS que han sido necesarios para la
implementación de la página web junto con sus configuraciones. La página consta de
cuatro elementos básicos que aparecen en todos los archivos .php y .html, el top, sirve
para separar la cabecera del menú, el menú, el content, donde aparecera el contenido
de cada sección, el bottom, un pequeño marco que realiza la función de recuadro y el
footer, más abajo del bottom.
Figura 40.- Conjunto de elementos CSS
En la Figura 40, vemos los elementos CSS utilizados por separado sin ninguna
configuración. A continuación vamos a detallar cada elemento con su configuración.
Cabecera
Figura 41.- Cabecera
La cabecera consiste en una imagen estática justamente acoplada al ancho de los
demás elementos, enmarcada el el <div> principal #wrap
Top
Figura 42.- Top
73
El top es utilizado como marco separador entre la cabecera y el menú, a continuación
detallamos su configuración:
#top {
background: #555 url(imagenes/top.jpg) no-repeat;
padding: 5px 0;
}
Menu
Figura 43,- Menu
El menu es utilizado para definir el nombre de las secciones, a continuación detallamos
su configuración:
#menu {
height: 30px;
line-height: 30px;
background: #2B9B0B url(imagenes/menu.jpg) no-repeat;
}
#menu ul {
padding-left: 10px;
list-style-type: none;
}
#menu ul li {
display: block;
float: left;
}
#menu ul li a {
color: #eee;
padding: 0 13px;
text-decoration: none;
font-weight: 600;
}
#menu ul li a:hover {
color: #fff;
text-decoration: underline;
}
74
Content
Figura 44.- Content
El content es utilizado para almacenar toda la información de cada sección de la página
web, a continuación detallamos su configuración:
#content {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;
background-color: #525252;
background-image: url(imagenes/content.jpg);
background-repeat: repeat-y;
}
Bottom
Figura 45.- Bottom
El bottom es utilizado como marco final entre el content y el footer, a continuación
detallamos su configuración:
#bottom {
background: #555 url(imagenes/bottom.jpg) no-repeat;
padding: 6px 0;
}
Footer
Figura 46.- Footer
El footer es utilizado como pie de página, donde encontramos la información de
contacto, ubicación de applet de facebook, a continuación detallamos su configuración:
#footer {
text-align: center;
75
color: #eee;
font-size: 11px;
padding: 0px 20px 5px 0px;
}
Nos encontramos en la hoja de estilos CSS (style.css) el elemento body, que define las
características generales de la página web, el tipo de letra predominante ha sido el
verdana y el color de fondo el #FF6600, naranja característico que cubre el fondo de la
pantalla del navegador web. A continuación detallamos su configuración del body:
body {
background: #FF6600;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 15px;
line-height: 18px;
color: #333333;;
}
3.4.3.- Implementación de la funcionalidad
En este apartado, se expondrán algunas secciones de código que implementan las
funciones o procesos que forman parte del nivel de Aplicación. Por cuestiones de
privacidad y por evitar adentrarnos en exceso en el tema del software (no es objetivo
del presente PFC) tan solo comentaremos una única clase, mostrando para ello el
código necesario en HTML y PHP.
Formulario de contacto
Este método es recursivo sobre si mismo, sino se ha invocado al método
HTTP_POST_VARS, el flujo de ejecución espera a su invocación:
<?php
if (!$HTTP_POST_VARS){
?>
A continuación observamos el código HTML necesario para crear una tabla, donde cada
casilla contendrá un campo a rellenar y este más adelante será recogido por el método
POST:
<form action="contacto.php" method="post" enctype="multipart/form-data"
id="form1">
76
<table width="586" height="199" border="0" bgcolor="#FFFFFF">
<tr>
<td width="218"><span class="Estilo14">
<label>Persona de contacto: </label>
</span></td>
<td width="358"><input name="nombre" type="text" size="30"
maxlength="25" /></td>
</tr>
<tr>
<td><span class="Estilo14">
<label>Teléfono:</label>
</span></td>
<td><input name="telefono" type="text" tabindex="30"
value="+34" size="30" maxlength="16"/></td>
</tr>
<tr>
<td><span class="Estilo14">E-m@il:
<label></label>
</span></td>
<td><input name="mail" type="text" tabindex="30" size="30"
maxlength="35" /></td>
</tr>
<tr>
<td><span class="Estilo14">Fecha de entrada:</span></td>
<td><input name="fecha_ent" type="text" id="inputField" size="12"
maxlength="12" /></td>
</tr>
<tr>
<td><span class="Estilo14">Fecha de salida:</span></td>
<td><input name="fecha_sal" type="text" id="inputField2"
size="12" maxlength="12" /></td>
</tr>
<tr>
<td><span class="Estilo14">Número de ocupantes: </span></td>
<td><input name="ocupantes" type="text" size="3" maxlength="1"
/>
<span class="Estilo14">(máximo 6) </span></td>
</tr>
<tr>
<td><span class="Estilo14">Comentarios:</span></td>
<td><span class="Estilo11">
<textarea name="comentarios" cols="50"></textarea>
</span></td>
</tr>
77
<tr>
<td><input name="submit" type="submit" value="Enviar" /></td>
<td><input name="Submit2" type="reset" value="Borrar" /></td>
</tr>
</table>
</form>
<p class="Estilo12">
Una vez rellenado el formulario pasamos a crear el mensaje cogiendo cada campo del
formulario con el método HTTP_POST_VARS, serán añadidos a la variable $cuerpo, si
se han completado todos los campos enviamos un mail a [email protected]
con el asunto “Reserva CASA RURAL SANSOFI” y el cuerpo el contenido de la variable
$cuerpo.
<?php
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Telefono: " . $HTTP_POST_VARS["telefono"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["mail"] . "\n";
$cuerpo .= "Fechas de entrada: " . $HTTP_POST_VARS["fecha_ent"] .
"\n";
$cuerpo .= "Fechas de salida: " . $HTTP_POST_VARS["fecha_sal"] .
"\n";
$cuerpo .= "Ocupantes: " . $HTTP_POST_VARS["ocupantes"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["comentarios"] . "\n";
$flag=true;
//mando el correo...
if( flag ) mail("[email protected]","Reserva CASA RURAL
SANSOFI",$cuerpo);
//doy las gracias por el envío
print "Gracias por rellenar el formulario. Se ha enviado correctamente.\n";
print '<p> </p>';
print "En breve nos pondremos en contacto con usted\n";
print '<p> </p>';
print '<a href=contacto.php>Regresar</a>';
print '<p> </p>';
}
?>
78
3.4.4.- Implementación de la gestión de datos
En este apartado, se expondrán algunas secciones de código que implementan las
funciones o procesos que forman parte del nivel de Persistencia. Por cuestiones de
privacidad y por evitar adentrarnos en exceso en el tema del software (no es objetivo
del presente PFC) tan solo comentaremos una única clase, mostrando para ello el
código necesario en PHP y MySQL.
Operaciones de consulta
En el módulo de funciones.php tenemos las funciones encargadas de realizar la
conexión a la base de datos, seleccionando en concreto la base de datos con la que
vamos a trabajar, estas funciones han sido estraidas en un nódulo a parte, puesto que
serán necesarias cada vez que queramos realizar una nueva transacción con la base de
datos. En la función mysql_connect definimos como primer argumento el sitio en la red
donde tenemos instalado nuestro servidor MySQL, el segundo campo es el nombre de
usuario y el tercero la contraseña, en este caso no la ofrecemos por obvios motivos de
seguridad.
Módulo funciones.php
<?php
mysql_connect("db157.1and1.es","dbo279164252","contraseña_secreta") or die
("No se ha podido conectar a la base de datos");
mysql_select_db("db279164252") or die("Error al tratar de selecccionar
esta base de datos");
?>
En el módulo operaciones tenemos todo el código necesario para realizar las
operaciones de consulta, insertado, eliminación y modificación de las reservas en la
base de datos.
Módulo operaciones.php
<?php
include 'funciones.php';
if ($_SESSION["autentificado"] != "SI") {
print "<script>window.location='/lugar_del_propietario.php';</script>";
exit();
}
?>
79
Aquí irá el código HTML encargado de implementer la tabla donde se mostrará la
opción a elegir, nosotros en este punto nos encargaremos de tratar la consulta de
reservas.
<?php
$opcion = $HTTP_POST_VARS['opcion'];
if($opcion=="consultar"){
$consulta = "SELECT * FROM Reservas";
$resultado = mysql_query($consulta);
print "<br><br>";
print "<table>";
Primero seleccionamos todas las tuplas de la tabla reservas y guardamos el resultado
de mysql_query en la variable $resultado. A continuación recorremos el resultado con
mysql_fetch_row, en cada iteración del bucle estamos nos desplazamos una tupla y
por cada tupla nos desplazamos un elemento, mediante $array[indice], a su vez
estamos creando la tabla que aparecerá con los campos correspondientes a cada
campo de la tabla Reservas. Asi estamos observando cada todas las reservas
confirmadas.
"<tr><th>Nombre</th><th>Origen</th><th>Estancia</th><th>Observaciones</th
><th>e-m@il</th><th>Precio</th></tr>";
while( $array=mysql_fetch_row($resultado) ){
print "<tr><td>".htmlentities($array[1])."</td>";
print "<td>".htmlentities($array[2])."</td>";
print "<td>".$array[3]."</td>";
print "<td>".htmlentities($array[4])."</td>";
print "<td>".htmlentities($array[6])."</td>";
print "<td>".$array[5]."€</td></tr>";
}//del while
print "</table>";
}else if( $opcion=="insertar" ){ // Estas opciones de inserter, eliminar
}else if( $opcion=="eliminar" ){ // y modificar no serán objeto de estudio
}else if( $opcion=="modificar" ){ // en el presente PFC
}
?>
80
3.4.5.- Pruebas
Durante el desarrollo del software y una vez hemos finalizado la implementación del
mismo se han ido desarrollando una serie de pruebas que nos ayuden a medir y
mejorar la calidad del mismo. En este apartado de la Memoria vamos a mencionar los
diferentes tipos de pruebas que hemos realizado, con qué fin y cuándo las hemos
llevado a cabo.
Pruebas Unitarias: este tipo de pruebas las hemos utilizado para comprobar el correcto
funcionamiento de un módulo de código que se ha desarrollado, permitiéndonos de
esta manera asegurar que cada uno de ellos funcionará correctamente por separado.
Para la realización de estas pruebas nos hemos basado en la escritura de una serie de
casos de prueba en los cuales se definen una serie de datos de entrada y de datos de
salida esperados; una vez ejecutado el caso de prueba hemos cotejado los datos
obtenidos con los datos esperado de tal manera que si existiese algún tipo de error o
desviación en los mismos (o en los resultados esperados) actuar para corregirlo. Con el
fin de no alargar más de lo necesario este documento de la Memoria no hemos incluido
todos los casos de prueba que se han realizado.
Pruebas de Integración: una vez se han ido realizando las diferentes pruebas
funcionales relacionadas con los distintos módulos de la aplicación, y se comprueba
que estos funcionan correctamente, hemos pasado a realizar estas pruebas en las
cuales se han visto cómo interaccionan cada uno de los módulos entre sí (por ejemplo,
hemos tenido que ver cómo interaccionan los diferentes componentes de las capas de
la arquitectura para realizar una operación concreta). Una vez sabemos que todos los
módulos funcionan correctamente podremos pasar a realizar las pruebas funcionales
sobre los mismos.
Pruebas Funcionales: al realizar estas pruebas lo que perseguimos es ver, con la
ejecución de una transacción, que el sistema desarrollado ofrece lo que realmente se
le está demando y, en el caso de que no fuese así, corregirlo para que lo ofrezca con el
fin de ofrecer a los usuarios una aplicación de calidad.
Al igual que ocurría con las pruebas unitarias estas pruebas funcionales se han
realizado en el momento en que el que se daba por finalizadas las pruebas unitarias
relacionadas con una transacción y justo antes de poder dar por finalizado el desarrollo
de la misma.
Pruebas de Validación: estas son los últimos tipos de pruebas que hemos llevado a
cabo sobre la aplicación. Simplemente consisten en comprobar que el sistema que se
ha desarrollado cumple con todas las especificaciones que se han definido sobre el
mismo y además que realiza lo que se esperaba de él.
81
CAPITULO IV
Promoción de una página Web
Una vez que hemos lanzado una web no es suficiente, hay que promocionarla dándola
a conocer a la audiencia de Internet, porque un site no puede venderse por sí sólo
(salvo en casos de sites muy solicitados por la gente); el promocionar una web tiene
como objetivo conseguir tráfico, pues serán los visitantes quienes generen beneficios
para nosotros.
Posicionamiento Web SEO
Hace unos años, con el nacimiento de Google, los webmasters se dieron realmente
cuenta cómo de importante era tener un site "bien posicionado", estos es, que tras
hacer búsquedas con ciertos términos (keywords) en Google apareciese, o bien el site
en los primeros resultados, o bien muchos links a su site, lo cual aseguraría visitas.
SEO significa (Search Engine Optimization). Actualmente existen un nuevo tipo de
usuarios que se ganan la vida como SEO's, dicho sea de paso con sueldos bastante
elevados. Su labor consiste en mantener un site perfectamente promocionado y
posicionado, tal como dice la definición optimizando los motores de búsqueda (no sólo
Google).
La tarea de optimizar la estructura de una web y el contenido de la misma, así como la
utilización de diversas técnicas de linkbuilding, linkbaiting o contenidos virales con el
objetivo de aparecer en las primeras posiciones de los resultados de los buscadores
(cuando un usuario busca por una determinada palabra clave o keyword), es conocida
como SEO.
La aplicación de técnicas SEO suele ser más intensa en sitios web con mucha
competencia y lo que se pretende con su aplicación es el posicionarse por encima de
los competidores por determinadas palabras clave.
Tradicionalmente, los sitios web, cuando los motores de búsqueda solamente
mostraban resultados de los algoritmos de búsquedas orgánicas, eran más fáciles de
optimizar. Las técnicas para posicionarse en los motores de búsqueda eran las ya
conocidas y enumeradas anteriormente. Sin embargo, últimamente están apareciendo
en los buscadores diversas nuevas tecnologías que han insertado muchas nuevas
variables que es necesario tomar en cuenta para la optimización de un sitio web.
Podemos decir a ciencia cierta, que hacer la labor SEO es la más importante a la hora
de vender servicios de Internet en nuestro website.
82
4.1.- Técnicas de posicionamiento Web SEO
Cuando hablamos de técnicas de posicionamiento de páginas Web podemos concretar
una serie de pasos a seguir que de alguna manera siempre son comunes. Obviamente
el objetivo es conseguir la mejor posición para una serie de términos. Y es éste el
punto de partida para el posicionamiento. Pero no hay que olvidar que quien contrata
este servicio no busca el solo el hecho de estar ahí sino que para esas búsquedas se
genere un negocio.
En el posicionamiento tenemos la limitación de los idiomas por lo que en muchos de
los pasos que vamos a ir explicando nos centraremos en buscadores .es pero el
funcionamiento es igual para cualquier país en el que nos encontremos.
Realmente hablamos de técnicas de optimización como si fuese algo complementario a
añadir a las páginas pero la gran mayoría de estos cambios no son más que la forma
más correcta de tener una página para que muestre lo que realmente queremos, decir
que van a encontrar las personas que visitan esa Web, y por tanto esto mismo es lo
que van buscando los motores de búsqueda pues todos los algoritmos por muy
automáticos que sean están pensados para dar el resultado más próximo a lo que una
persona este buscando.
Hay que aclarar que muchas de las técnicas realmente son suposiciones basadas en la
experiencia de meses/años trabajando sobre las búsquedas y viendo el
comportamiento que estas tienen sobre los resultados con lo que todo lo que se
explica no es la verdad absoluta.
Estudio de los términos
Hay que destacar que Google.es se lleva aproximadamente un 98% de las búsquedas
realizadas en España, por lo que tendremos ejemplos y explicaciones basándonos
principalmente en búsquedas sobre el motor de Google.
El estudio de términos es el primer paso a la hora del posicionamiento y por tanto los
pilares de un buen resultado en este trabajo. Para este desempeño y muchos otros
Google dispone de herramientas que nos ayudan en nuestro desempeño. En concreto
para hacer un estudio de términos nos ayudaremos de una herramienta llamada
Google Keywords Tool (https://adwords.google.com/select/KeywordToolExternal).
Esta es una herramienta creada para la parte de pago por click y que Google llama
Google Adwords. Los resultados que nos proporcionan son sobre las búsquedas que
genera esta sección pero es bastante obvio que lo que funciona en la parte de pago
funcionará de igual forma en las búsquedas normales salvo algunas excepciones con
las que habrá que tener cuidado por la fecha en la que se realice. No vamos a tener ni
muchísimo menos resultados parecidos tanto en cantidad de búsquedas como en
83
competencia si por ejemplo estamos estudiando el término cestas de Navidad en
Diciembre como en Agosto.
Esta herramienta nos proporciona una serie de términos con alternativas, sinónimos,
etc, con el volumen de búsquedas y la competencia que tiene ese término. Por ejemplo
supongamos que tenemos una Web de un negocio que es una clínica de odontología.
Para comenzar pondremos una serie de términos que nos puedan parecer interesantes
como: rural casa, casas rurales, casa rurales, casas rural, hotel en casa, alojamientos
rurales, turismo rural, hotel rural, casas rurales, casa turismo, casas turismo, turismo
casas…
Un detalle es el hecho de incluir palabras de enlace como para, en, de… Se dice que
los algoritmos de los principales buscadores eliminan estas palabras antes de ponerse
en marcha con el algoritmo de búsqueda en si.
Nuestro trabajo en ambos casos es jugar con las dos posibilidades en dependencia de
la parte del código que se este optimizando y si este texto va a ser más o menos
visible ya que tampoco queremos dar una mala imagen como puede ser no poniendo
acentos.
En esta primera tormenta de términos debemos jugar con palabras que indiquen el
sector, la ubicación, algún detalle específico que nos caracteriza, jugar con sinónimos y
con los singulares y plurales.
Figura 47.- Colección de términos
84
Para poder manipular mejor los resultados podemos exportarlos a un fichero .csv,
donde podemos ordenar los resultados por número de visitas globales mensuales y
comprobar su competencia. De esta forma buscaremos términos con una relación
búsquedas competencia que nos parezca aceptable. Debemos recordar que estos datos
son solo orientativos para la elección de unos buenos términos ya que varían mes a
mes y son referentes a la parte de pago por click.
Para hilar más fino lo interesante es que partiendo de estos resultados hagamos
búsquedas con términos que nos parezcan interesantes tras este primer estudio,
observemos que términos pueden estar utilizando páginas que aparecen en las
primeras posiciones de esas búsquedas y realizando nuevamente otro estudio con la
herramienta de Google.
Con estas ideas, para el ejemplo dado podíamos elegir como término: alojamiento
valencia, turismo rural, casa rural, casas rurales, turismo casas…
Hemos de saber que aunque nuestra idea sea posicionarnos con exactamente estos
términos de alguna forma también estamos yendo por términos más genéricos como
casa rurales, alojamiento rural.
4.1.1.- La etiqueta <TITLE>
La etiqueta title es sin duda la etiqueta más valorada por Google y los principales
buscadores, para entender la importancia de esta etiqueta solo hay que realizar una
búsqueda cualquiera en Google, comprobaremos que la mayoría de las páginas bien
posicionadas por el término que busquen contiene esta palabra en los textos resaltados
en azul de los resultados de Google. Estos textos azules son los title de las páginas.
Para entender y optimizar esta etiqueta debemos tener en cuenta varios factores:
- La etiqueta title tiene un valor, este valor se reparte entre todas las palabras
que contenga, por lo que cuantas más palabras contenga el title menos valor tendrá
cada una de las palabras que lo componen.
- La importancia de las palabras decrece de izquierda a derecha con lo que
daremos más importancia a los términos colocados en primera posición.
Veamos un ejemplo:
Para la búsqueda casa rural sansofi la página que aparece en primer lugar contiene
este title.
85
Figura 48.- Etiqueta title
Como podemos observar el término esta contenido en la etiqueta, no es un title largo y
además coge mayor fuerza pues sus otras partes también hablan de clínica dental.
Esta etiqueta no tiene que ser única para todas las páginas que componen la Web sino
que deberán de ir cambiando dependiendo de la sección en la que nos encontremos.
Los principales motores dan mayor importancia a la home (pagina principal) y van
disminuyendo ésta en función de si son paginas secundarias que cuelgan de la home,
terciarias… Esto podemos optimizarlo para ganar mayor puntuación poniendo en
ocasiones un menú inferior en la home para que los buscadores vean más páginas de
segundo nivel. La técnica de meter un menú inferior también nos sirve para indexar las
páginas, que por problemas con menús complejos, no han sido bien indexadas y
seguidas.
En definitiva este title de la home ha de dar a entender de forma global que se trata
en toda la Web y algún servicio o dato de interés que pueda caracterizarnos de forma
importante.
4.1.2.- Las etiquetas <META>, METATAG.
Las etiquetas meta no son valoradas de igual forma por todos los buscadores. Como ya
vimos en la introducción, antiguamente eran una de las pocas cosas que almacenaban
los motores de búsqueda y los resultados dependían en gran medida del contenido de
éstas. En la actualidad el hecho de poder indexar páginas completas hace que los
buscadores busquen información en otras partes. No obstante es la suma de estas
pequeñas cosas lo que diferencia una Web completamente optimizada de otra no
tanto.
La etiqueta meta keyword nos permite introducir términos de búsqueda y por tanto
indica a los buscadores por que términos la gente va a encontrar información útil en
nuestra Web.
86
Figura 49.- Metaetiqueta Keywords
Esto no siempre es así pues se meten muchos términos y no siempre se habla de ellos
en la página. Este es el motivo por el que algunos buscadores bajaron la importancia
que se le daban a esta etiqueta.
Funciona de la misma manera que el title en lo que a peso se refiere con lo que no hay
que recargarla en exceso de términos, lo idóneo es que en cada pagina se personalicen
los términos de los que se está hablando en ella sí en este caso se juegue un poco con
los términos con acento y sin él al igual que palabras en singular y plural.
La etiqueta meta descrption nos permite introducir una breve descripción del sitio.
Figura 50.- Metaetiqueta description
Al igual que explicábamos en el paso anterior esta meta no es tenida tan en cuenta
como antiguamente pero en este caso si nos puede ayudar en mayor medida si la
trabajamos bien. El primer punto es que muchos buscadores usan el contenido de esta
descripción para mostrarlo como descripción de la búsqueda mostrada. El otro factor
es el humano si esa descripción llama la atención del consumidor es más probable que
clicke para entra en la Web.
De esta forma el texto contendrá los términos clave concretos del contenido de cada
página y además usar mayúsculas para intensificarlas junto con palabras como
87
OFERTA, AL MEJOR PRECIO, PRECIO DE LANZAMIENTO o PRIMERA VISITA GRATIS
de ser este el caso, hay que tener en cuenta que de nada vale atraer la atención del
consumidor si tras entrar en nuestra Web no encuentra lo que estaba esperando pues
su visita no solo será corta sino que además se llevara mala imagen de nuestro
servicio.
La etiqueta meta robots, dentro de las posibles etiquetas con Metainformaciones
acerca de un documento web, sirve para llevar un control exhaustivo de lo que puede
o no puede hacer un robot de indexación cuando visita nuestro sitio web. Los
comportamientos más típicos que podemos definir son permitir o no indexar una
página y seguir o no sus enlaces. En el atributo de la etiqueta meta debemos colocar
las directrices que deseemos para buscadores, tantas como deseemos, separadas por
comas. Las distintas directrices a aplicar son las siguientes:
INDEX / NOINDEX: Sirve para indicar si se desea o no permitir la indexación de la
página por los motores de búsqueda.
FOLLOW / NOFOLLOW: Con esta directriz se indica si se debe o no permitir a los
motores de búsqueda recorrer o seguir recorriendo la web a través de los enlaces que
encuentre en el cuerpo del documento.
ARCHIVE / NOARCHIVE: Esto permite decir si deseamos o no que el motor de
búsqueda archive el contenido del sitio web en su caché interna. Como habremos
podido ver, buscadores como Google tienen una caché y podemos ver las páginas web
tal como las tiene cacheadas el buscador. Para ello, en los resultados de las búsquedas
aparece un enlace que pone caché. Si decimos que no archive la página, no debería
mostrar ese enlace de caché. Esto en realidad, según Google, no evita que se guarde
en caché la página, sino que no permite verla a los usuarios del buscador y por lo
tanto no muestra el enlace.
SNIPPET / NOSNIPPET: Esta directriz en principio no resulta muy útil, al menos a
primera vista. Sirve para que el motor de búsqueda no muestre ninguna descripción de
un sitio, sólo su título. Si utilizas NOSNIPPET automáticamente defines un NOARCHIVE,
por lo que la página tampoco se mostrará en caché.
ODP / NOODP: Sirve para decirle al buscador que debe, o no, mostrar el título y
descripción de la página iguales a los que se encuentra en el Open Directory Project.
En algunos casos, algunos buscadores muestran como título y descripción de una web
los que se han publicado en el ODP (ENLACE A http://www.dmoz.org/).
YDIR / NOYDIR: Es básicamente lo mismo que ODP / NOODP, con la diferencia que
es para que no se pueda, o si, mostrar la descripción y título que aparece en el
directorio de Yahoo.
88
Cuando no existe esta etiqueta los buscadores interpretan las condiciones más
favorables para ellos, es decir, que pueden hacer todo lo que suelen hacer con otras
páginas a la nuestra, como indexarla, seguir sus enlaces, archivarla, etc. Gracias a esta
etiqueta más que mejorar, lo que nos ayuda es a no ser penalizados ya que si nuestra
Web tiene contenidos bélicos, sexuales o puede dar alguna interpretación de
problemas de salud como la anorexia, interpretaciones xenófobas… es mejor evitar que
esa página sea indexada por el robot o que enlaces salientes a ciertos contenidos no
sean seguidos para evitar ser penalizados.
El último metatag es el del título, influye en alguna medida en la valoración de cada
página: <META NAME="Title" CONTENT=" ">. En el título se deben poner
palabras que describan los contenidos de la página, e incluso, palabras clave que
describan los productos y servicios que se ofrecen y por los que queremos ser
encontrados de la misma forma que explicaba para la etiqueta <title>.
4.1.3.- Los contenidos de las etiquetas <H1>,<H2>…
Tanto Google como los principales buscadores dan gran importancia sobretodo a una
página bien estructurada limpia y con sentido. Prueba de ello es la propia página de
Google, limpia, facil de manejar, nada recargada y da la idea global de lo que contiene
y para que esta construida.
Las etiquetas H1, H2… le dan al robot una idea de estructuración. Estas etiquetas
toman más valor cuanto más arriba y a la izquierda se encuentren de la misma manera
que las personas que realizan búsquedas, estos tienden a llevar sus miradas y clicks a
esa parte como muestra este grafica:
Figura 51.- Mirada humana en una página web
89
Pues la estructura que debería tener nuestras páginas ha de ser algo similar a esto:
- El título en un <h1> incluyendo ahí las palabras clave.
- El subtítulo/s en un <h2>/<h3> incluyendo más conceptos clave sin entrar en
la repetición con el h1.
- El texto en un <p> incluyendo en este las palabras clave preferiblemente
dentro de <a>, <strong> o <em> ya que de alguna manera enfatiza la importancia
por ser un ancla o enlace a lago, o estar resaltado para el usuario.
Una vez hecho todo esto hay que asegurarse de que el texto está bien escrito, tiene
sentido y se lee perfectamente. Todo esto es respecto al texto ya que Google y
cualquier otro buscador, para tomar las decisiones de la importancia del contenido de
nuestra Web, solo puede basarse en el texto.
Tanto en el contenido como el cualquier otro ámbito de la optimización hay que saber
que no podemos abusar de en la repetición de los términos buscando mayor valor ya
que existen partes del algoritmo que categoriza ese contenido de SPAM, de forma que
no solo pierde importancia sino que puede pasa a ser penalizado. De esta forma es
bueno que en cada párrafo (<p>) no se repita más de una vez el término pudiendo
usar sinónimos que también serán valorados ya que los algoritmos usan semántica
como ya vimos anteriormente.
4.1.4.- Contenido en imágenes y tamaño
Una forma discreta de dar una mayor presencia a las palabras clave es empleando
etiquetas alt y title en las imágenes. De esta forma podremos poner un texto acorde a
la imagen en la etiqueta title que se mostrará al pasar el ratón por encima o dejarla
vacía si no queremos que muestre nada, y una palabra clave interesante para los
buscadores en la etiqueta alt, este texto nunca será visible para el usuario, solo se
mostraría si por algún motivo la imagen no se pudiera cargar. Por ejemplo:
<img border="0" src="imagenes/piscina.jpg" alt="" width="195" height="146" />
Cambiar por:
<img border="0" src="imagenes/piscina.jpg " alt="casa rural piscina" title="piscina"
width="195" height="146" />
En este ejemplo vemos también que se ajusta el tamaño de la imagen a un tamaño
determinado posiblemente porque la imagen fuese de mucho mayor tamaño. Con
respecto a esto es recomendable transformar la imagen a un tamaño y formato que se
90
ajuste directamente al que queramos y así reducimos el tamaño de estas y tanto para
el usuario como para el robot la carga de dicha imagen es más rápida. Por ejemplo una
pequeña imagen para un enlace digamos a la página del Real Madrid no debe de tener
una imagen de 500 x 500 px en formato .bmp, para que luego lo transformemos en
mediante las etiquetas weight y height de <img> en una imagen de 25 x 25 px. En
este caso es mejor usar un formato .jpg o .png de tamaño 25 x 25 px de mucho menor
tamaño en disco.
4.1.5.- Dominios y URLs amigables
Para entender qué es una URL amigable o “friendly URL”, lo más sencillo es entender
primero qué es una URL sucia o compleja o una “dirty URL”. Hoy en día existen una
gran cantidad de sitios Web con contenido dinámico y que usan bases de datos, con lo
cual es necesario de alguna manera enviar información de una página a otra para
poder construir correctamente las páginas. Esta información es enviada al final de la
URL como parámetros (después de un signo de interrogación – método GET).
Este método es muy útil para la programación ya que una sola página dinámica puede
mostrar diferente información según los parámetros enviados por la URL. Por ejemplo,
cuando en Google realizamos una consulta para buscar “casa rural Valencia” la URL
que pone Google es la siguiente:
http://www.google.es/#hl=es&sugexp=frgbld&gs_nf=1&cp=13&gs_id=2n&xhr=t&q=c
asa+rural+Valencia&pf=p&safe=off&output=search&sclient=psy-
ab&oq=casa+rural+Va&aq=0&aqi=g4&aql=&gs_sm=&gs_upl=&gs_l=&pbx=1&bav=o
n.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=a2e4743a97ab33d2&biw=1280&bih=661
A veces no hace falta ni siquiera que haya contenido dinámico para que las URLs no
sean amigables, sino que el programador, o por desconocimiento del concepto de URL
amigable o por dejadez en la programación utiliza URLs que no dicen absolutamente
nada: http://www.mi-sitio.es/bagn/ptk_7.html Entonces llegamos a la conclusión de
que una URL sucia es una URL difícil de escribir, de recordar y de conservar.
Las URLs amigables son URLs descriptivas del contenido de la página, es decir, son
URL que dicen algo sobre el contenido que se está visualizando en el navegador entre
otras características.
Características de las URLs amigables
- Son fáciles de adivinar y son descriptivas del contenido.
http://www.misitio.com/contactar
91
- Muestran la estructura del sitio.
http://www.misitio.com/contactar/administrador
http://www.misitio.com/contactar/comercial
- Son fáciles de comunicar verbalmente en persona o por teléfono.
- Son suficientemente cortas para copiar en un correo electrónico o documento
sin que haya que realizar un cambio de línea (60 caracteres o menos).
- Son estéticas para poner en catálogos, folletos y otros documentos.
- Son fáciles de recordar.
- Son fáciles de escribir.
- Promueven la usabilidad evitando ser largas y complejas.
- Evitan los espacios en blanco en los nombres de archivos y carpetas. Por
ejemplo, un nombre de archivo como “especificaciones de producto.html”, provocaría
una URL como “especificaciones%20de%20producto.html”.
- Evitan los signos de puntuación en nombres de archivo y carpetas, como por
ejemplo el signo “&”, la arroba (@), el porcentaje (%) o el guión bajo (“_”):
especificaciones_de_producto.html. El guión bajo normalmente es difícil de comunicar
y de escribir y este tipo de nombres normalmente denotan estructuras de Web mal
diseñadas. En caso de ser requeridos nombres de este tipo recomendamos usar el
guión, por ejemplo especificaciones-producto.html, ya que Google lo entenderá como
un cambio de palabra.
- Todas las letras que las componen son minúsculas. Puedes pensar que la
mejor opción del caso anterior es la de poner EspecificacionesDeProducto.html, pero
esto es un gran error ya que muchos servidores son sensibles a las mayúsculas y a las
minúsculas y si un usuario pone especificacionesdeproducto.html cuando el nombre del
fichero es EspecificacionesDeProducto.html el servidor retornará un error.
- Evitan, siempre y cuando sea posible, introducir variables al final de la URL ya
que en algunas ocasiones URLs del tipo www.misitio.com/noticias.php?id=5 son
resultado de un uso de las páginas dinámicas inapropiado.
- Los dominios son accesibles incluso cuando existe algún error de escritura por
parte del usuario. Son muy comunes los errores a la hora de escribir, como por
ejemplo al ir deprisa en vez de escribir video.google.es, escribir vido.google.es.
Personalizar la página de error 404 ayudará al usuario a saber que ha llegado a la Web
solo que se ha equivocado al escribir la URL. Un buscador en la página de error 404 le
92
ayudará a encontrar la página que buscaba. Además, si los usuarios se equivocan
frecuentemente al escribir su dominio, puede ser conveniente comprar los dominios
que coinciden con los errores más comunes (E.j.gogle.com).
- Los dominios son accesibles en diferentes TLD (dominio de nivel superior). Es
muy común en España no acordarse si un dominio acaba en .com o en .es, así que es
muy recomendable pagar por el dominio en .com y por el dominio en .es,…
http://www.misitio.com
http://www.misitio.es
http://www.misitio.net
- Son persistentes en el tiempo, no deben desaparecer.
No obstante en algunas ocasiones viene bien usar URLs sucias, son portátiles ya que
generalmente contienen información necesaria para reconstruir una página dinámica.
En algunos casos también puede ser útil usar una URL sucia cuando las desventajas de
una URL sucia se convierten en una ventaja y es que existen casos en los que no es
conveniente que el usuario pueda memorizar o escribir una URL. Esto se produce
sobretodo en casos donde existe un control de acceso, si tienes una cuenta de gmail o
hotmail podrás ver que es muy difícil memorizar las URLs que van apareciendo
mientras consultas tu correo. Eso resulta ser una gran ventaja para la aplicación. Pero
gran desventaja para el posicionamiento pero realmente esto es lo que se busca en
estos casos.
Con las URLs amigables conseguimos visitas gracias a un contenido claro y una fácil e
intuitiva forma de navegar. Pero este tipo de URLs también es muy importante para el
posicionamiento en buscadores. Anteriormente muchos motores de búsqueda ni
siquiera indexaban páginas con variables incluidas al final de la URL con un
interrogante (GET). Actualmente ya son indexadas, pero hay que tener en cuenta que
los motores de búsqueda valoran mucho las palabras que hay en la URL. Aunque no se
sabe a ciencia cierta, algunas teorías apuntan a que Google da más importancia a las
palabras que hay en la URL que a las palabras que hay en el texto. Pero esto sí es
seguro, Google valora mucho las palabras que hay en la URL y por tanto hay que
procurar que las entienda.
Por tanto, si tu URL es amigable y por tanto descriptiva, está claro que es muy
probable que contenga palabras clave para las cuales quieras posicionar la página en
concreto. Además, si las palabras están separadas con un guión (-) o una barra (/)
google sabrá perfectamente qué palabras componen tus URLs.
Una cuestión muy importante que hemos mencionado en las características de una
URL amigable es que ésta debe ser permanente. ¿Por qué es importante este punto?
Muy sencillo. Tu página Web va creciendo en importancia a medida que tus páginas
son enlazadas por otras webs. Es más, pongamos que en tu Web hay un artículo muy
93
interesante y este ha sido enlazado desde muchas webs de terceros por la relevancia y
el interés de su contenido. De repente lees este artículo y te das cuenta de que la URL
de tu artículo es pobre y deseas cambiarla. Esto sería un gran error, ya que todos
losenlaces que has conseguido se perderán en una página que retorna un error 404
(“Page not found”).. Si por lo que fuere es totalmente imprescindible cambiar la URL
porque por ejemplo realizas un cambio de lenguaje de programación en el servidor
(pasas de tecnología asp a php, por ejemplo) puedes realizar una redirección 301
“Moved Permanently”, ya que cuando la araña de google visite tu web toda la
relevancia que había ganado tu página en *.asp se traspasará a tu página *.php.
Cuando se realiza una Web desde cero estos puntos son muy importantes y tener una
buena estructura con sentido ayuda y mucho en el posicionamiento.
Por último y por cercanía a todo lo comentado en este punto esta la compra de
dominios. Es bastante obvio que el nombre de nuestro dominio tiene que ser también
descriptivo y que eso ayuda al posicionamiento ya que si tenemos una clínica dental
estas dos palabras deberían estar en nuestro nombre de dominio. Otra técnica es la de
compra de los nombres de dominio diferentes y redireccionarlos. En este caso Google y
otros buscadores, en el mejor de los casos, si esta bien redireccionado, solo ven el
dominio al que este redireccionado con lo que no ganaríamos nada.
4.1.6.- La geolocalización. Webs con idiomas
En temas de posicionamiento nunca se está con la verdad absoluta, pero estudios
realizados nos indican cuales son algunas técnicas como las descritas hasta ahora que
son claramente mejor para usar. Una técnica que cada vez esta se va aclarando más
es la forma de posicionar Webs Multilenguaje.
Para esto primero explicaremos que es la geolocalización. Este término hace referencia
a la importancia que dan los buscadores al ámbito territorial de cada página y de la
persona que está realizando una búsqueda. Y sí, tanto Google como otros buscadores
dan mucha importancia a este hecho y prueba de ello es el propio Google. Se puede
comprobar que si escribimos www.google.com este nos redirigirá en la gran mayoría
de los casos a www.google.es .
Pero no solo esto es en lo que nos basamos. Estudios realizados a con diferentes
praxis de diferentes localizaciones dan resultados totalmente diferentes. En ellos
además Google también te redirecciona a Google.uk (Reino Unido), google.fr (Francia),
etc. Y no solo haciendo búsquedas en los Google de cada país sino también en
búsquedas de Google.com con cada proxis nos da resultados distintos. Hay que
recordar que para todos estos estudios se ah tenido en cuenta que los robtos usan
información de nuestro sistema para identificarnos como información en caché,
historial., etc, que fue borrado previamente.
94
Hay que tener en cuenta los factores a los que los buscadores dan más importancia: el
TLD, la ubicación del servidor, el idioma y dialecto del texto de la página, ubicación de
los enlaces entrantes,…
En definitiva, si tu mercado es España, lo ideal en cuanto a posicionamiento Web se
refiere es coger un dominio .es, ubicar la Web en un servidor en España, obtener
enlaces desde otros sitios Web en España, y utilizar el español de España y elegir las
palabras clave con cuidado teniendo en cuenta el dialecto es algo muy importante. Con
todo lo dicho al posicionar una Web multilenguaje hay que realizarlo de una manera
concreta si queremos tener más fuerza.
Está claro lo que hay que hacer si mi Web es en español pero qué hacer con los otros
idiomas. En muchas ocasiones vemos colocar el cambio de idioma en la sesión de
usuario y/o basado en cookies, de forma que al usuario entrar al sitio pueda escoger el
idioma y el sitio sea capaz de recordar esa configuración para mostrarle el idioma
correspondiente en la próxima visita. Esta opción podría funcionar bien para los
usuarios, pero es pésima para los robots de búsqueda y registro en directorios.
Básicamente se mostrarían el contenido de una misma página en varios idiomas en el
mismo URL y ¿cuál indexarían los robots? Además que debemos tener en cuenta que
los robots de búsqueda no soportan el manejo de sesiones, por lo que probablemente
nunca lleguen a todos los idiomas, y aun así, ¿en que idioma guardarían la pagina en
sus listados?
Además de esto, habría solo un punto de entrada para el sitio, y por defecto el idioma
inicial seria siempre uno solo, esto por un lado nos puede llevar a perder usuarios que
no alcancen a ver la opción de cambio de idioma, y en cuanto al registro en directorios
de los idiomas diferentes al por defecto puede que tampoco sea aceptable.
Parecido es la opción de poner los distintos idiomas en distintas URLs. Además la
página de inicio (la más valorada por los buscadores) solo seria una.
La solución que tiene más adeptos es la de contratar distintos dominios, con las
mismas características vistas anteriormente para cada país y enlazar unos con otros.
Veamos que porque.
La opción de dominios totalmente diferentes es mejor en este aspecto, aunque pudiera
llegar a ser técnicamente más difícil lograrlo sin duplicar los códigos. Además, tiene un
costo implicado (aunque pequeño), el de comprar los nombres de dominio, hosting (en
dependencia del que se disponga), y encontrar los que deseemos. Esta opción daría la
ventaja también que el compartir enlaces entre estos sitios otorga algo de PageRank y
posicionamiento, no ubicándolos bajo la mismo IP y por tanto bajo el mismo servidor
para cubrir todas las ganancias explicadas con anterioridad.
95
Una ultima opción es la de un subdominio por cada idioma parece más aplicable en
general y se mantienen casi todas las ventajas. Muy en especial que los robots de
búsqueda podrán indexar fácilmente cada subdominio como un sitio diferente, con
cada versión de las páginas en los distintos idiomas, también ventajoso que para cada
directorio donde se registre el sitio se le puede dar la dirección exacta del idioma que
le corresponda, también en el caso de los subdominios generalmente no implica costo
adicional.
4.1.7.- Técnicas fraudulentas. Penalizaciones
Una vez que se entiende el funcionamiento y la importancia que le dan los buscadores
a distintas partes de nuestra página empieza a funcionar las formas en como puedo
convertir mi sitio en un sitio valorado por Google. Pero estás técnicas no siempre
gustan a los buscadores ya que por unos motivos u otros los resultados o la
información que Google u otros buscadores pueden llegar a mostrar no siempre es la
que se espera y esto resta credibilidad a las búsquedas y por tanto al buscador.
Como ya hemos dicho las una Web bien construida con contenidos interesantes y bien
estructurada, “se posiciona bien sola”. Pero esto no suele ser siempre así, y en
ocasiones en lugar de orientar las técnicas a este fin, el de dar counidos interesante y
con sentido, se usan técnicas que se encuentran penalizadas por los buscadores, al
tratar de manipular sus resultados en forma agresiva.
Las principales técnicas de posicionamiento no permitidas son:
Spamming
El abuso de palabras clave, spam o 'keyword stuffing' consiste en situar palabras clave
en un montón de elementos de una página Web y a la repetición de texto clave para
de esta forma tratar de aumentar la densidad de palabra clave. Cada vez son más los
webmasters que conocen los trucos para un buen posicionamiento Web, y quieren
llevarlos hasta extremos. Si bien es preciso que la palabra clave a posicionar figure en
alguna parte del texto, el excesivo uso de la misma puede traer como consecuencia
una penalización.
Doorway Pages
Son páginas diseñadas con el específico propósito de generar tráfico de los
buscadores. Muchos webmasters diseñan una página optimizada para los buscadores,
repitiendo las palabras claves en el TITLE, en los H1, etc. De esta manera, crean una
página casi ininteligible para los visitantes (debido al gran número de palabras clave
por toda la página), pero altamente optimizada para determinadas búsquedas. Son
páginas con contenido rico en palabras clave, contenido generalmente duplicado,
mínima navegación o ninguna y suelen generarse automáticamente. Son páginas mal
96
armadas, y que al navegarlas, rápidamente el visitante toma conocimiento de que está
hecha para los buscadores.
Generarán tráfico natural que se trata de redireccionar hacia otras páginas del sitio, ya
sea mediante click, mediante un <meta> refresh.o, via JavaScript, generalmente. Los
robots no reconocen el JavaScritp, así que almacena simplemente la página diseñada
para ellos.
El caso de las páginas 'doorway' es un caso particular del 'Cloaking'. En el 'Cloaking' se
identifica al robot de Google y, mediante lenguajes 'Server Side', se genera unos
contenidos diferentes. En las páginas 'doorway' simplemente se redirecciona a los
navegadores web de los visitantes.
Cloaking en sitios web
Muchos webmasters programan sus páginas Web para devolver contenidos distintos
cuando pasa el bot y cuando un usuario normal visita el sitio Web. Un script del
servidor le entrega una versión del sitio Web distinta, que contiene información que no
se muestra en la página visible. De esta manera, por ejemplo, generan un mayor
número de palabras claves cuando son visitados por este robot. Si hiciesen lo mismo
cuando son visitados por el resto de usuarios, nos encontraríamos con una página Web
casi ilegible, llena de palabras claves sin sentido.
Esta técnica no es nueva, y es conocida como 'Cloaking' (a veces también se le
denomina 'encubrimiento'). Si visitamos la cache de un sitio Web que practica el
'Cloaking', nos encontraríamos con una página diferente de la que veríamos nosotros.
Texto oculto
Se entiende fácilmente el porque nos puede penalizar un buscador. No hay que
confundir texto oculto con ocultar texto, expliquemos esto. La manera de entender el
porque nos pueden penalizar es muy simple, texto oculto es todo aquel que no es
accesible para el usuario.
Una técnica que es muy usada es la de escribir términos clave del mismo color de
fondo de la página con lo que no podremos verlo pero si lo recogerá el robot.
Otra es la de ocultación de capas. Mediante un contenedor <div> se oculta la capa
mediante la propiedad visibility:”hidden” de forma que el usuario no pueda verlo. Por si
los bots detectan esta propiedad y les salta una alerta se inventó la idea de mandarlo
al infinito. Se pone texto rico en palabras clave en un contenedor y se le dan unas
coordenadas de posición muy lejanas. Con la propiedad overflow:”hidden” evitamos
que salgan los Scholl de los navegadores para no hacer feo.
Estas y otras como la de poner texto diminuto o poner capa sobre capa, son algunas
de las técnicas de ocultación de código.
97
Pero en ocasiones podemos introducir texto con sentido ricos en términos que nos
interesan perorando acceso a ellos mediante algún botón o enlace de manera que sea
visible por el usuario.
Páginas duplicadas
Muchos webmasters generan el mismo contenido en dos o más páginas web. Por
ejemplo, con un acceso a una base de datos, consiguen que el contenido de
'www.misitio.com/pagina1.php' sea el mismo que
„www.misitio.com/contenidos/pagina2.php'.
De esta manera, pueden desde estas dos páginas enlazar a otra tercera, que es la que
realmente quieren promocionar. Han creado dos páginas Web (se pueden crear incluso
más), pero solamente han hecho el trabajo de una.
Enlaces ocultos
Los enlaces ocultos son una variante del texto oculto. Esta técnica es realizada por
muchos webmasters que quieren promocionar otros sitios web y, al no ser capaces de
conseguir enlaces externos, utilizan sus propias páginas. Para crear estos enlaces
(algunas veces suelen ser decenas de ellos), los insertan del mismo color que el fondo
de las páginas, con el objetivo de que no sean vistos por los visitantes, pero sí por el
robot de Google.
Spam en weblogs y libros de firmas
Muchos webmasters, al ser incapaces de conseguir enlaces externos desde otros sitios
Web, recurren a una técnica que no necesita de la aprobación de los webmasters de
estos sitios Web: el spam.
Figura 52.- Incremento del spam en los libros de firmas
98
La mayoría de los weblogs incluyen la posibilidad de que los visitantes puedan dejar
sus opiniones acerca de las noticias publicadas en estos weblogs. Los libros de firmas
('guestbooks') son espacios de algunas páginas web donde la gente puede dejar sus
saludos y comentarios. Tanto en los weblogs como en los libros de visitas se suele dar
la opción de incluir el nombre y un enlace al sitio Web de la persona que opina o
saluda. De esta manera, el enlace queda:
<A href=http://www.sitio-web-del-visitante.com>Nombre del visitante</A>
Muchos 'spammers' insertan como su nombre las palabras clave, y como enlace el de
la página Web que quieren promocionar. De esta manera, consiguen un enlace
realmente óptimo, ya que muchos de estos weblogs y libros de firmas tienen un
PageRank realmente apetecible. El comentario es lo menos importante en estos casos.
Estos 'spammers' dejan mensajes tan simples como 'Felicidades por tu web' o 'Yo
opino como tú'. Hay ocasiones en que ni siquiera es importante las palabras clave.
Simplemente se busca aumentar el PageRank de las páginas, para poder vender
enlaces en un futuro.
Para los creadores de los weblogs y en los libros de firmas la solución es realizar los
enlaces mediante JavaScript o diciéndole no_index, no_follow para que no lo indexe ni
siga. Debido a que el robot de Google no los tiene en cuenta, los visitantes podrán
acceder a estos sitios Web, pero no serán tenidos en cuenta para la trasmisión del
PageRank. De todas maneras, se sospecha que Google, entre otros está comenzando a
no tener en cuenta los enlaces provenientes de los libros de firmas. Aunque esta
técnica está englobada como fraudulenta en ocasiones puede que nos interesa
teniendo en cuenta las consecuencias, pero esto queda en manos del Webmaster.
99
4.2.- Ficheros complementarios
Una de los puntos que tienen muy en cuenta los crawlers (robots de búsqueda) es la
velocidad de carga de de las páginas y la velocidad de comprobación de un sitio Web.
En este sentido podemos ayudarnos con ficheros externos al propio código de las
páginas que nos ayudarán en este sentido.
4.2.1.- Sitemap
Crear un mapa del sitio es importante tanto para el usuario como para los robots. Es
por tanto que en este aspecto no hablemos de un solo fichero sino de varios. La
creación de un fichero sitemap.html que nos informe del esquema que tiene la Web
ayuda al usuario a la hora de moverse por la web pero de igual manera puede ayudar
a los bots a indexar las páginas de nuestra web. De la misma manera podemos ayudar
a los crawler con los ficheros sitemap.txt y sitemap.xml, este último es el más tenido
en cuenta.
Un sitemap.xml le da la idea mediante un lenguaje de marcado (como lo es HTML) de
las páginas que componen nuestra Web. Se le puede introducir una serie de premisas:
<loc>: es la única de las nombradas que es obligatoria. Indica la URL de la página.
Esta URL debe comenzar con el protocolo (por ej., http) y acabar con una barra
diagonal, si su servidor Web así lo requiere. Este valor debe contener menos de 2.048
caracteres.
<lastmod>: Fecha de la última modificación del archivo. Esta fecha debe encontrarse
en formato Fecha y hora de W3C.
<changefreq>:Frecuencia con la que puede cambiar esta página. Este valor
proporciona información general a los motores de búsqueda y es posible que no se
corresponda exactamente con la frecuencia de rastreo de la página. Valores aceptados:
Always, hourly, daily, weekly, monthly, yearly,,never
El valor "always" (siempre) debe utilizarse para describir documentos que cambian
cada vez que se obtiene acceso a ellos. El valor "never" (nunca) debe utilizarse para
describir direcciones URL archivadas.
Jay que tener en cuenta que el valor de esta etiqueta se considera una sugerencia y no
una orden.
<priority> La prioridad de esta dirección URL es relativa con respecto a las demás
URL de su sitio. Los valores válidos abarcan desde 0,0 a 1,0. Este valor no afecta a la
comparación de sus páginas con respecto a las de otros sitios; únicamente permite
100
informar a los motores de búsqueda de las páginas que considera más importantes
para los rastreadores. La prioridad predeterminada de una página es 0,5.
Finalmente hay que saber que aunque la mayoría de los robots recogen este fichero
siempre que se encuentre en la raíz de mi alojamiento, existen herramientas para
Webmaster como las de Google donde podemos indicar la ruta de nuestro fichero para
mayor seguridad o simplemente porque no podemos colgarlo en la ubicación que
indicábamos.
4.2.2.-Robots.txt
Este fichero va más allá de la ya nombrada metatag robots. El fichero robots.txt es
un archivo de texto que dicta unas recomendaciones para que todos los crawlers y
robots de buscadores cumplan (¡ojo! recomendaciones, no obligaciones). Estas son:
- Impedir acceso a robots determinados: Puede parecer contradictorio, pero
algunos crawlers no nos proporcionarán sino problemas. Algunos robots no son de
buscadores, e incluso algunos robots no son ni amigos.
- Reducir la sobrecarga del servidor: Podrás controlar el flujo de algunos robots.
Algunos de ellos son un verdadero descontrol de peticiones que pueden llegar a
saturar nuestro servidor.
- Prohibir zonas: Nos puede interesar tener disponible una zona en nuestra Web, que
sea accesible para algunos, pero que no aparezca en buscadores.
- Eliminar contenido duplicado: Uno de los casos más importantes, que casi
siempre es olvidado por los webmasters. Si eliminamos la duplicidad de contenido, los
buscadores nos puntuaran muy alto, aumentando el flujo de visitas.
- Fijar mapas del sitio: También es posible acoplar un sitemap para indicar el buen
camino a los robots. Sólo tenemos que crear un fichero de texto robots.txt y
comenzar a escribir en el. En User-agent debemos introducir el nombre del robot, y a
continuación las rutas donde queremos prohibir que acceda. Algunos ejemplos:
- Disallow: / prohibe la entrada a todo el sitio.
- Disallow: /admin/ prohíbe la entrada a los documentos del directorio admin.
- Disallow: permite la entrada a todo el sitio. En algunos casos suele utilizarse en
lugar de Disallow, la palabra Allow. Aunque por definición es correcta, es conveniente
no utilizarla, puesto que las rutas omitidas se asumen que están permitidas por
defecto, y algunos robots no entienden la palabra Allow.
101
Carpetas y ficheros que podemos introducir en estas líneas son carpetas que
contengan imágenes, ficheros de estilos .css y javasciprt .js, también los ficheros flash
.swf, aunque algunos bots empiezan a indexarlos pero no les da información, y
carpetas de configuración de nuestro hosting.
Es posible ir acumulando reglas para distintos crawlers, formando un robots.txt más
largo y completo. Cada vez que escribamos un User-agent deberemos dejar una línea
en blanco de separación. Además, existe una ligera adaptación que permiten usar
comodines ($ y *) en las rutas en algunos crawlers (sólo Googlebot y Slurp).
Si revisamos estadísticas y demás, también puedes observar que a veces algunos
crawlers se exceden revisando nuestro sitio, y saturan de peticiones a nuestro servidor.
Existe una manera de tranquilizar a los robots con Crawl-delay: 30 (el numero son
segundos hasta el próximo acceso)
Por último con Sitemap: http://www.casarural-sansofi.com/sitemap.xml le indicamos al
robot un mapa del sitio.
4.2.3.- .htaccess
.htaccess es un fichero de configuración oculto en la raíz de nuestro servidor (hosting)
y que nos permite una serie de acciones para que Google u otros buscadores con
consideren sitios de calidad y amigos con técnicas que ya hemos descrito
anteriormente como las urls amigables o evitando contenido duplicado por distintos
accesos.
Obligar el uso del www: El contenido duplicado puede llevarnos a penalizaciones
por parte de los buscadores. No hay una regla escrita de si se debe obligar al sitio a
entrar son www o con él pero es muy recomendable decantarse por uno solo ya que el
tener los dos accesos puede llevar a error a los buscadores pensando que el contenido
está duplicado. Mi modo de pensar se inclina por el www ya que Internet esta ligado
para muchas personas con este término. Se realiza mediante un redireccionamiento
permanente 301.
# Quitar el www del nombre de dominio
1. RewriteCond %{HTTP_HOST} ^www\.casarural-sansofi\.com$ [NC]
2. RewriteRule ^(.*)$ http:// casarural-sansofi.com/$1 [R=301,QSA,L]
# Redirigir el dominio sin www a www
1. RewriteCond %{HTTP_HOST} ^ casarural-sansofi \.com$ [NC]
2. RewriteRule ^(.*)$ http://www. casarural-sansofi.com/$1 [R=301,QSA,L]
102
Lectura de URLs amigables por sus respectivas rutas dinámicas: Para esto ya
tendrías que haber logrado la creación adecuada de las URLs amigables. Asumiendo
eso ahora nos corresponde ejecutar en htaccess la segunda parte del proceso: lograr
que esas URLs amigables sean leídas a través de sus respectivas URLs dinámicas.
Redireccionar las antiguas URLs dinámicas a las nuevas amigables de forma
permanente: Si antes utilizabas únicamente URLs dinámicas y has decidido cambiar a
URLs amigables, es necesario hacérselo saber a los buscadores. Tendrás pues que
establecer en el htaccess que TODAS las antiguas URLs dinámicas te las redirecciones
permanentemente a sus respectivas amigables.
Existe multitud de información más que se puede dar a través de este fichero como el
bloquear el acceso a ciertos ficheros, pero estas dos son las importantes por haber
hablado de ellas como técnicas de optimización de sitios Web.
4.2.4.- Estilos y javascript
Ya hemos hablado de la descarga de tamaño de imágenes para aumentar la velocidad
de carga de una página pero también los buscadores ven con muy buenos ojos que los
ficheros tengan un tamaño al menos no muy grande.
Una técnica que nos puede ayudar doblemente es la de sacar todos los códigos que
sean posibles a ficheros externos y además bloquear estos con el fichero robots.txt y
.htaccess.
De esta manera quitamos más peso a las páginas pero, qué más ganamos. Con esta
técnica podemos modificar los estilos de por ejemplo los <h1> evitando que tengan un
tamaño muy grande y poderlo disimular más a vista del usuario pero no a vista de los
robots de los buscadores. Veremos como hacerlo más adelante en el desarrollo de las
optimizaciones.
103
4.3.- Promoción externa
Primero hay que saber que se entiende por promoción externa. Como ya hemos visto
los buscadores se basaban solo en los datos que recogen de las propias páginas para
ordenar en sus buscadores los resultados de búsqueda. Pero Google revolucionó esta
idea con su algoritmo de posicionamiento llamado PageRank. No fue el único pero si el
primero y actualmente la idea se mantiene para el resto de buscadores. La idea de
este algoritmo es valorar, y en gran medida, la presencia de una Web en Internet de
forma externa a ella misma. La manera como harían esto es observando y valorando
los enlaces a nuestro sitio desde otras páginas.
En términos generales, cuando cualquier usuario ingresa una consulta en el motor de
búsqueda, el motor de búsqueda necesita determinar cuál es el mejor resultado que
debe retornar. Uno de los pasos claves, es evaluar que página relacionada con la
consulta es la más importante, o que página tiene más autoridad de acuerdo a la
búsqueda. Uno de los factores más importantes para decidir esto es el perfil del enlace
del sitio que contiene la página web que se está evaluando.
En principio, cada enlace a una página web se considera un voto para esa página Web.
En términos simples, si hay dos páginas que son igualmente relevantes para una
consulta en particular, la página con mejor número de perfiles de enlaces entrantes
será posicionada mejor que las otras páginas. Lo motores de búsqueda no premian
aquellos que se sientan a esperar que los enlaces lleguen a ellos. Promocionar el sitio
corresponde al editor, quien debe decirle al mundo acerca de su sitio Web y conseguir
personas que enlacen este. Los editores que no dedican tiempo al Link Building tienen
un alto riesgo de perder su tráfico desde los motores de búsqueda o aquellos que
nunca incrementan el número de sitios que apuntan hacia su sitio Web pueden no
cumplir sus objetivos de tráfico.
Cuando hacemos Link Building debemos pensar si un determinado enlace ayudara o no
a posicionar una página en el largo plazo. Para ilustrar esto, hay varios tipos de
enlaces que los editores pueden obtener pero que los motores de búsqueda penalizan.
Por ejemplo, Google ha adoptado una postura fuerte contra la práctica de comprar
enlaces con el propósito de influenciar la clasificación del índice en el motor. Sin
embargo, mucha gente todavía compra enlaces y es posible que esta práctica funcione
para muchos de ellos, al menos en el corto plazo.
No obstante, Google invierte activamente recursos en encontrar enlaces pagados y
otros esquemas que desvirtúan el servicio de búsqueda. Aunque estos enlaces trabajen
en el corto plazo para los editores, no hay garantía que trabajara a largo plazo.
Esto nos lleva a una elección que todo editor debe hacer: Si llevar a cabo estrategias a
corto plazo, como la compra de enlaces, que pueden traer resultados más rápidos con
menos esfuerzo, o aplicar estrategias a largo plazo que tienen un riesgo mucho menor.
104
Por todas las anteriores razones, nosotros no recomendamos comprar enlaces pagados
como estrategia para mejorar la posición en los resultados de Google u otro motor
búsqueda.
Desde el punto de vista del posicionamiento la forma de conseguir esto es fácil pero
muy complicada a la vez. Fácil porque la idea está clara, enlazar nuestra página desde
otros sitios, pero cómo conseguir esos enlaces es lo complicado.
Existen diferentes maneras de conseguirlo, no todas al alcance de cualquiera, y no
todas con el mismo resultado como explicamos a continuación.
4.3.1.- Directorios
Ya hablamos de los buscadores en la introducción. Cunado hablamos de estos nos
referimos siempre a directorios de gran tamaño como el antiguo Yahoo o el actual
DMOZ, aunque existen muchos más.
Google y los principales buscadores buscan en estos directorios nuevas páginas que
indexar y datos relativos a “presencia” de una Web por medio de los enlaces existentes
en los diferentes directorios.
Directorios Públicos: En la Red se encuentran una gran cantidad de directorios
públicos donde podemos dar de alta nuestras Web. Al introducir los datos referentes a
esta nos piden un titulo, descripción y unos términos que serán nuestros términos de
búsqueda, de manera que muchos de estos enlaces al menos están bien construidos.
Estos enlaces que conseguimos hacia nuestra página nos ayudan a dar presencia pero
han de ser bastantes para que nos ayuden en gran medida a posicionamiento en
buscadores. El motivo es que normalmente los enlaces vendrán de páginas muy
internas de los directorios con una valoración de PageRank(en el caso de Google) muy
bajo o nulo.
Algo que si se tiene más encuentra son los directorios sectoriales que hablen del
mismo sector del que es tu Web. Deberías intentarlo en DMOZ. Se trata de un
directorio de carácter público y abierto, y está gestionado por editores voluntarios.
Aparte de conseguir enlaces en dmoz.org, uno de los directorios con mayor PageRank
es el de Yahoo!. A diferencia del primero, éste se trata de una compañía privada, pero
también sus editores valoran la calidad de los sitios Web antes de aceptarlos.
Directorios Privados: Si nos dedicamos al posicionamiento en buscadores nosotros
mismos podemos crearnos nuestro mini directorio con páginas que no superen lo 60
link. Organizando por algún sector genérico y con páginas que con el tiempo vayan
cogiendo PageRank gracias a promoción de estos directorios. Otra ventaja es que los
gestionamos nosotros con lo que cremaos enlaces de la forma que más nos interese.
Un enlace completo seria el compuesto por:
nombre empresa-sitio
105
+ etiqueta <a> con etiquetas de titulo y alternativas en la que ponemos
términos clave
+ términos clave que serán los enlaces a nuestro sitio
+ descripción en la que nuevamente se habla de los términos pero sin
abusar
<Ahref=http://www.sitio.com/pagina.html>Palabra(s) clave(s)</A>
Además hay que añadir que Google y otros buscadores consideran enlaces de más
calidad los que vienen de páginas externas a nuestro sitio pero que no tienen
respuesta por nuestra parte, es decir que no son recíprocos. El motivo es que Google
considera que se está linkando porque el sitio externo considera que nuestro contenido
es de calidad.
Existe una amplia lista de directorios en la red. El alta en estos se recomienda hacerla
de forma manual con descripciones diferentes y rellenando en cada caso los datos que
nos pidan de la forma más completa. No obstante existen herramientas para
automatizar estatarea agilizando este trabajo pero perdiendo en calidad.
4.3.2.- Enlaces desde otras páginas
Hasta este punto toda persona puede servirse de sus conocimientos o de los recursos
que le da la Internet. Pero si lo que queremos es hacer aun más fuerza tendremos
conseguir una promoción de nuestra Web desde más páginas. El método más fácil
para las empresas es la de linkar a sus clientes entre si, creando una página en cada
cliente con no más de 60 link (evitar ser un 'link farms') que cuelgue de la Home para
que tenga más peso, o incluso de la Home, en pocos enlaces.
De la misma manera que antes podemos hacer enlaces de calidad tanto sobre código
como por el hecho de que estos no son recíprocos. Solo hay un problema. Google
penaliza las redes de enlaces con lo que nuestro trabajo, dentro de la organización, ha
de ser caótico para no llegar a ser descubiertos y que pase por enlaces corrientes.
En este sentido hay que ser cautos a la hora de enlazar un sitio pues una de las
maneras en que Google puede darse cuenta es que no se va a creer que un sitio nuevo
o sin serlo, sea enlazado de la noche a la mañana por multitud de páginas. Esto es
conocido por el efecto Sandbox de Google el cual te restringe la entrada a los
primeros puestos durante los primeros periodos de vida de tu dominio para comprobar
que posteriormente sigues recibiendo nuevos enlaces y de ser así permitir su acceso.
Dentro de estas penalizaciones está la posibilidad de ser enlazados por páginas de
contenido bélico, sexual, temas de salud en los que están implicados problemas de
anorexia, contenido xenófobo…Desde mi punto de vista no seremos penalizados, ya
106
que cualquiera que nos quiera hacer daño lo haría por este medio, pero serán enlaces
con muy poca fuerza o ninguna.
Como hemos dicho conseguir este tipo de enlaces es más fácil para una empresa que
para un particular. Pero no hay que rendirse. La Red es enorme y siempre hay gente
dispuesta a recibir información para la creación de sitios nuevos. La mejor manera de
empezar a pedir enlaces es estudiando a tu competencia.
link:http://www.casarural-competencia.com (muestra los llamados 'backlinks',
los sitios Web que lo enlazan con un PR mayor que 3 ó 4). Así sabrás en qué sitios ha
conseguido tu competencia sus links. Nosotros podemos hacer lo mismo.
Otra de las acciones es la de compra de enlaces. Por supuesto, Google no va a tolerar
que nadie cobre dinero por insertar enlaces desde sus páginas gracias al PageRank
conseguido, y lo que está haciendo en algunas ocasiones es penalizar a estos sitios
web que insertan los links.
En estos casos la compra de enlaces puede ser una opción pero peligrosa ya que
podemos ser penalizados aunque normalmente Google no elimina de los resultados, y
quizá tampoco reduzca su PageRank, ya que Google considera que la información que
contiene puede resultar valiosa para algunas búsquedas. Lo que hace sencillamente es
impedir la posibilidad de que estas páginas Web 'transmitan' el PageRank.
Simplemente, no sigue los enlaces desde ellas.
El link Building es una práctica en SEO que tiene como objetivo que otros sitios Web
creen vínculos hacia un sitio Web en particular.
4.3.3.- Posicionamiento con “pago por click”
Los sistemas de pago por click (PPC) consisten básicamente en pagar por poner
publicidad de tu sitio en otras páginas Web y buscadores. Es un modelo de publicidad
en el que el anunciante paga una cantidad específica de dinero cada vez que un
usuario pincha en un enlace (anuncio) que le lleva a su sitio Web. Los más populares
(Google Adwords, Overture, etc.) representan una buena manera de aumentar
nuestras visitas rápidamente, aunque no todo el mundo tiene el presupuesto para
hacerlo.
Su funcionamiento es sencillo. Los anuncios se muestran en la página ordenados según
la cantidad de dinero que paga el anunciante por click, de forma que los que más
pagan son que aparecen primero.
107
Figura 53.- Anuncios adwords de google
Adwords de Google
Adwords es seguramente el sistema de pago por click más conocido y usado. Es una
buena forma de conseguir tráfico hacia tu Web. Con este servicio de Google puedes
anunciar tu Web en el buscador apareciendo en las primeras páginas de los resultados
de búsqueda (en los enlaces patrocinados) para las palabras que más te interesen.
Los anuncios también aparecen en páginas Web relacionadas con el contenido de lo
que anuncias, estas páginas provienen de la base de datos del programa de Adsense,
que paga a los webmasters por mostrar publicidad en sus páginas.
En el caso de Adwords, los resultados y la posición en la que salga tu anuncio depende
del dinero que estés dispuesto a pagar y la temática de la Web, entre otras cosas (hay
temas con más anunciantes y por tanto más caros). Pero no te asustes, no hay que
invertir grandes cantidades de dinero para anunciarse en Google (la cantidad mínima al
mes son 30 euros).
Hacemos los anuncios como creamos conveniente, indicamos las palabras clave para
las que quieres que tu anuncio compita por los primeros puestos en los enlaces
patrocinados de las búsquedas y estableces la cantidad máxima a pagar por click. Por
supuesto, esto sólo es un mínimo resumen acerca de lo que AdWords es, para obtener
una referencia más amplia puedes visitar: Blog de AdWords, Centro de aprendizaje de
AdWords.
Este sistema resulta muy útil para aquellas webs que empiezan y necesitan comenzar a
tener visitas rápidamente, para publicitar un producto específico, para conseguir tráfico
segmentado hacia tu Web (altamente interesado en lo que ofreces), para dar a
conocer tu empresa y para salir en las primeras páginas de los resultados de búsqueda
para las palabras clave que trabajas cuando el posicionamiento aún no ha dado sus
frutos.
108
4.3.4.- Redes sociales
El auge en los últimos años de las redes sociales ha llevado a la idea de crear
campañas similares a las ofrecidas por buscadores pero en este ámbito. Facebook y
Twiter son los principales precursores como redes sociales en implantar este servicio.
Página de la casa rural en facebook:
http://www.facebook.com/profile.php?id=100001400339239
Para muchos negocios desarrollar una estrategia de marketing basada en redes
sociales es esencial y es la más rentable de las promociones posibles.
En principio, una estrategia de redes sociales es imprescindible para aquellas empresas
que cumplan uno o más de los siguientes requisitos:
- Que sus productos o servicios sean de consumo repetitivo.
- Que sus productos o servicios sean contratados basados principalmente en la
recomendación de amigos o familiares.
- Que sus productos se comercialicen en base a modas o comportamientos
sociales de aceptación de marca.
4.4.- Publicación en portales especializados
Ya sea vía online o vía medios físicos, la realización de campañas de publicidad de
nuestra empresa nos va a generar nuevamente tráfico a nuestra página y por tanto
mejorar la valoración por los buscadores.
Nos vamos a centrar en la publicidad online, concretamente en la publicación en
portales especializados del sector, puesto que la mayoría del mercado no llegará a
nuestra página web directamente, sino que lo hará por medio de un portal web donde
nos pueda encontrar junto con otros alojamientos rurales, para así comparar precios,
situación, disponibilidades, etc…
Para ello de nuevo utilizamos el buscador google del dominio .es e introducimos los
términos de búsqueta más genéricos “casa rural” tal y como hemos visto en el punto
4.2.- Técnicas de posicionamiento, concretamente en el apartado “estudio de los
términos”
Tras realizar la búsqueda en google.es, estos son el nombre de los 8 primeros portales
que aparecen al introducir los términos “casa rural”:
www.toprural.com
109
www.casarural.es
www.escapadarural.es
www.todaslascasarurales.com
www.todocasarural.com
www.rinconesdelmundo.com
www.tuscasasrurales.com
www.e rural.com
Que aparezcan bien posicionados en el dominio google.es no es sinónimo recibir más
visitas que otro portal que este peor posicionado, para asegurarnos de ello haremos
uso de la herramienta Alexa, provee información acerca de la cantidad de visitas que
recibe un sitio web y los clasifica en un ranking. Alexa recoge información de los
usuarios que tienen instalado Alexa Toolbar, lo cual le permite generar estadísticas
acerca de la cantidad de visitas y de los enlaces relacionados.
También proporciona una gráfica donde se puede apreciar perfectamente el
crecimiento/decrecimiento de las visitas a una página web, además de la información
diaria (solo las 100.000 primeras páginas de la clasificación), media semanal y media
de los últimos tres meses.
Analizando en la web de alexa.com cada portal de alojamientos rurales obtenemos la
siguiente información:
Información de sitio para toprural.com
Tráfico en el ranking de Alexa: 17,349 Tráfico en el ranking ES: 419
Enlaces al sitio: 3,475
Información de sitio para casarural.es
Tráfico en el ranking de Alexa: 4,028,336 No hay información regional
Enlaces al sitio: 26
Información de sitio para escapadarural.com
Tráfico en el ranking de Alexa: 43,347 Tráfico en el ranking ES: 897
Enlaces al sitio: 691
Información de sitio para todaslascasarurales.com
Tráfico en el ranking de Alexa: 272,104 Tráfico en el ranking ES: 13,210
Enlaces al sitio: 628
110
Información de sitio para todocasarural.com
Tráfico en el ranking de Alexa: 323,205 Tráfico en el ranking ES: 14,064
Enlaces al sitio: 458
Información de sitio para rinconesdelmundo.com
Tráfico en el ranking de Alexa: 163,723 Tráfico en el ranking ES: 4,310
Enlaces al sitio: 550
Información de sitio para tuscasasrurales.com
Tráfico en el ranking de Alexa: 480,254 Tráfico en el ranking ES: 21,195
Enlaces al sitio: 772
Información de sitio para erural.com
Tráfico en el ranking de Alexa: 649,897 Tráfico en el ranking ES: 47,738
Enlaces al sitio: 1,049
Como información complementaria añadiremos un portal extranjero www.iha.com,
puesto que tiene difusión a nivel mundial, aunque nos centraremos en analizar y
comparar su dominio francés iha.fr, los alojamientos rurales de la costa Mediterranea
son muy demandados por los franceses
Información de sitio para iha.fr
Tráfico en el ranking de Alexa: 90,563 Tráfico en el ranking FR: 3,942
Enlaces al sitio: 2,747
A parte despreciaremos el dominio casarural.es, puesto que en el ranking Alexa estaba
muy desplazado de los demás, se podría considerar un dato anómalo, aunque tuviera
buen posicionamiento en google se ha demostrado que es un portal que no interesa.
111
0
100000
200000
300000
400000
500000
600000
700000
1
toprural.com
iha.fr
escapadarural.com
todaslascasasrurales.com
todocasarural.com
rinconesdelmundo.com
tuscasarurales.com
erural.com
Figura 54.- Gráfico del tráfico en el ranking Alexa
En la figura 54 podemos observar como a nivel del ranking Alexa tenemos tres
dominios destacados, fijémonos que estamos hablando de posicionamiento y que por
tanto un mejor posicionamiento pertenece a un número menor, en este caso los tres
mejores posicionados son toprural.com, iha.fr y escapadarural.com, en cuarto lugar
estaría rinconesdelmundo.com, pero a una distancia el doble de alejada que iha.fr, por
tanto en este gráfico nos quedamos con los tres dominios anteriormente mencionados.
0
10000
20000
30000
40000
50000
60000
1
toprural.com
iha.fr
escapadarural.com
todaslascasasrurales.com
todocasarural.com
rinconesdelmundo.com
tuscasarurales.com
erural.com
Figura 55.- Gráfico del tráfico en el ranking nacional
En la anterior figura obtenemos un resultado muy similar al obtenido en la Figura 54,
aunque aquí la diferencia entre rinconesdelmundo.com e iha.fr es mucho menor, de
112
todos modos elegimos como los tres mejor posicionados toprural.com,
escapadarural.com e iha.fr
0
500
1000
1500
2000
2500
3000
3500
4000
1
toprural.com
iha.fr
escapadarural.com
todaslascasasrurales.com
todocasarural.com
rinconesdelmundo.com
tuscasarurales.com
erural.com
Figura 56.- Gráfico de los sitios que enlacen con dichos portales
En cuanto a sitios que enlazan con el portal web observamos como toprural.com e
iha.fr están en cabeza destacados, perseguidos por erural.com a casi el triple de
diferencia de estos dos en cabeza, luego vienen los demás portales rurales.
Por tanto, tras realizar el siguiente estudio de mercado en cuanto a portales rurales,
nos decantamos por analizar ahora los portales escapadarural.com, iha.fr y
toprural.com
Escapada rural
Podemos decir que es el segundo portal detrás de toprural.com mejor posicionado y
que más visitantes recibe a nivel nacional.
En la Figura 57 podemos observar el aspecto gráfico del anuncio en el portal escapada
rural, aportando la información necesaria a los futuros huéspedes:
- Ubicación
- Capacidad
- Precio medio
- Tipo de alquiler
- Teléfono
- Página web
113
Figura 57.- Aspecto del anuncio en escapada rural
Figura 58.- Aspecto de la descripción del anuncio en escapada rural
114
Y las secciones son muy similares a las elegidas en nuestro proyecto en el punto 3.3.1
Nivel de presentación, esto se puede apreciar en la Figura 58, las secciones en este
portal en concreto son: Alojamiento, Precios, Fotos, Como llegar y Contactar.
En la siguiente tabla mostramos un símil de las secciones de escapada rural con las de
nuestro sitio web
Tabla 4.- Secciones escapada rural
Para modelar el anuncio hemos usado las mismas imágenes y texto que para nuestra
página web, aunque este tipo de portales por su diseño nos ofrece una mayor
capacidad para describir el lugar y una galería dinámica de hasta 50 imágenes.
En este portal podemos registrar nuestro alojamiento rural de gratuita, aunque nuestro
anuncio se encontrará en los últimos resultados de búsqueda, tendremos galería
limitada y el anuncio no dispondrá de foto principal. La siguiente opción es la ficha
completa, disponible por 180€/año, por delante en los resultados de búsqueda que
estando gratuitamente y por último nos encontramos con la ficha completa plus, se
ofrece por 320€/año y nos sitúa por delante de la ficha completa.
IHA
Figura 59.- Aspecto del anuncio en IHA
Escapada rural Alojamiento Precios Fotos Como llegar Contactar
Página web La Casa Tarifas Imágenes Ubicación Contacto
115
La interfaz gráfica del anuncio en iha es un poco diferente al anterior diseño de
escapada rural, que a su vez este diseño era muy similar al elegido nosotros al realizar
el sitio web del presente proyecto. En la Figura 60 observamos como la galería de
imágenes se trata de un video de las fotos que aparecen en la sección de imágenes en
la página web de la casa rural y tras intervalos de 5 segundos van cambiando.
Nos ofrece también este portal una gran variedad de especificaciones técnicas de la
casa y su entorno, tal y como vemos en las Figuras 60 y 61.
Figura 60.- Aspecto de la descripción en IHA
La estructura de la página es algo compleja, pero toda la información se encuentra en
el mismo archivo principal, solo hay que ir arrastrando el scroll para desplazarse hacia
abajo y encontrar más información.
En este portal la estrategia a seguir en cuanto a packs de pago es la misma que en
escapada rural, podemos tener nuestro anuncio gratuitamente durante un periodo
ilimitado o podemos decidir pagar y cuanto mayor sea la cuota anual que pagamos
mejor posicionados estaremos y mayores serán las funcionalidades que nos ofrecerá el
portal para mejorar nuestro anuncio. Los packs llevan el nombre de piedras preciosas:
diamante este será el más caro, por 135€/año, zafiro por 105€/año y esmeralda nos
saldrá por 75€/año.
116
Figura 61.- Aspecto de la continuación de la descripción en IHA
Top rural
Figura 62.- Aspecto del anuncio en top rural
117
El portal Top rural nos ofrece una interfaz con casi las mismas secciones que hemos
elegido para nuestra página web, incluyendo por su parte una sección de vídeos y otra
de ofertas. Por otro lado observamos como su interfaz gráfica es casi idéntica a la de
escapada rural, ambos portales compiten entre si por ser el número uno a nivel
nacional, aunque top rural desde hace bastantes años consigue los mejores resultados.
En cuanto a novedades, si lo comparemos con escapada rural, este portal ofrece la
sección de opiniones, muy importante para generar confianza a los futuros huéspedes
y las secciones de vídeos y ofertas ya citadas anteriormente.
Figura 63.- Aspecto de la descripción en top rural
Observamos como la página principal del anuncio, la sección “ficha” concretamente es
similar en cuanto a idea de diseño que los anuncios del portal iha, en él aparece toda
la información a modo de resumen y el usuario solo debe desplazar el scroll hacia
abajo para recorrer la información que en dicha sección aparece. Esto lo podemos
apreciar en las Figuras 63 y 64, siendo esta la continuación de su predecesora.
118
Figura 64.- Aspecto de la continuación de la descripción en top rural
En este portal la estrategia a seguir en cuanto a packs de pago es la misma que en
escapada rural e iha, a excepción de incluir la posibilidad de registrarse gratuitamente
en la página. Este portal está muy bien posicionado y puede permitirse el lujo de no
ofrecer fichas gratuitamente.
Como en los anteriores portales cuanto mayor sea la cuota anual que pagamos mejor
posicionados estaremos y mayores serán las funcionalidades que nos ofrecerá el portal
para mejorar nuestro anuncio. Aunque en este caso lo más cotizado es el buen
posicionamiento. Existen 4 modalidades: exclusiva, por 5000€/año, prestigio por
1296€/año, oro por 432€/año y plata por 165€/año
Cabe mencionar que las diferencias son notorias, por ello tanta diferencia de precio.
Top rural domina el mercado y crea tendencia, de ahí que el formato de los anuncios
de escapada rural sea tan similar al ofrecido por Top rural.
119
CAPITULO V
Conclusiones
En este apartado enumeraremos las conclusiones a las que he llegado durante la
elaboración del Proyecto Fin de Carrera y además citaremos una serie de trabajos
futuros sobre este tema.
Conclusión
Principalmente me ha servido de ayuda la realización del presente PFC para ponerme
al día en cuanto a tecnologías de la red, puesto que he abarcado una gran temática en
el presente trabajo. Tanto como instalador y configurador de sistemas; pasando por
programador haciendo uso de los lenguajes y tecnologías más comunes de la red; y
por último enfrontándome a la red para conseguir un mejor posicionamiento.
También me ha servido de ayuda para documentar algunas tareas que realicé desde
hará un par de años atrás hasta prácticamente hoy, puesto que el punto 3 de creación
del entorno web fue una tarea que empecé hace un par de años y no existía
documentación alguna sobre ello, para esto ha sido de relevante importancia la
asignatura de ingeniería del software.
No solamente eso, sino que he podido conocerme más a mi mismo y descubrir una
capacidad de organización y constancia que siempre había tenido pero no he sido
consciente de ella hasta ahora. Me he tenido que valer de la realización de un plan de
trabajo para llevar el control del tiempo y las tareas que iba llevando a cabo en cada
momento.
Concluyendo y con total convicción, puedo afirmar que todo lo aprendido hasta el día
hoy, ha superado ampliamente mis expectativas iniciales y me siento afortunado de
haber seleccionado esta temática para mi Proyecto Final de Carrera.
Trabajos Futuros
En cuanto a trabajos hay que mencionar en concreto la implementación de ciertos
casos de uso para mejorar la funcionalidad de la página web que en su momento
fueron citados en dicho proyecto, pero que no han podido ser llevados a cabo.
También cabe mencionar, una vez realizado el proyecto y viso desde fuera, que el
título más coherente del proyecto hubiera sido: “Instalación, desarrollo y promoción de
120
aplicación web estudiando diversas alternativas”, pero es algo que decides antes de la
realización del proyecto y en este momento no se puede cambiar.
Otro trabajo futuro sería montar un servidor en casa, puesto que durante la realización
se hizo pero de modo experimental, no fue contratada una ip estática, ni se compró un
SAI para alimentar el equipo en caso de cortes de corriente ni tampoco el hardware
fue el más indicado. A decir verdad me he quedado con ganas de experimentar más
con servidores.
En cuanto a la parte software siempre se puede mejorar más, pero ello el tiempo lo
dirá, como se trata de un proyecto sobre un negocio familiar no tendré ningún
problema en mejorar la página web en futuras ocasiones.
121
CAPITULO VI
Bibliografía
– Álvarez, M.A.
Desarrollo Web, Tu mejor ayuda para aprender a hacer webs.
(http://www.desarrolloweb.com).
– Buendía, F.
Una guía para la realización y supervisión de proyectos final de carrera (PFC)
en el ámbito de la web.
– Factoría de Internet, S.L.
WebTaller
(http://www.webtaller.com).
– Sanger L., Wales J.
Wikipedia, La enciclopedia libre.
(http://es.wikipedia.org).
– Welling L., Thomson L.
Programación Desarrollo Web con PHP y MYSQL.
Ed. Anaya Multimedia, S.A., 2009.
- Jaime Sivorich, Cristian Darie
Optimización del posicionamiento en buscadores con PHP. Profesional.
Editorial ANAYA
http://www.cinetube.es/documentales/google_fabrica_de_ideas.html
http://www.promocionatuweb.com/articulos/tipos-buscadores.php
http://www.ylos.com/spa/item/Clases-de-buscadores.html
http://www.emezeta.com/articulos/robots-txt-todo-lo-que-deberia-saber
http://posicionamientobuscadores.developers4web.com/posicionamiento-web-
sitiosmulti-idioma
http://seoteca.com/foro-seo/421-los-buscadores-miran-el-contenido-de-un-iframe.html
http://www.turnkeylinux.org/screenshots/lamp-turnkey-control-panel
122
ANEXO A
Manual de instalación del Servidor
Se puede descargar en la dirección http://www.turnkeylinux.org/lampstack siendo la
versión 11.2 la última versión estable en el momento de la realización de este manual.
Al tratarse de software libre no es necesario estar registrado en la página web.
Figura A.1 Portal de TurnkeyLinux (lampstack)
Consiste en un Ubuntu reducido, con los elementos necesarios para realizar la tarea de
servidor Web. Su versión es la 10.04 LTS, nombre en clave Lucid, y ofrece soporte
hasta Marzo de 2015, incluye el Kernel 2.6.32 y no lleva instalada la interfaz gráfica.
Todo se realiza desde la consola, para optimizar recursos.
Los requisitos del sistema son muy básicos 256MB de memoria RAM, 2GB de espacio
en disco duro, adaptador Ethernet, tarjeta gráfica de 64MB, monitor, teclado y unidad
de CD-ROM para instalar el sistema.
Ahora pasamos a comentar figura a figura, que en este caso corresponden a las
capturas de pantalla realizadas durante la instalación.
En la pantalla de bienvenida (Figura A.2) seleccionamos “Install to hard disk”, para
instalar el sistema en nuestro propio disco duro. El idioma de instalación no lo
modificamos, en esta distribución solo esta disponible el inglés
123
Figura A.2 Pantalla de bienvenida
Seleccionamos el método manual, para crear nosotros mismos nuestras particiones.
Es recomendable realizar 4 particiones:
/: directorio raíz
/var: para archivos log, archivos de servidores de correo, servidores web
/boot: punto de arranque
Swap: memoria virtual
Figura A.3 Método de instalación
124
Figura A.4 Selección de disco
Seleccionamos nuestro disco duro físico donde instalar el sistema.
NOTA: estas capturas de pantalla corresponden con un sistema virtual, por ello los
tamaños de las particiones y del disco duro no son los más óptimos.
Figura A.5 Selección de partición
125
Ahora escogemos el espacio disponible para crear la nueva partición.
Figura A.6 Creación de partición
Creamos una nueva partición primaria, como solo vamos a crear 4 particiones las
podemos crear todas primarias sin ningún tipo de restricciones del sistema.
Figura A.7 Tipo de partición
126
Figura A.8 Selección de directorio a instalar
Primero seleccionamos la partición a crear, como dijimos anteriormente crearemos 4
particiones, la primera será la /, la segunda /var, la tercera /boot y por último la swat,
en las tres primeras utilizaremos el sistema de ficheros ext4 y la última la lleva su
propio tipo de ficheros.
Figura A.9 Tipo de archivos
127
Figura A.10 Selección área de intercambio
En este punto podemos observar como quedan las 4 particiones finalmente.
NOTA: estas capturas de pantalla corresponden con un sistema virtual, por ello los
tamaños de las particiones y del disco duro no son los más óptimos.
Figura A.11 Particiones finalizadas
128
Figura A.12 Instalación del arranque
Nos pregunta si queremos instalar el sistema de arranque (GRUB) en el MBR, no
tendremos ningún inconveniente en decir que si, puesto que solo instalaremos un
único sistema operativo y no causará ningún conflicto.
Tras instalar el sistema de arranque debemos reiniciar la máquina.
Figura A.13 Reinicio
129
Figura A.14 Contraseña de superusuario
Tras reiniciar la máquina nos pide la contraseña del usuario root del sistema y la del
superusuario de MySQL, en nuestro caso para simplificar elegiremos la misma. Nos la
pregunta un par de veces para asegurarse que introducimos los datos correctamente.
Figura A.15 Contraseña gestión base de datos
130
Figura A.16 Inicialización de servicios
Saltamos el primer paso dándole a “skip”, a continuación nos pregunta si queremos
instalar las actualizaciones, paso muy importante. Decimos que si, dándole a “install”,
esto tardará unos minutos, dependiendo de los rápido que sea nuestra conexión a
internet.
Figura A.17 Instalación de las actualizaciones
131
Figura A.18 Consola de configuración
Aquí concluye la instalación, a partir de aquí entraremos en el punto de configuración
del sistema.
132
ANEXO B
Archivos de configuración del servidor
Archivo de la interfaz de red. /etc/network/interfaces
# UNCONFIGURED INTERFACES
# remove the above line if you edit this file
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
auto eth1
iface eth1 inet dhcp
Archivo de configuración de sitio. /etc/apache2/sites-
availabe/casarural-sansofi.com
<VirtualHost *:80>
ServerName www.casarural-sansofi.com
ServerAlias casarural-sansofi.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot /var/www2/
</VirtualHost>
<Directory /var/www2/>
Options Indexes FollowSymLinks MultiViews
Order allow,deny
allow from all
133
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
Archivo de la configuración de Apache2. /etc/apache2/apache2.conf
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as a
# whole (the 'global environment').
# 2. Directives that define the parameters of the 'main' or 'default' server,
# which responds to requests that aren't handled by a virtual host.
# These directives also provide default values for the settings
# of all virtual hosts.
# 3. Settings for virtual hosts, which allow Web requests to be sent to
# different IP addresses or hostnames and have them handled by the
# same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "/var/log/apache2/foo.log"
# with ServerRoot set to "" will be interpreted by the
# server as "//var/log/apache2/foo.log".
#
### Section 1: Global Environment
134
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/accept.lock
#</IfModule>
#</IfModule>
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
135
KeepAlive On
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
##
## Server-Pool Size Regulation (MPM specific)
##
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
136
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName .htaccess
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
137
#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog /var/log/apache2/error.log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Include all the user configurations:
Include /etc/apache2/httpd.conf
138
# Include ports listing
Include /etc/apache2/ports.conf
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-
Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-
Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.
# Include generic snippets of statements
Include /etc/apache2/conf.d/
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
Archivo de los repositorios. /etc/apt/sources.list.d
#deb http://archive.turnkeylinux.org/ubuntu lucid main
#deb http://archive.turnkeylinux.org/ubuntu lucid universe
deb http://es.archive.ubuntu.com/ubuntu lucid main restricted universe
deb-src http://es.archive.ubuntu.com/ubuntu lucid main restricted universe
deb http://es.archive.ubuntu.com/ubuntu lucid-security main restricted universe
deb http://es.archive.ubuntu.com/ubuntu lucid-updates main restricted universe
deb http://es.archive.ubuntu.com/ubuntu lucid-proposed main restricted universe
139
deb-src http://es.archive.ubuntu.com/ubuntu lucid-security main restricted universe
deb-src http://es.archive.ubuntu.com/ubuntu lucid-updates main restricted universe
deb-src http://es.archive.ubuntu.com/ubuntu lucid-proposed main restricted universe
deb http://es.archive.ubuntu.com/ubuntu lucid partner
deb-src http://es.archive.ubuntu.com/ubuntu lucid partner
Archivo de configuración del programa VSFTP. /etc/vsftpd.conf
# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
#
# Run standalone? vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YES
#
# Run standalone with IPv6?
# Like the listen parameter, except vsftpd will listen on an IPv6 socket
# instead of an IPv4 one. This parameter and the listen parameter are mutually
# exclusive.
#listen_ipv6=YES
#
# Allow anonymous FTP? (Disabled by default)
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
#write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
140
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# If enabled, vsftpd will display directory listings with the time
# in your local time zone. The default is to display GMT. The
# times returned by the MDTM FTP command are also affected by this
# option.
use_localtime=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
141
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Bienvenido al servidor Molio
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
#chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
142
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# Debian customization
#
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default. These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty. Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/private/vsftpd.pem
143
ANEXO C
Comprar nombre de dominio en 1and1
Nos dirigimos a la página principal de 1and1, http://www.1and1.es
Figura C.1.- Página principal 1and1
Seleccionamos el apartado “dominios” en la Figura C.1, y en la Figura C.2
seleccionamos el nombre de dominio y la extensión, casarural-sansofi.com
Figura C.2.- Selección de nombre de dominio
144
Damos al botón de comprobar para verificar que ese nombre de dominio en concreto
esta libre. Una vez aceptado el nombre de dominio como libre, damos al botón de
siguiente y nos aparecerán ofertas de 1and1, nosotros no las aceptamos.
Figura C.3.- Selección de pack
Hasta llegar a la ventana de la Figura C.3, donde elegir el pack a comprar. En nuestro
caso compramos el 1&1 Dual Pack.
Figura C.4.- Condiciones de la compra
Aceptamos y en la siguiente ventana prodeceremos a completar los datos del cliente.
145
Figura C.5.- Datos del cliente
Aquí introducimos nuestros datos personales y en la siguiente ventana procederemos
al último punto, el pago mediante tarjeta de crédito o PayPal.
Una vez realizado el pago ya tenemos nuestro nombre de dominio comprado con
1and1 y también un panel de control a través de la web, ya somos cliente de 1and1.
146
ANEXO D
Minitutorial SEO
Punto 1: Elegir el objetivo
Para conseguir buenos resultados es básico escoger un buen objetivo. Dedicaremos
nuestros esfuerzos a un objetivo concreto. De su elección dependerá el éxito o fracaso
de la web en cuanto a posicionamiento se refiere. Se llama keyword (o palabra clave)
a la palabra por la que intentaremos posicionar nuestra web.
Un sitio web se puede posicionar para varias palabras a la vez. La mejor estrategia es
que el sitio web entero trate una temática concreta; por eso la estrategia fundamental
debe de ser la de posicionar la página de inicio para una búsqueda importante y luego
hacerlo con las páginas interiores para búsquedas más específicas. Tal como veremos
más adelante, el posicionar la página principal del dominio nos atraerá más enlaces a
nuestra página web, ya que la gente suele enlazar siempre a la página de inicio del
dominio y no a páginas interiores. Por eso, tal como se ha dicho, posicionaremos para
aparecer bien en la búsqueda por esa temática, y luego posicionaremos las páginas
interiores para búsquedas más concretas sobre esa temática y alguna que otra que no
tenga que ver.
Si realmente queremos conseguir todas las visitas que puedas, es muy importante
escoger bien tus palabras clave. Por un lado, puedes intentar competir por una
búsqueda tan difícil por la que jamás conseguirás posicionar alto y no recibirás visitas.
Por otro lado puedes escoger una keyword poco buscada y aún siendo primero no
conseguirás demasiadas visitas.
Para saber la dificultad de posicionarse por una keyword no hay un método exacto ni
una escala exacta, pero se puede deducir la dificultad de diversas maneras. Después
de leer el tutorial entero, sabrás más para poder determinar la dificultad de una
keyword. Aquí van unas sugerencias:
-Mira el PR de las páginas de esa búsqueda. EL PR no significa posicionarse mejor, es
al revés; un buen posicionamiento suele implicar un buen PR.
-Mira cuántos links entrantes tienen las primeras webs. Esto se hacebuscando en los
buscadores de muchas maneras. Por ejemplo, en Yahoo! puedes buscarlo
introduciendo en el cajón de búsqueda linkdomain:dominio.com; he aquí un ejemplo
del resultado. En Msn tienes comandos linkdomain (para el dominio entero) y link
(para una página concreta). En Google también existen esos comandos, pero Google
147
muestra muchos menos de los que conoce, por lo que no se suele usar para este
motivo.
Para saber lo buscada que es una palabra hay muchos métodos y herramientas. Uno
puede ser mirar las estadísticas del sitio web que ocupa la posición que deseamos, si el
sitio web las facilita. Sistemas de sugerencias de keywords:
Overture: Uno de los más usados, ofrece resultados para varios países.
Google AdWords: Google nos hará una selección de palabras interesantes con esta
herramienta originalmente pensada para AdWords, pero que ya es muy utilizada con
este propósito.
Google Suggest: No diseñado para esto, puede servirnos.
Google Zeitgeist: Lo más buscado, apto para saber las tendencias. Ofrece las
búsquedas más frecuentadas.
Punto 2: Calidad
La calidad es uno de los pilares de un buen posicionamiento en buscadores. El
contenido de calidad nos beneficia en muchos sentidos. Por un lado, la finalidad de los
buscadores es llevar a los internautas a aquello que buscan, y lo que buscan es calidad
y contenido útil para ellos. Entonces, tarde o temprano los buscadores irán afinando su
algoritmo hasta posicionar bien a las webs con contenido de calidad. Sobre todo, el
contenido de calidad hace que otras webs citen, enlacen y hagan publicidad de tu web
por su calidad, lo interesante que resulta o por ser, en general, de las mejores en su
ámbito.
La calidad no es el único factor. Por un lado hay webs puramente comerciales que no
pueden generar un contenido lo suficientemente interesante, de forma que otros lo
enlacen, por lo que el contenido de calidad es algo inaplicable en estos casos.
Por el otro lado, un contenido de calidad que nadie conoce no genera estos links de la
gente que valora nuestro trabajo, pues a la hora de la verdad, por desgracia, el
contenido y la calidad no lo son todo.
Punto 3: Optimizar la web
148
Los buscadores se fijan en ciertos aspectos de una web y le dan importancia a ciertos
factores. Por eso es muy importante saber qué valoran los buscadores en una página y
optimizarlos.
Para comenzar, mucha gente cree que los buscadores le dan mucha importancia a las
"metas", especialmente la meta keywords y la meta description:
<meta name="Keywords" content="Posicionamiento en 10 pasos,
tutorial, manual, SEO" />
<meta name="Description" content="Posicionamiento en 10 pasos" />
Esto no es verdad. La meta keywords (los buscadores grandes) la ignoran hoy en día.
Ni Google, Msn ni Yahoo! la valoran desde que se convirtió en puro spam. En la
actualidad se sigue usando básicamente por costumbre y porque hay algunos
pequeños buscadores que aún las usan, pero esta meta carece de gran valor a la hora
de la verdad. La meta description no cuenta para posicionar una web; no obstante es
importante tenerla, ya que, por ejemplo, Google la usa a veces para realizar el
"Snippet" de sus resultados (al buscar una web en Google, aparece su título, que es a
la vez un link, y luego aparece el snippet, que es una pequeña descripción o fragmento
de texto de la web; luego aparece la URL y otros datos). Una meta description
atractiva puede atraer visitantes si es usada como snippet.
Para hacer una meta keywords, introduce unas 30 palabras clave relacionadas con tu
página. Para la meta description usa una descripción de la web que sea atractiva para
quien la lea.
Hay una tag muy importante en el posicionamiento web y buscadores:
<title>Posicionamiento en 10 pasos</title>
A esta tag los buscadores le asignan mucho valor. De hecho es el título de la página, el
que aparece por ejemplo en los navegadores, en las pestañas y en la barra. Procura
hacer un título muy breve y con algunas de las keywords de esa página. Mejor si no
sobrepasa los 60 caracteres; así darás más densidad a tus keywords.
También se dice mucho que cuanta más densidad de las keywords tenga una web,
más alto estará posicionada. Esto no es del todo verdad. La densidad puede dar
resultados en algunos buscadores (se ha dicho mucho que Yahoo! la valora bastante),
y es recomendable que una web tenga un poco de densidad, pero que no sea
excesiva. Una muy elevada densidad podría hacer pensar a los buscadores que eres un
spammer. Consejo: hay herramientas online que calculan la densidad de keywords.
Encuentra con el buscador la palabra que desees y haz la media aproximada de
densidad de las keywords de las primeras webs para esa búsqueda. Así tendrás una
orientación.
149
Hay otras tags que sirven para indicar importancia. Procura poner algunas de ellas con
tus keywords: <h1> <h2> <h3> <h4> <h5> <h6> <b> <i><u> <strong>
Las <hx> indican títulos dentro de la página, siendo los de números más bajos los más
importantes <b> y <strong> negritas. Como siempre, úsalas con moderación.
Punto 4: Conseguir links
Este es un punto crucial. Para posicionar una web se valoran ciertos factores. Pues
bien, los enlaces que apuntan a una web es un factor muy importante para esta
valoración. Los links entrantes son interpretados por los buscadores como una especie
de voto a esa web. Normalmente, a la hora de diseñar webs se enlaza a webs
interesantes, de buena calidad... En definitiva, recomendamos al visitante una web, y
eso es lo que más valoran los buscadores.
Los buscadores básicamente valoran más los enlaces que en su "anchor text" (es el
texto del enlace; en las imágenes se considera el atributo ALT como su equivalente
para los buscadores) tengan la keyword y que vengan de webs de temática
relacionada.
¿Cómo deben de ser los enlaces?
Los enlaces más valiosos son los que vienen de webs relacionadas con nuestra
temática. Al contrario de lo que creen muchos, en esto el PR no vale para nada.
Hay links que no siguen los buscadores (y por eso no cuentan). Existen enlaces que
incluyen el atributo nofollow en la etiqueta <a>. Estos enlaces no son seguidos por los
buscadores. Si tienes Firefox, hay un plugin muy útil para detectarlos de forma fácil:
http://www.mundogeek.net/archivos/2005/03/16/nofollowalert-01/
No todos los links son igualmente válidos, y además nos pueden llegar a perjudicar.
Por un lado, debemos evitar una popularidad artificial, que está penalizada por los
buscadores. Además, debemos conservar una cierta naturalidad a la hora de conseguir
enlaces para no ser sospechosos a la vista de los buscadores.
Por un lado buscaremos una variación en el anchor text de los links, utilizando
nuestros anchors texts principales y consiguiendo otros enlaces con otros anchor texts
distintos.
También es de reseñar que es bueno conseguir enlaces a un ritmo constante y
tranquilo, ya que conseguir links de golpe y en gran cantidad puede hacer pensar a los
buscadores que intentamos manipular sus resultados.
150
Hay muchas formas de conseguir enlaces. Existen sistemas de intercambios de enlaces
gratuitos. Además, buscando en la red encontrarás multitud de webs deseosas de
intercambiar enlaces contigo. Pero si tienes que dar un link a cambio, evita
intercambiar con sites inapropiados.
Por otro lado, es normal entre webmasters enviar emails a gente que no conocemos,
para intercambiar enlaces.
Directorios: en Internet hay multitud de directorios webs donde podremos conseguir
links sugiriendo nuestras webs. Por ejemplo, www.DNVip.info
Punto 5: Indexación
La indexación es el proceso por el que el buscador va rastreando el sitio y va
incorporando a su base de datos el contenido de esas URLs.
Es muy importante, la indexación es lo único que puede hacer que tu web, tu trabajo
pueda aparecer en Google, toda página que el robot no haya rastreado ni indexado no
figurará en los resultados.
Los buscadores poseen un robot que es una especie de programa que se dedica a
rastrear las webs e incorporar lo que cree interesante a la base de datos de su
buscador, tanto para indexar nuevas webs como para actualizar los contenidos de su
base de datos.
Facilitar la indexación: lo básico.
Los buscadores no indexan todo lo que recorren; sólo indexan lo que creen oportuno.
Para mejorar nuestra indexación hay que conseguir que los robots pasen a menudo
por nuestras páginas, por lo que, a más pasadas, más probabilidades de que las acabe
indexando. Para aumentar la frecuencia de paso de los robots por nuestra web, hay
que conseguir links entrantes y actualizar a menudo nuestra web.
Para facilitar la indexación se puede empezar por evitar o arreglar las variables en las
URLs (URLs dinámicas) que, por ejemplo, puede generar el PHP. Para servidores que
corran sobre Apache existe un mod llamado mod_rewrite que sirve para reescribir
URLs, mediante el cuál y con un fichero.htaccess se puede convertir esa URL a ojos de
los buscadores en esta:http://www.dominio.extension/foro/index.php/board,4.0.html
en otra más atractiva a los ojos de los buscadores.
Punto 6: Actualizarse
151
Los buscadores cambian y evolucionan constantemente, y hay webs, blogs y foros que
te mantendrán informado de estos cambios. Encontrarás muchos más sitios donde
informarte, tanto en español como en inglés. Es importante, no obstante, escoger
fuentes fiables, ya que existen muchos en los que predominan leyendas urbanas y
gente que realmente no sabe.
Punto 7: Penalizaciones
La penalización es un método que tienen los buscadores para mejorar la calidad de los
resultados. Si detectan una web que hace trampas para acceder a los primeros
puestos, lo que hacen es penalizarla, que puede ser desde hacerla perder puestos
hasta quitarla de sus resultados.
a) Texto oculto
El texto oculto es una técnica que consiste en ocultar texto o links a los visitantes de
forma que sólo sea visible a los ojos de un robot buscador como Googlebot, Msnbot...
Con esto el webmaster llena de palabras clave la web (bien para aumentar la densidad
de palabras clave, bien para conseguir nuevas palabras claves) o pone links ocultos a
otras webs (práctica muy común, sobretodo entre empresas SEO). Las formas para
ocultar texto son muchas, desde poner el texto con el mismo color que el fondo, hasta
los más sofisticados que lo ocultan en el código, usando con malos fines etiquetas
como noscript o noembed entre otras.
b) Webs duplicadas
Las webs o páginas duplicadas consisten en crear webs idénticas, con el mismo
contenido. Con esto consiguen links para la web que realmente quieren posicionar.
c) Popularidad artificial
La popularidad artificial consiste en técnicas para aumentar de forma postiza los links
entrantes a una web. Hay diferentes modalidades:
-Spam en weblogs y libros de firmas
-Consiste en aprovecharse de blogs y libros de firmas para conseguir links.
-Las FFA (Free For All) y granjas de enlaces son webs dedicadas a dar enlaces sin
sentido de forma masiva. En unas puede ser gratis o pagando, pero la única finalidad
de estas webs es dar un enlace.
d) Cloaking
152
El cloaking es una sofisticada técnica mediante la cual se consigue hacer webs distintas
en función de quién la visite. Es útil para redireccionar a los visitantes a las páginas de
su idioma, deduciéndolo según su procedencia, por ejemplo.
El problema está si la única misión de este cloaking es presentar a los usuarios una
web normal y a los robots de los buscadores una página radicalmente distinta y
optimizada con fines de posicionar mejor.
e) Doorways
Las doorways son páginas web optimizadas para posicionar alto en los buscadores y,
normalmente, con una redirección que no ven los buscadores para que cuando llega
un visitante sea redirigido a la página correcta.
Punto 8: Altas en buscadores
Una vez que tenemos hecha nuestra página, lo siguiente que queremos hacer es
aparecer en los buscadores. Nos podemos dar de alta en buscadores, y casi todos los
buscadores disponen de formularios para hacerlo de forma fácil y sencilla. No obstante,
el alta en buscadores es una práctica poco provechosa y sin demasiados beneficios.
Será muy posible que navegando por la red topemos con webs que se dedican a esto,
y que quieran incluso cobrarnos por ello, prometiendo altas en miles de buscadores.
Realmente existen muchísimos buscadores, pero en la práctica sólo una decena de
buscadores aportan visitas alguna vez, ya que entre Google, Yahoo!, Msn y buscadores
que usan los datos de estos primeros (como Terra,
Ya.com o AOL, que tienen acuerdos con estos buscadores) acaparan casi la totalidad
del mercado, con más de un 95% de las búsquedas totales en la mayoría de países del
mundo, destacando América y Europa. Por ello el darse de alta en más de 30
buscadores no es ninguna prioridad ni algo realmente que dé demasiadas visitas, y
mucho menos sería lógico pagar a alguien para ello.
Recomendamos como mínimo: Google.com, Yahoo.com, MSN.com, Altavista.com...
Punto 9: Seguimiento
Para el posicionamiento es útil tener controladas las posiciones de nuestra web.
Con monitorizar nuestras posiciones conseguiremos actuar a tiempo en caso de
pérdida de posiciones, por si nos hubiesen penalizado u otros motivos. Para
monitorizar resultados hay programas y webs online. Especialmente popular para
controlar posiciones se ha convertido el programa Free Monitor for Google, un
153
programa gratuito por el que podremos controlar de forma cómoda nuestras
posiciones. Pero hay que tener en cuenta a la hora de controlar posiciones, por
ejemplo, los movimientos bruscos. Es habitual encontrarse sustos como pérdidas de
posiciones repentinamente o cualquier cambio impensado. En posicionamiento esto
habitual y normal, especialmente para webs nuevas. Normalmente los buscadores
pueden darnos estos sustos que muchas veces duran sólo unos días como máximo.
Antes de alarmarse es mejor esperar unos pocos días. En estos movimientos bruscos
juegan un peso importante los datacenters de Google, por ejemplo.
Controlar las visitas
Es también muy importante ver como evolucionan las visitas y ver si se obtienen las
visitas que esperamos, ver nuestros logros, ver dónde vamos bien y dónde vamos mal.
Nos será útil también ver quién nos enlaza o descubrir nuevas keywords interesantes
para posicionar páginas web.
Hay muchas formas de controlar estas visitas. Existen muchos servicios online con los
que copiando un pequeño código en nuestras páginas conseguiremos tener unas
estadísticas sobre nuestras visitas. Para usuarios más avanzados existen también
scripts que instalando en nuestro servidor también nos darán los datos que deseemos,
por ejemplo phpMyVisites, PowerPhlogger..., entre muchos otros. También nuestro
Hosting de pago es posible que nos proporcione en nuestro panel de control
estadísticas más fiables (puesto que se basan en los logs) como Webalizer o los
atractivos a la vista Urchin y AWStats.
Top Related