Este tutorial, al margen de formar parte de un proyecto concreto, puede servir para cualquiera que desee instalar un servidor web en su ordenador linux doméstico. Nos vamos a centrar en resolver una serie de problemas que suelen presentarse a la hora de intentar montar un servidor web casero.
En otras palabras, este artículo tendrá una orientación totalmente genérica sobre la instalación de servidores web domésticos en Linux, pero nos vamos a centrar en el uso de Linux Debian.
Tan solo reservaremos unas escasas palabras al futuro servidor web de CAO al final de este artículo.
Introducción a la instalación de un servidor web en un sistema Linux doméstico con IP dinámica y router multipuesto:
En el ámbito doméstico, la mayoría de proveedores de ADSL (Telefónica, Vodafone, Ono, Jazztel, Orange) entregan un router que es una pequeña cajita con una antena para conexión inalámbrica Wifi, una serie de leds, varias tomas para Ethernet (RJ45) un conector para la entrada telefónica ADSL (RJ11), y una toma de alimentación.
La configuración, más habitual y también la más flexible, usada en las viviendas, es configuración de una red local Multipuesto con IP dinámica. En esta configuración, los PCs negocian con el router su dirección IP mediante un servicio DHCP.
Por lo tanto, en el ámbito doméstico, lo más habitual es que nuestro PC disponga de una conexión en una subred local dependiente del router. En ella tanto los puestos locales como el propio router en Internet carecen de direcciones IP estáticas. No solo es el caso más habitual y más flexible, también es el que ofrece más problemas a la hora de montar un servidor web, aunque tampoco es algo demasiado complicado.
En este artículo detallaremos de forma resumida este caso y si su caso es más sencillo no necesitará hacer todo lo que aquí se indica.
De hecho, si tiene un ordenador con IP estática directamente conectado a Internet, solo necesitará instalar Apache y PHP y podrán conectarse a su PC sin más.
Si además de instalar un servidor web Apache y PHP se instala un servidor de bases de datos MySQL tendrá un sistema LAMP (Linux, Apache, MySQL, PHP) pero de momento nosotros no necesitaremos un servidor de BBDD (Quizás sí en un futuro).
Si ha localizado esta página para un proyecto diferente que necesite un sistema LAMP, lo único que tendrá que añadir es la instalación de MySQL que se puede hacer a posteriori y que es bastante sencilla. Nosotros nos ahorraremos esta explicación porque así también podemos ilustrar este artículo con un ejemplo de página más sencillo que usará un par de funciones PHP.
Instalación un servidor Apache:
Podemos empezar por instalar el servicio web con PHP en un ordenador con el sistema de paquetes de Debian. Usaremos comandos apt-get desde consola, pero no podrás hacerlo desde un usuario normal. Para adquirir privilegios de superusuario (root)en toda una sesión bash, antes de intentar ejecutar estos comandos, ejecuta el comando: sudo bash.
Esto te abrirá una subshell con privilegios y para salir de ellas bastará que ejecutes el comando exit.
-
En Debian pruebe a hacer lo siguiente:
(Recuerde que necesita privilegios de root)
- # apt-get install apache2
- # apt-get install php5
- # apt-get install libapache2-mod-php5
- # /etc/init.d/apache2 restart
-
Probar el funcionamiento de Apache:
- Editamos /var/www/index.html
- Desde el navegador podremos ver la página en la URL siguiente: http://localhost/ o http://127.0.0.1/
-
Probar el funcionamiento de Apache + PHP:
- Haremos lo mismo que antes pero para probar que Apache es capaz de servir páginas PHP sustituiremos el index.html con un fichero index.php que incluya alguna función PHP.
Una sencilla página de prueba para Apache + PHP
El siguiente ejemplo es el resultado de una prueba realizada en mi ordenador doméstico para la comprobación del funcionamiento de Apache + PHP y que será sustituida en un futuro por una versión que comunique con el controlador de acuarios.
Puedes intentar acceder a esta dirección: http://acastro0841.no-ip.org/index.php
Si mi ordenador estuviera apagado, mi router te informará de que esta página no es accesibel. Si por el contrario está encendido, entrarías en la página de prueba que acabo de habilitar en mi PC. El código de esta página de prueba es el siguiente:
Página de prueba Apache + PHP (acastro0841.no-ip.org)
En esta dirección se pretende desarrollar un interface web para el controlador de acuarios CAO.
Esta primera página tan sencilla, se hizo para probar el servidor web con un servicio no-ip
Para más información visite la web del: Proyecto CAO
< ?
echo «Fecha Unix de inicio de la petición. Disponible desde PHP 5.1.0. (segundos transcurridos desde 1-ene-1970) = » . $_SERVER[«REQUEST_TIME»] . »
\n» ;
echo ‘Fecha actual: ‘. date(‘Y-m-d’) .»
\n»;
?>
index.php: Versión Marzo 2013: (Antonio Castro Snurmacher)
Obtener una IP fija (estática) con un servicio No-IP:
Normalmente los accesos de ADSL domésticos no incluyen IP estática. Podrían contratarse a un precio superior, pero para un usos doméstico no es necesario. Es decir, en Internet nos ven con una dirección IP que puede variar por ejemplo al reinicializar el router. No tiene sentido alojar un servidor en una dirección que nadie sabe cual es porque va variando. Para evitar este inconveniente hay servicios llamados No-IP. Uno de ellos lo puedes obtener gratuitamente en no-ip.com.
-
Registrarse en no-ip:
Presta atención a las opciones ya que algunas son de pago.
- Introduzca sus datos personales y los datos de la cuenta (usuario+clave)
- Diríjase al menú Host/Redirec
- Seleccionar Host type =DNS Host (A)
- Introducir la dirección IP pública que tengamos en ese momento.
- Seleccionamos Create Host
-
Instalar servicio no-ip en el PC (para Linux):
- (Alternativa A) Descargar paquete noip-duc-linux.tar.gz
- tar xvzf noip-duc-linux.tar.gz
- cd noip-2.1.9-1
- make
- make install
- (Alternativa B) Instalar el paquete Debian
- # apt-get install no-ip
- #no-ip -C (Introducir datos de configuración.
- (Alternativa A) Descargar paquete noip-duc-linux.tar.gz
-
Solucionar problema de IP dinámica:
Si la IP Dinámica de nuestro proveedor cambia habrá que volver a sincronizarlo manualmente en el anfitrion en nuestro caso (https://www.noip.com), o configurar el router para que lo haga él automáticamente. (Véase configuración del router). En este úlimo caso habrá que meter los datos de LOGIN de la web de NO-IP y el HOST elegido.
-
Configuración de Dynamic Domain Name System (abreviadamente DynDNS o DDNS) en el router:
Te explico como se hace el en router Livebox de Orange y en otros routers encontraras opciones muy similares.
- Servicio online= (dyndns / no-ip / DtDNS) En nuestro caso hemos optado por (no-ip.com)
- Nombre del equipo= dominio noip
- Usuario / email = el que se registro en noip
- password = clave del usuario en noip
-
Configurar NAT en el router:
Lo usaremos para solucionar el problema de dar acceso al puesto de tu red local donde tengas instalado el servidor web. NAT es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que asignan mutuamente direcciones incompatibles. Su uso más común es el de permitir utilizar direcciones privadas para acceder a Internet. La configuración que comento es la de mi router de Orange. Habrá algunas variaciones dependiendo de marcas y modelos del router usado. Se puede cambiar el puerto que normalmente es el 80 para HTTP pero no es necesario. Si lo haces tendrás que indicar el puerto en la URL para conectarte.
- En el router de Livebox de Orange –> Configuración –> livebox –> configuracion avanzada.
- Aplicación servicio= HTTP
- Puerto externo= 80
- Puerto interno= 80
- Protocolo= TCP
- Puesto= (El router livebox de orange accede al nombre de cada dispositivo conectado en ese momento y muestra su nombre. De esa forma aunque su IP local cambie el la próxima reconexión, el dispositivo mapeado seguirá siendo el mismo. En caso contrario hay que poner la IP local y quizás cambie la proxima vez en función del orden en que se conecten los dispositivos al router.
-
Probando el acceso al servidor:
Si intentas acceder a tu server con no-ip desde la red local, la regla NAT no tendrá efecto y continuarás viendo la página del router, pero si accedes desde fuera de tu red local, el router aplicará la regla e intentará conectar a tu PC. Haz ambas comprobaciones. Comprueba igualmente lo que ocurre si desde Internet intentas conectar con el PC apagado. Los internautas podrán tener acceso a tu página web de tu PC a través del puerto habilitado en el router cuando tu PC esté en servicio. Si tu página web en PHP no ofrece vulnerabilidades, tu PC estará seguro.
Trucos varios :
Hay una serie de comandos en Linux que pueden serte de utilidad. Muchos de ellos requieren privilegios de superusuario.
- Para adquirir privilegios de superusuario en toda una sesión bash haz: sudo bash
- Para averiguar una ip pública haz ping sobre el nombre. Por ejemplo: ping acastro0841.no-ip.org
- Para averiguar la dirección de tu router haz: route
La dirección aparecerá en el campo pasarela. Quizás aparezca por nombre. Haz ping con ese nombre y averiguarás la IP local del router. - Para configurar el router deberás poner la dirección del router en el navegador. Te pedirá usuario y password. Cada router tiene sus propios menús y puede haber algunas diferencias entre los distintos fabricantes pero en Internet puedes encontrar esa información. Suelen venir con un usuario y una password preestablecida en fábrica y es buena idea cambiarla pare vitar que alguien pueda acceder a él.
- Para averiguar el nombre de tu ordenador usa: hostname.
- Para cambiar el nombre de tu ordenador usa: hostname nuevonombre
- Para ver la ip local puede no funcionar el ping al nombre del puesto ni a su hostname ni a localhost porque devolverá 127.0.0.1 (Puede que no necesites la dirección IP local de tu puesto si el router te deja usar el hostname) pero si quieres mirar esa IP puedes hacerlo con ifconfig.
- Para acceder a tu server desde el propio PC puedes hacerlo con un acceso local http://localhost o bien probarlo desde un servidor proxy como por ejemplo http://proxyweb.com.es/ si lo intenatas acceder directamente accederás al router.
- Para averiguar tu IP pública necesitas un servicio externo. Por ejemplo en la página de internautas o en adslzone. Podrás averiguar tu IP publica y medir la velocidad de tu conexión.
Unas palabras para nuestro futuro servidor web de CAO:
Para nuestro proyecto CAO no necesitamos un ordenador potente. Por el módico precio de 20 euros podríamos utilizar un pequeño Raspberry Pi con sistema operativo Raspbian.
Ya comentamos en el primer artículo de esta serie, que para manejar nuestro Controlador de Acuarios por Ordenador (CAO), lo ideal era implementar una interfaz web. De esta forma se podría tener acceso al controlador de nuestro acuario desde cualquier parte del mundo. Esto resulta ideal para los conflictivos periodos de ausencia en vacaciones. Por eso necesitabamos saber como instalar un servidor web doméstico.
oscar
un par de comentarios:
tu truco del «sudo bash» (también serviría «sudo su») no es muy recomendable…
es mejor usar «sudo ‘comando’ » solo cuando el ‘comando’ lo requiera.
y para obtener tu ip pública directamente des del bash:
wget -qO – icanhazip.com
o
wget -qO- checkip.dyndns.org
Antonio Castro
Lo importante en cualquier caso es no olvidarse de cerrar la sesión cuando no se necesiten los privilegios y ser muy consciente de que cualquier cosa que hagas la estás haciendo como root y que el sistema no protestará si intentas hacer una estupidez. Gracias por comentar.
Bien venido al blog Oscar.