Apache en Ubuntu-Primera Parte

Hoy vamos a configurarnos un servidor WEB, de echo, el servidor WEB mas utilizado APACHE.

Todavía no sabemos lo que es un servidor WEB?

Miremos en la Wikipedia:

Un servidor web es un programa que implementa el protocolo HTTP (hypertext transfer protocol). Este protocolo pertenece a la capa de aplicación del modelo OSI y está diseñado para transferir lo que llamamos hipertextos, páginas web o páginas HTML (hypertext markup language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de música.

De ahí que podemos sacar? Pues que interpreta un protocolo que pertenece a la capa de aplicación y que es capaz de Interpretar ese código.

Sigamos leyendo:

Un servidor web se mantiene a la espera de peticiones HTTP por parte de un cliente HTTP que solemos conocer como navegador. El cliente realiza una petición al servidor y éste le responde con el contenido que el cliente solicita. A modo de ejemplo, al teclear www.wikipedia.org en nuestro navegador, éste realiza una petición HTTP al servidor de dicha dirección. El servidor responde al cliente enviando el código HTML de la página; el cliente, una vez recibido el código, lo interpreta y lo exhibe en pantalla. Como vemos con este ejemplo, el cliente es el encargado de interpretar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página; el servidor tan sólo se limita a transferir el código de la página sin llevar a cabo ninguna interpretación de la misma.

Es decir, que nos aparece un concepto de CLIENTE-SERVIDOR

La instalación la haremos sobre Ubuntu. Apache es multiplataforma, también tiene su versión para Windows y además es un proyecto de código libre.

Empezemos a hacer la instalación:

marc@seifreed:~$ sudo aptitude install apache2
[sudo] password for marc:
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho
Se instalarán los siguiente paquetes NUEVOS:
apache2 apache2-mpm-worker{a} apache2.2-common{a}
0 paquetes actualizados, 3 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 1062kB de ficheros. Después de desempaquetar se usarán 4317kB.
¿Quiere continuar? [Y/n/?] Y
Escribiendo información de estado extendido… Hecho
Des:1 http://es.archive.ubuntu.com intrepid/main apache2.2-common 2.2.9-7ubuntu3 [778kB]
Des:2 http://es.archive.ubuntu.com intrepid/main apache2-mpm-worker 2.2.9-7ubuntu3 [240kB]
Des:3 http://es.archive.ubuntu.com intrepid/main apache2 2.2.9-7ubuntu3 [44,7kB]
Descargados 1062kB en 4s (253kB/s).
Seleccionando el paquete apache2.2-common previamente no seleccionado.
(Leyendo la base de datos …
201103 ficheros y directorios instalados actualmente.)
Desempaquetando apache2.2-common (de …/apache2.2-common_2.2.9-7ubuntu3_i386.deb) …
Seleccionando el paquete apache2-mpm-worker previamente no seleccionado.
Desempaquetando apache2-mpm-worker (de …/apache2-mpm-worker_2.2.9-7ubuntu3_i386.deb) …
Seleccionando el paquete apache2 previamente no seleccionado.
Desempaquetando apache2 (de …/apache2_2.2.9-7ubuntu3_all.deb) …
Procesando activadores para ufw …
Procesando activadores para man-db …
Configurando apache2.2-common (2.2.9-7ubuntu3) …
Enabling site default.
Enabling module alias.
Enabling module autoindex.
Enabling module dir.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module status.
Enabling module auth_basic.
Enabling module deflate.
Enabling module authz_default.
Enabling module authz_user.
Enabling module authz_groupfile.
Enabling module authn_file.
Enabling module authz_host.

Configurando apache2-mpm-worker (2.2.9-7ubuntu3) …
* Starting web server apache2                                                                                                                                                                                    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Configurando apache2 (2.2.9-7ubuntu3) …
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho

Si utilizo aptitude es para que me instale las dependecias que necesite.

Miremos como funciona y como queda ponemos localhost en el navegador:

localhost1

Como también querremos luego que aparte de Interpretar HTML, interprete PHP instalaremos el módulo PHP.

Instalamos el módulo PHP:

pruebas@pruebas:~$ sudo aptitude install php5
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Se instalarán los siguiente paquetes NUEVOS:
apache2-mpm-prefork{a} libapache2-mod-php5{a} php5 php5-common{a}
Se ELIMINARÁN los siguientes paquetes:
apache2-mpm-worker{a}
0 paquetes actualizados, 4 nuevos instalados, 1 para eliminar y 0 sin actualizar.
Necesito descargar 3084kB de ficheros. Después de desempaquetar se usarán 6300kB.
¿Quiere continuar? [Y/n/?] y
Escribiendo información de estado extendido… Hecho
Des:1 http://es.archive.ubuntu.com intrepid/main apache2-mpm-prefork 2.2.9-7ubuntu3 [235kB]
Des:2 http://es.archive.ubuntu.com intrepid-updates/main php5-common 5.2.6-2ubuntu4.1 [365kB]
Des:3 http://es.archive.ubuntu.com intrepid-updates/main libapache2-mod-php5 5.2.6-2ubuntu4.1 [2482kB]
Des:4 http://es.archive.ubuntu.com intrepid-updates/main php5 5.2.6-2ubuntu4.1 [1116B]
Descargados 3084kB en 12s (249kB/s).
dpkg: apache2-mpm-worker: problemas de dependencias, pero se desinstalará de todas formas
tal y como se solicitó:
apache2 depende de apache2-mpm-worker (>= 2.2.9-7ubuntu3) | apache2-mpm-prefork (>= 2.2.9-7ubuntu3) | apache2-mpm-event (>= 2.2.9-7ubuntu3); sin embargo:
El paquete `apache2-mpm-worker’ va a ser desinstalado.
El paquete `apache2-mpm-prefork’ no está instalado.
El paquete `apache2-mpm-event’ no está instalado.
(Leyendo la base de datos …
108120 ficheros y directorios instalados actualmente.)
Desinstalando apache2-mpm-worker …
* Stopping web server apache2                                                  apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
… waiting                                                             [ OK ]
Seleccionando el paquete apache2-mpm-prefork previamente no seleccionado.
(Leyendo la base de datos …
108112 ficheros y directorios instalados actualmente.)
Desempaquetando apache2-mpm-prefork (de …/apache2-mpm-prefork_2.2.9-7ubuntu3_i386.deb) …
Seleccionando el paquete php5-common previamente no seleccionado.
Desempaquetando php5-common (de …/php5-common_5.2.6-2ubuntu4.1_i386.deb) …
Seleccionando el paquete libapache2-mod-php5 previamente no seleccionado.
Desempaquetando libapache2-mod-php5 (de …/libapache2-mod-php5_5.2.6-2ubuntu4.1_i386.deb) …
Seleccionando el paquete php5 previamente no seleccionado.
Desempaquetando php5 (de …/php5_5.2.6-2ubuntu4.1_all.deb) …
Configurando apache2-mpm-prefork (2.2.9-7ubuntu3) …
* Starting web server apache2                                                  apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Configurando php5-common (5.2.6-2ubuntu4.1) …
Configurando libapache2-mod-php5 (5.2.6-2ubuntu4.1) …

Creating config file /etc/php5/apache2/php.ini with new version
* Reloading web server config apache2                                          apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Configurando php5 (5.2.6-2ubuntu4.1) …
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho

Entonces…como saber que el servidor nos está interpretando bien el código PHP..

Lo que haremos será una prueba para ver que sale.

Todas las páginas WEBS por defecto en Apache se haen de colocar en el directorio /var/www.

Asi que vamos a hacer la prueba.

pruebas@pruebas:~$ sudo nano /var/www/index.php

Con esto editaremos el archivo PHP en la carpeta donde apache guarda todas las páginas WEBS.

Para hacer la prueba PHP el fichero ha de contener eso:

pruebas@pruebas:~$ cat /var/www/index.php
<?php
phpinfo();
?>

Con un cat, pinto el archivo por pantalla, ha de contener a partir de <?php.

Entonces, cada vez que hacemos un cambio, reiniciamos el apache.

pruebas@pruebas:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2                                                apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
… waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Muy bien, nos vamos a cualquier navegador, y ponemos localhost/index.php

Y nos ha de salir una cosa como esta:

php

Muy bien, ahora vamos a configurar a nuestro gusto el Apache

Todas las configuraciones se hacen sobre el fichero httpd.conf.

Vamos a empezar a editar el archivo:

pruebas@pruebas:~$ sudo nano /etc/apache2/httpd.conf

Dentro de este fichero hemos de colocar las dos siguientes lineas.

ServerName localhost
Include /etc/apache2/mods-available

Estas dos lineas sirven para lo siguiente:

La de serverName es que, cada vez que le haciamos un Restart al Apache nos salía el mensaje de error de:

.. waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Asi que con esto, lo que hacemos es que le decimos al apache que nosotros mismo seremos el servidor DNS.

Luego la siguiente linea, lo que hace es cargar todos los módulos del apache cada vez que se inicia. Veamos como queda ahora que hacemos un restart.

pruebas@pruebas:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2                                                [Fri Feb 20 13:47:59 2009] [warn] module alias_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module auth_basic_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module authn_file_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module authz_default_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module authz_groupfile_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module authz_host_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module authz_user_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module autoindex_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module cgi_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module deflate_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module dir_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module env_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module mime_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module negotiation_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module php5_module is already loaded, skipping
[Fri Feb 20 13:47:59 2009] [warn] module setenvif_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module status_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] The Alias directive in /etc/apache2/mods-available/alias.conf at line 15 will probably never match because it overlaps an earlier Alias.
[Fri Feb 20 13:48:00 2009] [warn] module alias_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module auth_basic_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module authn_file_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module authz_default_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module authz_groupfile_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module authz_host_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module authz_user_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module autoindex_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module cgi_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module deflate_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module dir_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module env_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module mime_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module negotiation_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module php5_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module setenvif_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] module status_module is already loaded, skipping
[Fri Feb 20 13:48:00 2009] [warn] The Alias directive in /etc/apache2/mods-available/alias.conf at line 15 will probably never match because it overlaps an earlier Alias.

Vale, muchas letras lo se, pero es le mensajito de cuando está cargando los módulos.

Vamos otra vez a editar el archivo httpd.conf igual que antes y le vamos a añadir las siguientes lineas.

DirectoryIndex start.html
ErrorDocument 404 /error.html
<Directory /var/www/pruebas>
DirectoryIndex startpruebas.html
</Directory>
<Directory /var/www/pruebas2>
DirectoryIndex startpruebas2.html
</Directory>

Queda bastante feo poner localhost y que nos muestre una lista de los archivos de nuestro servidor,esto no pasaría si hubiese un fichero index.html o index.php, pero y si le quiero poner yo el nombre que a mi me de la gana.
Para ello está la directiva DirectoryIndex, esta directiva nos permite establecer como se llamará la página de inicio de nuestro servidor.
La siguiente linea, vosotros habeis visto, cuando navegais por Internet que si os equivocais en escribir la dirección nos sale un mensaje de error no?
Pues también podemos personalizar ese mensaje o esa página en si, a la mia la he puesto en la raíz del servidor y le llamado error html.
Si queremos tener nuestros Site web organizado por carpetas se lo tendremos que especificar al apache.
E incluso podemos especificar dentro de esa directiva OTRA directiva para poder especifixar cual será la página de inicio. Asi que preparemos el entorno:

root@pruebas:/var/www# nano start.html

Dentro colocaremos:

<html>
<head>
<title>Pagina de Pruebas</title>
</head>
<body>
Esta es una pagina de pruebas
</body>
</html>

Sigamos con el siguiente fichero el del error:

root@pruebas:/var/www# nano error.html

Dentro colocamos:

<html>
<head>
<title>Pagina de Errores</title>
</head>
<body>
ERROR LA PAGINA QUE BUSCAS NO ESTA
</body>
</html>

Ahora veremos en el Apache se pueden poner las webs por carpetas, se lo especicamos tal y como hemos echo alli arriba. Sigamos creando el entorno:

root@pruebas:/var/www# nano error.html
root@pruebas:/var/www# mkdir pruebas
root@pruebas:/var/www# cd pruebas/
root@pruebas:/var/www/pruebas# nano startpruebas.html

Dentro del fichero startpruebas.html, colocamos esto:

<html>
<head>
<title>Pagina de de pruebas</title>
</head>
<body>
Hemos creado una pagina dentro de una carpeta
</body>
</html>

Sigamos con la siguiente preparación:

root@pruebas:/var/www/pruebas# cd ..
root@pruebas:/var/www# mkdir pruebas2
root@pruebas:/var/www# nano startpruebas2.html

Ahora hagamos las comprobaciones.

Primero reiniciamos el apache.

Vámonos al navegador y pongamos localhost/

Nos tendría que salir directamente la página que le hemos dicho que era la principal en el fichero httpd.conf la de start.html

start

Como podemos ver nos sale la página de start, ahora metamos algo que no exista..a ver si sale la página de error.

error

También me sale la página de error, ahora vamos a ver si podemos ver la página dentro de una carpeta.

carpeta

Y hasta aquí acaba la primera parte de APACHE

Etiquetas: , ,

Acerca de Marc Rivero López

Si alguien quiere saber como soy que se preocupe por averiguarlo.

8 Responses to “Apache en Ubuntu-Primera Parte”

  1. anouk says :

    aptitude, no? O_o
    Parece que te estás poniendo las pilas con el blog… es por el paro? xD

  2. Johnny_ says :

    Bieeeeeeeen! ya tengo los apuntes de C5 gracias a ti xDxD

    ahora toca Control+C y Control+V

    Muhajajajaja!

    Johnny_

  3. anónima says :

    oye… y con windows cómo se haría?
    estoy haciendo ESI de 1º en poblenou y me piden éso.
    un beso wapi

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s