Sunteți pe pagina 1din 20

Instalar un servidor con ubuntu-server

¿Qué se necesita?

Línea ADSL con el mayor upload posible. Mi ADSL es la típica línea de pueblo de 1 mega de
bajada y 256 k de subida.

Un router. Es suficiente con un viejo router de 4 puertos. Si tienes un router wifi es preferible
que también tenga conexión por cable pues el servidor será más rentable enchufado directamente
con un cable de red al router.
Si piensas comprar uno te recomiendo un LinkSys

Un ordenador dedicado que hará de servidor. Puedes aprovechar un viejo ordenador o comprar
uno de segunda mano (el monitor, teclado y tarjeta gráfica sólo lo vas a necesitar durante la
instalación del sistema Operativo: unos 15 minutos).
Recomiendo comprar por Internet en las empresas que se dedican a vender PCs de segunda mano
y recomiendo comprar un ordenador tipo IBM, DELL, etc. por que aguantan sin fallar años y años
y porque usan unas fuentes de alimentación muy silenciosas (ten en cuenta que tu servidor estará
encendido las 24 horas durante todos los días del año).
Estos ordenadores suelen tener agunas opciones interesantes en la BIOS como por ejemplo poder
decirle qué tiene que hacer tras un corte de luz (encenderse o permanecer apagado). Si tras un
corte de luz tu servidor no se vuelve a encender y estás lejos de casa ..

¿Una IP fija?. Es preferible IP fija entre otras cosas porque puedes redireccionar un dominio a tu
IP, pero también se puede con IP dinámica. Retomaremos el tema de la IP en los siguientes
artículos.
Instalando ubuntu-server

Al optar por ubuntu-server, una distribución de Linux específica para servidores nos ahorraremos
el tener que instalar manualmente apache y otros programas necesarios para un servidor.

Datos de partida

Servidor:: Procesador Intel Pentium IV 2.4Ghz, RAM 1GB, disco duro 20GB, Tarjeta de Red.
(segunda mano: unos 150€)
Router: Antiguo router 3com de 4 puertos (sin wifi)
IPs locales (sin DHCP, prefiero ponerlas de forma manual)
Router: 192.168.2.1
Servidor: 192.168.2.20 (la que pienso asignarle)
Otros ordenadores de la red: 192.168.2.2, 192.168.2.3, etc.

Descargamos ubuntu-server

Podemos descargarlo de la web http://www.ubuntu.com/getubuntu/download. Yo lo he


descargado directamente de http://es.releases.ubuntu.com/feist...
Grabamos la imagen obtenida en un CD

Instalamos ubuntu-server

Necesitamos el servidor, con pantalla, teclado y lector de CD (posteriormente será controlado


desde cualquier otro ordenador de nuestra red local y podremos desconectarle pantalla, teclado,
lector de CD, etc.), un cable de red del servidor al router
Comprobamos que la BIOS de nuestro servidor tiene activada la opción de iniciar desde CD
Introducimos el CD y reiniciamos.
La instalación es en modo texto muy parecida a las instalaciones de Debian.

Con F2 podemos seleccionar idioma


Antes de la instalación podemos chequear el CD (para asegurarnos que la copia está en buen
estado) y opcionalmente podemos chequear la memoria del servidor (si es un ordenador de
segunda mano deberíamos asegurarnos de que la memoria está en buen estado).
Tras los chequeos (opcionales) previos podemos pasar a la opción Instalar en el disco duro

Hay algunas decisiones que debemos tomar durante la instalación:


Configurar la red: No configurar la red en este momento. Prefiero hacerlo posteriormente a
mano.
Particiones: podemos crear distintas particiones para el sistema (/), para los usuarios (/home),
otra para (/var), otra para (/tmp), etc. (sin olvidarnos de la de intercambio). Yo particularmente
elijo "Particionado guiado: usar todo el disco" pues cuento con un disco de solo 20 gigas (para
practicar). Posteriormente pondré un disco duro con más capacidad (y más rápido si es posible) y
entonces si que haré las particiones.
LAMP server: elegimos la opción LAMP (Linux, Apache, MySQL, PHP)

A los 9 minutos de pulsar "Instalar en disco duro" finaliza la instalación, expulsa el CD y se


reinicia en modo texto.

Sobre las particiones

El servidor lubrin.org tiene ahora mismo usado:


512 MB de intercambio (quizás en algún momento llegue a usarla toda)
562 MB en la partición del sistema (/). Con una partición de 1 giga bastaría
450 MB en la partición temporal (/tmp). No creo que llegue a usar toda la memoria nunca
523 MB en la partición (/home).
8.5 GB en la partición (/var)

En las dos últimas particiones .. el espacio depende las webs a colgar (el administrador puede
poner las webs en /var y los usuarios (a los que ofrezca espacio web) en la partición /home
(también debe tener en cuenta que si ofrece cuentas de correo ocuparán espacio en /home).

Puede que le interese leer algunos conceptos sobre particiones.

Conexión de red y conexión a Internet

Durante la instalación ubuntu trata de configurar la red para quienes usen DHCP (el DHCP da las
IPs de forma automática a todos los ordenadores de tu red local y se suele configurar en el
router).
Si prefieres la configuración manual (en lugar de DHCP) también fue posible realizarla durante la
instalación de ubuntu-server.
Tanto si configuraste la red manualmente durante la instalación, como si lo dejaste para más
tarde (como suelo hacer yo), es hora de comprobar (o crear) la configuración.

El hacer la configuración de la red manualmente tiene sus desventajas, pero también tiene la
ventaja de que aprendes en qué ficheros se guardan los datos y qué ficheros tienes que mirar
cuando algo no funcione.

Los ficheros que controlan la configuración de la red en Debian (y por tanto en su derivada
ubuntu) son: /etc/network/interfaces y /etc/resolv.conf. Esos son los ficheros que debemos
comprobar, modificar o crear (si no existen).

Contenido de /etc/network/interfaces

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface


auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.20
netmask 255.255.255.0
gateway 192.168.2.1

address: la IP del servidor


netmask: mácara de red (deja esos números si no entiendes su significado)
gateway: es la IP del router
eth0: es la tarjeta de red (una segunda tarjeta de red se llamaría eth1)

Si miras el /etc/network de tu ordenador verás unos datos iguales a los anteriores (salvo address
que será otra IP del tipo 192.168.2.x). Por ejemplo mi portátil da estos datos:
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface


auto lo
iface lo inet loopback

iface eth1 inet static


address 192.168.2.13
netmask 255.255.255.0
gateway 192.168.2.1
wireless-essid xxxxxxxxx
wireless-key XXXXXXXXXX
...

auto eth1

Las diferencias son:

eth1 (porque uso la tarjeta de red inalámbrica, la tarjeta normal es eth0)


otros datos relativos a la wifi (nombre de la red, contraseña, etc.)

Con la configuración del /etc/network/interfaces nuestro servidor tendrá conexión en red con el
resto de nuestra red local (el router, nuestro ordenador normal, un portátil, etc.).

Si hemos hecho cambios en el /etc/network/interfaces debemos reiniciar la red con el comando:

$ sudo /etc/init.d/networking restart

Si estamos acostumbrados a usar Debian y no nos va el sudo, podemos simplemente hacer un: $
sudo su y ya no necesitamos preceder las órdenes con el sudo.

Comprobamos que funciona la red: Desde nuestro ordenador le hacemos un ping al servidor a ver
si responde:

~$ ping 192.168.2.20
PING 192.168.2.20 (192.168.2.20) 56(84) bytes of data.
64 bytes from 192.168.2.20: icmp_seq=1 ttl=64 time=1.15 ms
64 bytes from 192.168.2.20: icmp_seq=2 ttl=64 time=1.18 ms
64 bytes from 192.168.2.20: icmp_seq=3 ttl=64 time=1.08 ms
64 bytes from 192.168.2.20: icmp_seq=4 ttl=64 time=1.29 ms

--- 192.168.2.20 ping statistics ---


4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 1.088/1.179/1.293/0.074 ms

Pulsando <Ctrl>+<C> paramos los pings. Al final de las líneas anteriores se nos indica el tiempo
de respuesta en milisegundos.

Si no responde obtendríamos una respuesta del tipo:


$ ping 192.168.2.43
PING 192.168.2.43 (192.168.2.43) 56(84) bytes of data.
From 192.168.2.13 icmp_seq=2 Destination Host Unreachable
From 192.168.2.13 icmp_seq=3 Destination Host Unreachable
From 192.168.2.13 icmp_seq=4 Destination Host Unreachable

--- 192.168.2.43 ping statistics ---


4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2999ms
, pipe 3

Observa que he hecho un ping a un ordenador inexistente (192.168.2.43), por eso me dice
Destination Host Unreachable.

Si tu servidor no responde a los pings comprueba:

Que tu /etc/network/interfaces es correcto


Que has reiniciado la red ($ sudo /etc/init.d/networking restart) en caso de que hayas
modificado el fichero anterior
Que tu cable de red funciona (mira si tiene luz verde en ambos extremos: router y servidor)

Contenido de /etc/resolv.conf

nameserver x.x.x.x
nameserver x.x.x.x

En este fichero se almacenan las DNS que te ha proporcionado tu proveedor de Internet. En


realidad puedes poner otras DNS aunque no sean de tu proveedor, por ejemplo:
nameserver 80.58.32.97

Las DNS lo único que hacen es traducir los nombres de dominio a direcciones IP. Por ejemplo si en
tu navegador tecleas: http://217.127.159.76 accederás a la web de lubrin,org. Si tecleas
http://lubrin.org serán tus servidores DNS quienes se encarguen de traducir lubrin.org por
217.127.159.76

Es importante conocer esos detallesy es importante tener al menos dos nameserver en nuestro
/etc/resolv.conf. Hay veces en que no tenemos acceso a Internet (o creemos que no lo tenemos)
y es porque el servidor DNS de nuestro proveedor está caído provisionalmente. Si tenemos
puestas dos DNS y además son de proveedores distintos es muy difícil que ambos estén caídos
simultáneamente. Para esos casos también es conveniente tener a mano las IP de alguna web
(como por ejemplo las de google). Si quieres saber cuáles son las IPs (tiene más de una) de
google, puedes teclear en consola $dig google.es.

Una vez comprobado que nuestro servidor conecta con el resto de nuestra red local, deberíamos
comprobar que también puede conectar con Internet:

$ ping 72.14.221.104
PING 72.14.221.104 (72.14.221.104) 56(84) bytes of data.
64 bytes from 72.14.221.104: icmp_seq=1 ttl=240 time=131 ms
64 bytes from 72.14.221.104: icmp_seq=2 ttl=240 time=116 ms
64 bytes from 72.14.221.104: icmp_seq=3 ttl=240 time=338 ms

--- 72.14.221.104 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 116.995/195.517/338.426/101.216 ms

Desde el servidor he hecho un ping a una de las IPs de google.es por lo tanto nuestro server está
en condiciones de comunicarse con el resto del mundo.

Actualizando los repositorios

Puesto que necesitaremos instalar más programas y sabiendo que nuestro server puede conectar
con Internet, lo primero es actualizar la lista de paquetes:

$ sudo apt-get update

Si funciona podemos eliminar el CD de la lista de repositorios y volvemos a hacer apt-get update.


De aquí en adelante trabajaré como root ($sudo su) para no tener que teclear ’sudo’ en todas las
órdenes.

Modifico el /etc/apt/sources.list para eliminar el CD de la lista.

# nano /etc/apt/sources.list

Comento la línea del CD para que no la use:

# deb cdrom:[Ubuntu-Server 7.04 _Feisty Fawn_ - Release i386 (20070415)]/ feisty main
restricted

Vuelvo a actualizar:

# apt-get update

Instalando ssh

El programa fundamental para poder acceder de modo seguro a nuestro servidor (desde otros
ordenadores de nuestra red o desde internet) es ssh. Para instalarlo:

# apt-get install ssh

Comprobamos que funciona:

$ ssh dani@192.168.2.20
The authenticity of host '192.168.2.20 (192.168.2.20)' can't be established.
RSA key fingerprint is d8:a9:c4:5e:2b:4f:b0:aa:a5:b9:d1:de:f8:5e:df:36.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.20' (RSA) to the list of known hosts.
dani@192.168.2.20's password:
Linux ubuntu-sotano 2.6.20-15-server #2 SMP Sun Apr 15 07:41:34 UTC 2007 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Fri Jun 8 00:55:00 2007

Desde este momento ya podemos retirar del servidor: monitor, teclado, ratón, tarjeta gráfica,
lector de CD.

El servidor será controlado mediante ssh desde cualquier ordenador de nuestra red local (y
posteriormente desde cualquier ordenador de Internet)

Configuración de Apache

Los siguientes pasos serían: configurar apache y poner una página de prueba (para comprobar
que funciona en local), preparar nuestra salida a Internet (para que nuestras páginas sean visibles
desde cualquier lugar del mundo) y posteriormente configurar PHP y MySQL con objeto de instalar
algún Gestor de Contenido o preparar páginas dinámicas.

Antes de empezar con Apache, instalaremos los "locales" para que los programas usen nuestro
idioma:

# apt-get install locales gettext

Podemos comprobar el idioma por defecto tecleando # locale


Si tuviésemos algún problema con los mismos, podríamos regenerarlos con
# dpkg-reconfigure locales

Configuración de Apache

El programa encargado de servir las peticiones de páginas web a los usuarios se llama servidor-
web. El más usado en los servidores de Internet es Apache. Es software libre y se instala
automáticamente durante la instalación de ubuntu-server.

En primer lugar comprobamos que está funcionando tecleando en un navegador de nuestro PC:
http://192.168.2.20
Veremos una web con algún mensaje de apache como por ejemplo "It works!", lo cual confirma su
funcionamiento.

Para configurar apache necesitamos editar el fichero /etc/apache2/apache2.conf en el que tan


sólo añadiremos una línea: ServerName nombre_del_servidor

Mi fichero /etc/apache2/apache2.conf quedaría así:

# Añadidas por Dani


ServerName lubrin.org
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
...

El segundo fichero importante de apache que debemos configurar es /etc/apache2/sites-


available/default

# nano /etc/apache2/sites-available/default
NameVirtualHost *
<virtualhost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/html/
<directory />
Options FollowSymLinks
AllowOverride None

<directory /var/www/html>
Options -Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/
</directory></virtualhost>

Las líneas que he modificado son:

DocumentRoot /var/www/html/
<directory /var/www/html>
Options -Indexes FollowSymLinks MultiaViews #negamos indices
AllowOverride AuthConfig # por si después ponemos alguna
carpeta con acceso restringido
# RedirectMatch ^/$ /apache2-default/ #comentada para evitar
que redirija a apahe2.default
</directory>

El DocumentRoot será /var/www/html por tanto las páginas web que creemos debemos
colocarlas en la carpeta /var/www/html (si no tienes esa carpeta .. deberías crearla con #
mkdir /var/www/html)

La opción -Indexes significa que deniega índices. Cuando un cliente teclea la ruta de una
carpeta en la que no hay fichero index.html ni index.php, etc. el "-Indexes" evita que le muestre
el listado de ficheros de la carpeta.

Actualizamos los cambios en apache reiniciándolo (/etc/init.d/apache2 restart) o en lugar de


reiniciarlo, mejor simplemente le decimos que relea la nueva configuración:

# /etc/init.d/apache2 force-reload

La primera web de prueba


Para comprobar que funciona correctamente ponemos nuestra primera web de prueba.

# nano /var/www/html/index.html

<html>
<h1>Probando</h1>
áéíóúñÑÁÉÍÓÚ
</html>

Ahora comprobamos que se visualiza correctamente apuntando nuestro navegador a


http://192.168.2.20

Salida a Internet

Antes de crear páginas con cierta calidad debemos asegurarnos que podemos darles salida a
Internet, es decir, que otras personas puedan verlas desde cualquier lugar con acceso a Internet.

Conceptos previos

Para ello nuestro router debe estar configurado en modo multipuesto. De esa forma, el router
tendrá, además del cable de conexión a la red eléctrica, un cable conectado a la línea telefónica
(ADSL por ejemplo) y varios cables (uno por ordenador) conectados a cada uno de nuestros
ordenadores en red. Si el router es wifi o mixto no necesitaría los cables router-ordenador en los
casos de un portátil u otro ordenador que disponga de tarjeta de red inalámbrica.
En ese caso todos los ordenadores conectados al router tienen la misma preferencia y cuando un
ordenador realiza una petición a Internet (por ejemplo solicita una web), pasa por el router, que
es quien la solicita a Internet, la respuesta de Internet (la página pedida en nuestro caso) le llega
al router y este la pasa al ordenador que hizo la petición.

El caso contrario es el que debemos configurar. Si es una persona de Internet quien solicita
nuestras páginas, la solicitud pasa por el router y éste debe saber a qué ordenador le pasa la
petición, es decir el router debe saber en qué ordenador de nuestra red local está el servidor (el
encargado de servir las páginas web).

Los ordenadores de nuestra red local se identifican con las IPS internas (192.168.2.x) y debemos
recordad que el servidor lo tenemos en la IP 192.168.2.20. Bastaría con darle esta IP al router.

Por tanto .. al router hay que decirle que las peticiones de páginas web las pase a 192.168.2.20.
Sin embargo puede que no interese que pase al servidor otras peticiones que no sean web. Por
ejemplo si usamos un programa P2P (tipo aMule) o algún programa de mensajería instantánea
(tipo MSN) no deberíamos dejar que esas transferencias pasen al servidor (pues las solemos
hacer con nuestro ordenador particular, que es distinto al servidor). La manera de distinguir los
diferentes servicios (web, FTP, P2P, etc.) es por el puerto que usan. Normalmente:

web: puerto 80
FTP: puerto 21
correo: puerto 25
etc.
En definitiva .. al router hay que decirle que las peticiones al puerto 80 (web) las redirija al
servidor 192.168.2.20. Es decir, hay que redireccionar puertos en el router, también llamado
mapear puertos o NAT (Network Address Translation).

¿Cómo se redireccionan los puertos?

Cada router es un mundo. Consulta el manual de tu router o busca ayuda en páginas como
www.adslayuda.com, www.bandaancha.st, etc. (en esas páginas encontrarás manuales para casi
todos los routers)

¿Qué url tienen que teclear los que quieran acceder a nuestras páginas?

Deberían teclear nuestra IP pública o externa de la forma: http://x.x.x.x

Recordemos los conceptos de IPs fijas y dinámicas, dominios, etc. Debemos distinguir entre las
IPS internas de nuestra red local, que son números muy parecidos o iguales de una red a otra, y
las IPs externas o públicas que son únicas: cada ordenador conectado a Internet tiene una IP
única (no puede haber dos iguales).
Dentro de estas IPs públicas podemos distinguir entre fijas y dinámicas. Actualmente los
proveedores de Internet suelen dar IPS dinámicas (cambian con cada conexión) y para conseguir
una IP fija hay que pagar un poco más.

Averiguando nuestra IP

Tanto si tenemos IP fija o dinámica podemos averiguar nuestra IP pública actual en el enlace
http://www.internautas.org/w-locali...).
Supongamos que nuestra IP es 200.200.200.200. Cualquier persona que quiera acceder a
nuestras páginas tendrá que teclear http://200.200.200.200
Como los números suelen ser difíciles de recordar, se suelen usar urls con letra del tipo
"midominio.com" que los servidores DNS traducirán a números. Por ejemplo las siguientes
direcciones son la misma:
http://lubrin.org
http://217.127.159.76

En resumen

Una vez que tengamos claros todos los conceptos anteriores, para la salida a Internet
necesitamos:

Redireccionar el puerto 80 en el router hacia el servidor


Conocer cuál es nuestra IP pública

Probando

Es imposible comprobar nuestra salida a Internet desde dentro de nuestra red local, pues la
petición de página al router debe llegarle desde fuera. Debemos ir a un ordenador fuera de
nuestra red local y teclear http://200.200.200.200 para comprobar si se ven nuestras páginas.
Otra opción sería pedirle a otra persona que lo haga por nosotros y una tercera sería usar
navegación anónima.
Cuando hacemos navegación anónima nuestras peticiones van al servidor de navegación anónima,
que es el que se encarga de hacer la petición web y de recibir la página o resultado y finalmente
enviárnolas.

Si al servidor anónimo le pedimos nuestra propia página, entonces será el anónimo quien haga la
petición a nuestro router y por tanto vendrá de fuera y así comprobaremos si nuestro server tiene
salida a Internet.

Hay muchos servidores de navegación anónima, por ejemplo http://www.megaproxy.com/

Dominio

Un dominio es un nombre que identifica a un sitio web


Ejemplos de dominios son:
lubrin.org
google.es
cibermatex.com
etc.
El nombre consta de dos partes:

1. nombre (parte anterior al punto)


2. extensión (com, org, net, es, ar, etc.)

Cuando compramos un dominio estamos comprando un nombre y mientras sea de nuestra


propiedad, nadie puede usar ese nombre.
Por ejemplo mi dominio lubrin.org me pertenece y nadie (aparte de mí) puede tener una web de
nombre lubrin.org

En realidad no compramos el dominio, sino que lo alquilamos por un periodo de tiempo (mínimo
un año) pero con derecho a renovar el alquiler todas las veces que queramos. Cuando dejemos de
pagar el dominio, quedará libre y cualquier otra persona o empresa podrá adquirirlo.
Recordemos la época en que comprar dominios podía ser un gran negocio: se compraba el
dominio granempresa.com y cuando ’granempresa’ quería tener presencia en Internet,
comprobaba que su nombre de dominio pertenecía a otra persona (la cual le pedía una
considerable cifra por venderle el nombre de dominio).

Comprar un dominio

Aunque la compra de un dominio se puede gestionar directamente, conlleva demasiados trámites


y dificultades.
Afortunadamente existen muchas empresas que se dedican a gestionar la compra de un dominio y
a través de ellas podemos gestionar la compra en unos minutos.
En torno a los 15 euros/año puede valer un dominio. Yo los suelo gestionar con la empresa
sync.es. Otra de las más populares en España es arsys.es.
Los dominios .com y .org son más fáciles de gestionar que los .es
Si va a contratar su primer dominio .. le aconsejo un .com o .org
SubDominios

Los subdominios son una especie de divisiones dentro de los dominios.


Veamos un ejemplo:

dominio: google.es
subdominio1: video.google.es
subdominio2: news.google.es
subdominio3: www.google.es

Muchos usuarios de Internet piensan que las páginas tienen que empezar por www y sin
embargo el www es un subdominio más.

Direcciones IP, Nombres de dominio y DNS

La dirección IP pública es única para cada ordenador que se encuentre conectado a Internet.

¿Para qué sirven estas IPs? Pues evidentemente para identificar a cada dispositivo (que puede
ser ordenador, router, etc.) conectado a Internet. Cuando un ordenador solicita una página web,
debe tener un identificativo único para saber quién ha solicitado esa página y por tanto a quién se
le tiene que enviar.

Los servidores de internet también tienen sus IPs. Si tecleamos en nuestro navegador:
http://76.163.134.23
obtendremos la misma web que si tecleamos:
http://cibermatex.com
Sin embargo el nombre cibermatex.com resulta más fácil de recordar que la IP: 76.163.134.23

Los servidores DNS (Domain Name Server) se encargan de traducir los nombres de dominio a
sus correspondientes IPs, de forma que cuando tecleamos cibermatex.com lo traduce por
76.163.134.23

Cuando configuramos nuestra conexión a Internet, además de usuario y contraseña, nuestro


proveedor nos suele facilitar una o varias DNS, es decir, las direcciones IP de los DNS de nuestro
proveedor.

Cuando tecleamos en Firefox (u otro navegador .. que aún queda gente que usan Explorer) la
url http://cibermatex.com nuestro ordenador conecta con el DNS de nuestro proveedor, que se
encarga de traducir el nombre a IP y nos conecta con la web http://76.163.134.23

Hay veces en las que creemos que nuestra conexión a Internet ha caído, pues tecleamos
http://google.es y no obtenemos respuesta. Sin embargo puede que tecleando
http://72.14.221.104/ si obtengamos respuesta. Eso significa que nuestra conexión a Internet
funciona perfectamente, pero el servidor DNS se encuentra caído momentáneamente y no puede
traducir los nombres (por eso tecleando la IP directamente si entramos).

Es posible usar DNS de otro proveedor pues normalmente suelen ser públicos estos servidores.
Hay webs donde nos dicen qué servidores DNS están respondiendo más rápido:
http://www.adslayuda.com/modulo-FSD...

También podemos instalar nuestro propio servidor DNS en nuestro ordenador y así accedemos
más rápido a las webs (eso será materia de otro artículo)
Algunos trucos

Podemos conocer la IP de un dominio tecleando en una terminal dig dominio:

$ dig cibermatex.com

; <<>> DiG 9.3.4 <<>> cibermatex.com


;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37131
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;cibermatex.com. IN A

;; ANSWER SECTION:
cibermatex.com. 85914 IN A 76.163.134.23

;; Query time: 64 msec


;; SERVER: 80.58.0.33#53(80.58.0.33)
;; WHEN: Tue Aug 21 00:17:33 2007
;; MSG SIZE rcvd: 48

Entre otras cosas .. nos está diciendo que:


La IP de cibermatex.com es 76.163.134.23
Ha usado el servidor DNS 80.58.0.33
Ha tardado en resolver 0,064 segundos

Podemos incluir en nuestro fichero /etc/hosts los nombres de dominio e IPs de las webs que
visitemos con más frecuencia. En ese caso se resolverán en menos de esos 0,064 segundos.

Bastaría añadirle al fichero la línea:

76.163.134.23 cibermatex.com

para ganar unas milésimas de segundo cada vez que conectemos con la web cibermatex.com.
Puede que piense que no merece la pena .. pero hay veces en que los DNS tardan en resolver
incluso más de un segundo.

IP Fija y dominio de pago

Con IP fija tenemos algunas ventajas (montar servidores web, ftp, correo, etc.) y alguna
desventaja (somos más vulnerables a los ataques hackers a nuestro servidor y disponemos de
menos privacidad cuando navegamos).

Si disponemos de IP fija todo resulta más fácil a la hora de montar un servidor y gestionar un
dominio.
Cuando se contrata un dominio, hay que configurarlo y la opción principal es decirle a qué IP FIJA
hay que redireccionarlo. En la web de la empresa donde hayamos contratado el dominio
tendremos acceso a un panel de control donde podemos configurar nuestro dominio.
En nuestro caso lo redireccionaremos a nuestra IP fija. Hay que tener en cuenta que los cambios
no son inmediatos. Esa redirección se tiene que propagar por los servidores DNS de todo el
mundo. Como mucho en uno o dos días estará propagado completamente, entonces cuando se
teclee en cualquier ordenador del mundo "http://midominio.com" será redireccionado a nuestra
IP. Entonces interviene el router que dirigirá la petición al servidor (a la IP local donde tengamos
el servidor) y el servidor mostrará la página.

También es posible redirigir el dominio a cualquier dirección web. Si no disponemos de servidor,


pero disponemos de una web (http://direccion/miweb/index.html) podemos redirigir el dominio a
esa web. En ese caso debemos ajustar la configuración del dominio de forma que cuando se teclee
en un ordenador http://midominio.com nos dirija a http://direccion/miweb/index.html, pero en la
barra del navegador sigamos viendo http://midominio.com

Siguiendo con nuestro caso (IP fija y dominio redirigido a esa IP) debemos recordar que no
podremos acceder desde nuestra red local tecleando http://midominio.com.
Para acceder desde nuestra red local, debemos teclear http://ip_local_del_servidor.

Para evitar eso podemos hacer un pequeño truco: modificar el fichero /etc/hosts de los
ordenadores de nuestra red local

Abrimos el fichero /etc/hosts con algún editor:

$ sudo gedit /etc/hosts

le añadimos al final la línea:

192.168.2.20 midominio.com www.midominio.com

donde 192.168.2.20 es la ip local de nuestro servidor. Después de guardar el fichero podemos


teclear http://midominio.com ó bien http://www.midominio.com igual que si estuviésemos en
cualquier ordenador de Internet (fuera de nuestra red local).

Si en la red local tenemos algún ordenador con otro S.O. también es posible modificar el fichero
hosts, aunque debe conocer su localización:

Windows 95/98/Me: C:\Windows\Hosts


Windows NT/XP/Vista/etc.: C:\WINNT\System32\drivers\etc
Linux: /etc/hosts
MacOS : /etc/hosts
UNIX: /etc/hosts

IP Fija y dominio gratuito

Al precio actual de los dominios, casi no merece la pena obtener uno gratuito. Sin embargo
siempre nos puede venir bien para hacer pruebas.

En www.dyndns.com podemos crearnos una cuenta y elegir un dominio gratuito que será de la
forma midominio.dyndns.org (hay otros nombres para elegir).
Dicho dominio lo redireccionamos a nuestra IP fija y ya podemos teclear desde cualquier
ordenador de Internet http://midominio.dyndns.org
IP dinámica y dominio gratuito

Usaremos www.dyndns.com u otra página como www.no-ip.com para conseguir un dominio


gratuito y redireccionarlo a nuestra IP dinámica.

Al ser la IP dinámica, cuando desconectemos nuestro servidor y volvamos a conectar tendremos


otra IP distinta .. ¿Cómo saben dyndns o no-ip que nuestra IP ha cambiado?
No lo saben, tenemos que decírselo. Afortunadamente disponen de un programa cliente
(disponible para varios Sistemas Operativos además de Linux) que debemos bajarnos e instalarlo.
El programa se encarga de cachear constantemente nuestra IP y enviar la nueva cada vez que
cambie.

Posiblemente estos programas en su versión Linux (no-ip, inadyn, etc.) se encuentren en los
repositorios y se puedan instalar mediante $sudo apt-get install no-ip.

IP dinámica y dominio de pago

Mi ADSL es de las primeras y entonces nos asignaban IP fija (y así sigo) por lo que no me es
posible comprobar los temas de IP dinámica. Sin embargo, aunque no es posible redirigir un
dominio directamente a una IP dinámica, si que debe funcionar (casi seguro) lo siguiente:
Adquiero un dominio gratuito midominio.dyndns.org y lo redirijo a mi IP dinámica
Descargo e instalo el programa que actualiza la IP y la convierte en prácticamente fija
Contrato un dominio de pago (midominio.com) y lo redirijo, no a una IP fija, sino a una página:
http://midominio.dyndns.org

De esa forma cuando alguien en Internet teclee http://midominio.com será enviado a


http://midominio.dyndns.org y a su vez redirigido a nuestra IP dinámica actual.

Para finalizar no debemos olvidar otras dos posibles soluciones a las IP dinámicas:
la más fácil: pagar a nuestro proveedor de Internet por una IP fija (suelen cobrar una cuota
mensual; telefónica España cobra sobre los 12€/mes)
existen proveedores de Internet que a pesar de darte IP dinámica, no te la cambian a no ser
que estés desconectado varios días (lo normal es que el proveedor te cambie la IP apenas estés
10 minutos desconectado).

Servidor compartido: multidominios

Posteriormente se tratará sobre cómo ofrecer páginas personales en nuestro servidor, con urls del
tipo "http://midominio.com/usuario".

Sin embargo a veces se hace necesario que en nuestra única IP y en nuestro único servidor
cohabiten varios dominios.

Los diferentes dominios estarán alojados en diferentes carpetas y/o rutas de nuestro servidor.
No es misión del router, pues se encarga de redirigir las peticiones web de internet a la IP local
donde está el servidor.
Es el servidor quien debe diferenciar dos peticiones del tipo:

1. http://dominioA.com/pagina
2. http://dominioB.com/pagina

Por tanto .. es la configuración de apache lo que debemos tocar.


El servidor web apache permite los virtualhosts o dominios virtuales

En el capítulo Configuración de Apache veíamos como configurar el dominio virtual por defecto.
Recordemos que en el fichero /etc/apache2/sites-available/default teníamos una
configuración del tipo:

NameVirtualHost *
<virtualhost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/html/
...
</virtualhost>

Para que nos admita un segundo dominio bastaría con copiar lo que hay entre las etiquetas
<virtualhost *> ... </virtualhost>

Pero claro .. para que distinga entre ambos dominios debemos poner un ServerName diferente a
cada uno y un DocumentRoot también distinto a cada uno. En definitiva nos debería quedar algo
parecido a:

NameVirtualHost *
<virtualhost *>
ServerAdmin webmaster@dominioA.com
ServerName dominioA.com
ServerAlias *.dominioA.com
DocumentRoot /var/www/dominioA/
...
</virtualhost>
<virtualhost *>
ServerAdmin webmaster@dominioB.com
ServerName dominioB.com
ServerAlias *.dominioB.com
DocumentRoot /var/www/dominioB/
...
</virtualhost>

Podemos observar que cada virtualhost tiene un nombre: ServerName, un alias: ServerAlias y una
carpeta base: DocumentRoot. La carpeta /var/www ya existe, pero deberíamos crear las
carpetas /var/www/dominioA y /var/www/dominioB para alojar las páginas de cada dominio.

Entradas desde fuera de nuestra red local (cualquier sitio de Internet): no se si es necesario
recordar que tanto dominioA.com como dominioB.com tienen que ser dominios registrados y
configurados para que apunten a nuestra IP.
Entradas desde nuestra red local: aquí cobra especial importancia el ServerAlias que junto al
/etc/hosts de los ordenadores de la red pueden hacer que con sólo teclear en nuestro navegador
"A" nos lleve a las páginas de /var/www/dominioA (lo dejo como práctica para el lector).

He puesto las directivas principales en cada virtualhost, pero se pueden usar todas (o casi todas).
Por ejemplo la directiva que controla donde se almacenarán los logs debe ser también distinta
para cada virtualhost:
CustomLog /var/log/apache2/access_domA.log combined .
En algunos hosting donde se contrata un espacio (en servidor Linux compartido) tienen en su
panel de control un apartado de texto plano donde podemos rellenar todas las directivas de
nuestro virtualhost. Eso hace que prácticamente podamos configurar nuestro dominio y espacio
web como si el servidor fuese nuestro.

Dominio compartido: varios servidores

¿Por qué tener varios servidores si apenas puedo montar uno?

No se trata de tener varios servidores interconectados tipo google para que sirvan las mismas
páginas, sino de tener varios ordenadores-servidores que sirvan distintos contenidos.

¿Por qué servir distintos contenidos si eso ya lo puede hacer un sólo servidor .. incluso
multidominio? Aunque este punto parezca avanzado .. hay un caso práctico que puede venir bien
a principiantes:

Imagina que en tu escuela, empresa, etc. ya tienen un dominio y un servidor en producción


("servidor en producción" significa sencillamente "servidor funcionando" .. no debemos mirarlo
desde el punto de vista comercial). Si queremos practicar podemos poner otro servidor en otro
viejo PC o en nuestro portátil sin que afecte para nada al existente.

Cuando se teclee http://midominio.com ¿a qué servidor irá?

Supongamos que el servidor principal está en 192.168.2.20 y queremos poner un segundo


servidor en 192.168.2.40.
Sabemos que el router tiene el puerto 80 mapeado (redirigido) al servidor 192.168.2.20 de forma
que cuando alguien apunte a http://midominio.com será redirigido al servidor.
La solución es usar otro puerto, por ejemplo el 8080, el 8000, el 8765, etc.
Usaremos para nuestro segundo servidor el puerto 8765.

Pasos a seguir

En primer lugar mapeamos el puerto 8765 en el router de forma que apunte al segundo servidor
192.168.2.40
Para ver las páginas del segundo servidor desde internet hay que teclear:
http://midominio.com:8765.
Un ejemplo real:
http://cepcordoba.org:8080/dani/

Para entender lo anterior debemos saber que el puerto por defecto para web es el puerto 80. En
realidad casi todas las direcciones de Internet son de la forma
http://dominio.com:80/pagina.html. Sin embargo como no ponemos el ":80", es decir, como no
ponemos número del puerto, se toma por defecto el 80. Evidentemente para cualquier puerto
distinto del 80, sí hay que añadir el nº puerto.

En segundo lugar, no es necesario añadir que en 192.168.2.40 debe haber un servidor


funcionando. Pero lo importante es configurar apache para que escuche por el puerto 8765
(por defecto apache viene configurado para escuchar por el puerto 80).
Si nos vamos al fichero /etc/apache2/ports.conf veremos que tan sólo incluye una línea:

Listen 80
que significa que escucha por el puerto 80 (que espera las conexiones por el puerto 80). Como ya
habrás adivinado .. basta con cambiar el número 80 por el 8765 y guardar el fichero.

Es conveniente que nos aseguremos que el fichero de configuración de apache


(/etc/apache2/apache2.conf) contenga la línea:

Include /etc/apache2/ports.conf

para que incluya en su configuración el contenido del fichero ports.conf

Ya sólo quedaría reiniciar apache:


/etc/init.d/apache2 restart
o simplemente releer la nueva configuración:
/etc/init.d/apache2 force-reload

PHP y MySQL

Con sólo tener instalado apache, ya podemos poner todas las páginas estáticas que queramos
(recordemos que las tenemos que poner en la carpeta /var/www/html tal y como configuramos
apache o en cualquier carpeta que creemos dentro de /var/www/html).

También debemos recordar que la versión instalada de ubuntu-server ya trae isntalados php y
MySQL.

Comprobando que funciona php

Bastará con crear un sencillo fichero de texto de nombre prueba.php y de contenido:

<?php
echo 'probando php';
?>

Lo único que hace es sacar la frase "probando php".


Si hemos puesto el fichero en /var/www/html/prueba.php bastará con apuntar el navegador a
http://192.168.2.20/prueba.php y obtendremos la frase anterior.
Si accedemos desde fuera de la red local, teclearíamos http://midominio.com/prueba.php
(también se puede teclear lo anterior desde dentro de la red local si hemos modificado el
/etc/hosts tal como se decía en un capítulo anterior)

MySQL: Instalando el módulo de integración con php

También viene instalado el servidor MySQL por defecto en ubuntu-server, pero debemos instalar
el módulo que lo integra con php

# apt-get install php5-mysql


Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Reading state information... Hecho
Se instalarán los siguientes paquetes extras:
libapache2-mod-php5 php5-common
Paquetes sugeridos:
php-pear

Se actualizarán los siguientes paquetes:


libapache2-mod-php5 php5-common php5-mysql
3 actualizados, 0 se instalarán, 0 para eliminar y 11 no actualizados.
Necesito descargar 2819kB de archivos.
Se utilizarán 0B de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? s
Des:1 http://security.ubuntu.com feisty-security/main php5-mysql 5.2.1-0ubuntu1.2 [65,4kB]
Des:2 http://security.ubuntu.com feisty-security/main libapache2-mod-php5 5.2.1-0ubuntu1.2
[2531kB]
Des:3 http://security.ubuntu.com feisty-security/main php5-common 5.2.1-0ubuntu1.2 [223kB]

Descargados 2819kB en 31s (90,9kB/s)

(Leyendo la base de datos ...


16980 ficheros y directorios instalados actualmente.)
Preparando para reemplazar php5-mysql 5.2.1-0ubuntu1 (usando .../php5-mysql_5.2.1-
0ubuntu1.2_i386.deb) ...
Desempaquetando el reemplazo de php5-mysql ...
Preparando para reemplazar libapache2-mod-php5 5.2.1-0ubuntu1 (usando .../libapache2-mod-
php5_5.2.1-0ubuntu1.2_i386.deb) ...
Desempaquetando el reemplazo de libapache2-mod-php5 ...
Preparando para reemplazar php5-common 5.2.1-0ubuntu1 (usando .../php5-common_5.2.1-
0ubuntu1.2_i386.deb) ...
Desempaquetando el reemplazo de php5-common ...
Configurando php5-common (5.2.1-0ubuntu1.2) ...
Configurando libapache2-mod-php5 (5.2.1-0ubuntu1.2) ...
* Forcing reload of web server (apache2)...
[ OK ]

Configurando php5-mysql (5.2.1-0ubuntu1.2) ...

MySQL: Configurando el servidor

Modificamos el fichero /etc/mysql/my.cnf

En la sección [mysqld] modificamos un par de líneas:


Idioma:

language = /usr/share/mysql/spanish

Acceso desde la red local:

bind-address = IP_local_del_server (por ej. 192.168.2.20)

Cualquiera puede acceder a la base de datos, así que demos acceso sólo a root:

# mysqladmin password contraseña

Instalación de phpmyadmin
# apt-get install phpmyadmin

Añadimos al fichero /etc/apache2/apache2.conf la siguiente línea:

Alias /phpmyadmin /var/www/phpmyadmin

Configuración de phpmyadmin

Editamos el fichero /etc/phpmyadmin/config.inc.php

$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address


$cfg['Servers'][$i]['port'] = ''; // MySQL port - leave blank for default port
$cfg['Servers'][$i]['extension'] = 'mysql'; // The php MySQL extension to use ('mysql' or
'mysql$
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method (config, http or cookie
bas$
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'contraseña';

En realidad no es un buen consejo que el usuario con acceso a MySQL sea root (se debería usar
un user distinto a root).

Debemos reiniciar apache y debemos comprobar que podemos acceder a phpmyadmin:

http://ip_del_servidor/phpmyadmin

S-ar putea să vă placă și