Download - Instalacion y Configuracion de Apache

Transcript
Page 1: Instalacion y Configuracion de Apache

Instalación y configuración del servidor web Apache

Camilo Cervantes Jose Martinez

Ing. Harold Búla Herazo

Facultad de Ciencias BásicasPrograma Ingeniería de Sistemas

Universidad de CórdobaMontería

2011

Page 2: Instalacion y Configuracion de Apache

Introducción

Apache HTTP server es el servidor web mas popular del mercado. Su éxito radica en la calidad y confiabilidad que brinda. Su función principal es prestar servicios orientados a la web. Se caracteriza por ser software libre y de codigo abierto, posee una arquitectura modular y soporta el protocolo HTTP 1.1, asi como lenguajes de script como PHP, Perl, CGI, etc. y tambien sistemas gestores de bases de datos relacionales como PostgreSQL.

En este trabajo se presentarán los resultados de la práctica realizada con el servidor Apache, que consiste en su instalación junto con el interprete de PHP y el SGBD Postgres, personalizar el puerto de escucha y el directorio de publicación, y la creacion de host virtuales usando DNS. Para este ultimo fue necesario instalar el servidor de DNS Bind9.

El documento consta de 3 secciones. En la primera parte se explican los pasos de instalación de la combinación Apache 2.2.17 + PHP 5.3.5 + PostgreSQL 9.03 usando el código fuente de cada uno de ellos. En la segunda parte se explica el método por el cual se personalizaron las opciones mencionadas anteriormente y finalmente la tercera parte explica en que consisten los host virtuales y como se despliegan usando Apache y Bind9. Tambien se puede encontrar en el documento un anexo con las imágenes tomadas al momento de realizar la práctica. En cuanto a convenciones, los comandos ejecutados en la terminal se escribirán con fuente estilo consola y las directivas de configuración de Apache asi como las configuraciones de Bind9 y scripts en PHP tendrán el tipo de fuente script.

Page 3: Instalacion y Configuracion de Apache

1. Instalación de Apache

Objetivo• Instalar y configurar el servidor web Apache de tal forma que se puedan ejecutar scripts PHP

que tengan conexión con bases de datos.

Caracteristicas del equipo usado:

Virtualizado con VirtualBoxProcesador x86 de 32 bitsS.O. Ubuntu Desktop 10.04Disco duro 20 GbRAM 512 Mb

Paso 1. Obtener paquetes

Se necesitan los siguientes paquetes:

Programa Paquete Descarga

Apache 2.2.17 httpd-2.2.17.tar.gz http://httpd.apache.org/download.cgi

PHP 5.3.5 php-5.3.5.tar.gz http://co.php.net/get/php-5.3.5.tar.gz/from/a/mirror

PostgreSQL 9.0.3 Postgresql-9.0.3.tar.gz http://www.postgresql.org/ftp/source/v9.0.3/

libxml2 libxml2 sudo apt-get install libxml2

libxml2-dev libxml2-dev sudo apt-get install libxml2-dev

Paso 2. Instalando PostgreSQL

Descomprimir el paquete:

1 tar xzvf postgresql-9.0.3.tar.gz

Navegar hacia la carpeta del codigo fuente:

Page 4: Instalacion y Configuracion de Apache

2 cd postgresql-9.0.3.tar.gz

Adquirir privilegios de superusuario:

3 sudo su

Configurar compilación con las siguientes opciones:

4 ./configure –-without-readline –without-zlib

Realizar compilación:

4 make5 make install

Agregar usuario postgres:

6 adduser postgres

Crear directorio data para postgres y asignar permisos:

7 mkdir /usr/local/pgsql/data 8 chown postgres /usr/local/pgsql/data

Loguearse como usuario postgres:

9 su – postgres

Iniciar el servidor postgresql:

10 /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data11 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &

Crear base de datos de prueba y acceder al mismo (Ver anexo, fig.1):

12 /usr/local/pgsql/bin/createdb test13 /usr/local/pgsql/bin/psql test

Paso 3. Instalando Apache

Descomprimir el paquete:

Page 5: Instalacion y Configuracion de Apache

1 tar xzvf httpd-2.2.17.tar.gz

Navegar a la carpeta del código fuente:

2 cd httpd-2.2.17

Obtener privilegios de superusuario:

3 sudo su

Configurar la compilación activando los módulos MOD_SO y MOD_REWRITE:

4 ./configure -–enable-so -–enable-rewrite

Realizar compilación:

5 make6 make install

Iniciar servidor Apache:

7 /usr/local/apache2/bin/apache2ctl start

Nota:El módulo MOD_SO tiene la función de cargar codigo ejecutable y modulos al iniciar o reiniciar el servidor. Es necesario al momento de conectar otros componentes (p.e. PHP, PostgreSQL) con Apache o agregar nuevos módulos.El módulo MOD_REWRITE provee un motor de reescritura de URLs basada en expresiones regulares, las cuales son convertidas “al vuelo” al momento de la petición.

Paso 4. Instalando PHP

Descomprimir el paquete:

1 tar xzvf php-5.3.5.tar.gz

Navegar hacia la carpeta del código fuente:

2 cd php-5.3.5

Adquirir privilegios de superusuario:

Page 6: Instalacion y Configuracion de Apache

3 sudo su

Configurar la compilación indicando la ubicación del script apxs, incluir soporte pgsql, indicando el directorio de instalación de php asi como el directorio de configuración:

4 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql --prefix=/usr/local/apache2/php -–with-config-file-path=/usr/local/apache2/php

Realizar compilación, prueba e instalación:

5 make6 make test7 make install

Instalar la configuración de PHP:

8 cp php.ini-development /usr/local/apache2/php/php.ini

Agregar las siguientes directivas al archivo httpd.conf de apache:

9 gedit /etc/apache2/conf/httpd.conf

# Use for PHP 5.x:LoadModule php5_module modules/libphp5.soAddHandler php5-script php

# Add index.php to your DirectoryIndex line:DirectoryIndex index.html index.php

AddType text/html php

# PHP Syntax Coloring# (optional but useful for reading PHP source for debugging):AddType application/x-httpd-php-source phps

Reiniciamos Apache para que se cargue la nueva configuración:

10 /usr/local/apache2/bin/apachectl restart

Nota: • apxs es una herramienta para la compilación e instalación de módulos de extensión para

Apache.En este caso se necesita de apxs para que compile e instale la extensión de postgresql que lo vincula con Apache y con PHP. Para apxs funcione correctamente, el servidor Apache

Page 7: Instalacion y Configuracion de Apache

debe tener activado el módulo MOD_SO, el cual trae la directiva LoadModule encargada de cargar los módulos adicionales. Por tal motivo fue que se activó anteriormente.

• En las versiones mas recientes de PHP, el archivo php.ini-recommended no viene incluido en el código fuente, en su reemplazo se encuentran dos archivos: php.ini-development y php.ini-production, el primero trae una configuración recomendada para desarrolladores, y el segundo para hosting de sitios.

Paso 5. Probar que todo funciona

Prueba #1: Probar si el servidor Apache esta activo

Para probar si el servidor Apache esta funcionando de manera correcta lo primero que se debe hacer es acceder a http://localhost. Si esta ejecutándose, se podrá ver una página en html, en caso contrario, habra un timeout, es decir se agotará el tiempo de espera y el navegador alertará sobre un problema de conexión. (Ver anexo, fig.2)

Prueba #2: Pruebas por consola

Para probar las características del servidor Apache recien instalado usar los comandos a continuación.(Ver anexo, fig.3)

• Ejecutar pruebas de sintaxis para los archivos de configuración:

1 /usr/local/apache2/bin/httpd -t

• Imprimir la versión de Apache:

2 /usr/local/apache2/bin/httpd -v

• Imprimir la versión de Apache y los parámetros de compilación:

3 /usr/local/apache2/bin/httpd -V

• Mostrar la configuración de los hosts virtuales:

4 /usr/local/apache2/bin/httpd -S

• Mostrar la lista de módulos compilados en el servidor. No mostrara aquellos módulos cargados con la directiva LoadModule:

5 /usr/local/apache2/bin/httpd -l

• Mostrar la lista de todos los módulos estáticos y dinámicos:

6 /usr/local/apache2/bin/httpd -M

Page 8: Instalacion y Configuracion de Apache

• Revisar que el proceso del servidor este ejecutándose:

7 ps -ef |grep httpd

Prueba #3: Probar un script PHP

La función phpinfo() muestra información del sistema, del servidor web, del intérprete PHP instalado, entre otras. Con esta función se puede crear un script para probar que el intérprete PHP este funcionando correctamente.

Abrir el editor de texto con el siguiente comando:

1 gedit /usr/local/apache2/htdocs/script.php

Escribir la siguiente linea en el archivo y guardar los cambios:

<?php phpinfo() ?>

Abrir la dirección http://localhost/script.php y ver los resultados.(Ver anexo, fig.4)

Si el intérprete de PHP funciona correctamente, debe aparecer una lista con información detallada sobre el sistema, el intérprete, la configuración del servidor y muchas más. Hay una información en especial que merece la atención en este punto. En un cuadro aparece con el título pgsql y muestra la información relacionada con el soporte a PostgreSQL, esto indica que la conexión con el servidor de Postgres esta activa y su instalacion fue correcta. (Ver anexo, fig.5)

2. Personalizar Configuración Apache

Objetivo• Personalizar el puerto de escucha del servidor Apache y cambiar el directorio de publicación

que viene por defecto.

Puerto de escuchaPor defecto, el servidor Apache tiene configurado el puerto 80 para recibir las peticiones entrantes.Esta opción se puede cambiar en el archivo de configuración de Apache cambiando el valor de la directiva Listen.(Ver anexo, fig.6)

Listen 8084

Para probar la nueva configuración se debe reiniciar el servidor Apache y acceder a la dirección http://localhost:8084. (Ver anexo, fig.7)

Page 9: Instalacion y Configuracion de Apache

Directorio de publicaciónEl directorio de publicación del servidor Apache es una ubicación especial que puede ser accedida desde otros puntos de la red. Es el lugar donde se deben alojar los scripts y paginas html para que puedan ser vistas por los demas usuarios de la red.Por defecto, el directorio de publicación se encuentra en /usr/local/apache2/htdocs.Para cambiar esta opción se debe modificar el archivo de configuración de apache de la siguiente forma:

Por defecto:

...

DocumentRoot "/usr/local/apache2/htdocs"

...

## This should be changed to whatever you set DocumentRoot to.#<Directory "/usr/local/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all</Directory>

Se modifica para que el directorio de publicación sea /home/kamilin-virtual/www

...

DocumentRoot "/home/kamilin-virtual/www"

...

## This should be changed to whatever you set DocumentRoot to.#<Directory "/home/kamilin-virtual/www"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all</Directory>

Luego se reinicia el servidor Apache y se accede por el navegador para ver los cambios. En nuestra práctica se observa una nueva página de bienvenida. (Ver anexo, fig.8)

Page 10: Instalacion y Configuracion de Apache

3. Hosts Virtuales basados en nombre

Objetivo• Montar dos hosts virtuales usando la misma ip del servidor.

Apache esta en capacidad de atender varios sitios web desde un unico servidor. Esto es posible usando host virtuales en el host principal. Los hosts virtuales pueden ser basados en nombre, es decir, que se tienen varios nombres ejecutandose en una IP, o basados en IP, es decir, que cuentan con una IP diferente por cada sitio web. En este caso se usa la primera técnica. BIND9 es el servidor DNS recomendado para crear los nombres que van a usar los hosts virtuales.

Adquirir privilegios de superusuario:

1 sudo su

Instalar BIND9:

2 apt-get install bind9

Navegar al directorio de configuración de BIND9:

3 cd /etc/bind

Abrir archivo de configuración de zonas de BIND9. Creamos las zonas “tamashii.com” y “tenshii.com” (Ver anexo, fig.9) :

4 gedit named.conf.local

zone "tamashii.com" {type master;file "/etc/bind/db.tamashii";

};

zone "tenshii.com" {type master;file "/etc/bind/db.tenshii";

};

Nota: En este punto, las zonas se crean y se enlazan con un archivo de configuración externo que esta definido en la propiedad file.

Crear el archivo db.tamashii a partir del archivo modelo db.local:

5 cp db.local db.tamashii

Page 11: Instalacion y Configuracion de Apache

Editar el archivo db.tamashii (Ver anexo, fig.10) :

6 gedit db.tamashii

1 ;2 ; BIND data file for local tamashii.com interface3 ;4 $TTL 6048005 @ IN SOA tamashii.com. [email protected]. (6 2 ; Serial7 604800 ; Refresh8 86400 ; Retry9 2419200 ; Expire10 604800 ) ; Negative Cache TTL11 ;12 @ IN NS tamashii.com.13 @ IN A 10.0.2.1514 @ IN MX 0 tamashii.com.15 www IN A 10.0.2.1516 @ IN AAAA ::1

Nota: En las lineas 13 y 15 se debe poner la ip del host principal. Esta se puede obtener usando el comando ifconfig.

Hacemos la misma operación con el archivo db.tenshii usando como modelo el archivo db.tenshii por conveniencia

7 cp db.tamashii db.tenshii8 gedit db.tenshii

;; BIND data file for local tenshii.com interface;$TTL 604800@ IN SOA tenshii.com. [email protected]. (

2 ; Serial 604800 ; Refresh 86400 ; Retry2419200 ; Expire 604800 ) ; Negative Cache TTL

;@ IN NS tenshii.com.@ IN A 10.0.2.15@ IN MX 0 tenshii.com.www IN A 10.0.2.15@ IN AAAA ::1

Page 12: Instalacion y Configuracion de Apache

Reiniciar BIND9

9 /etc/init.d/bind9 restart

Descomentar la línea debajo del titulo Virtual hosts en el archivo de configuración de Apache. Esto se hace para incluir el archivo de configuración de hosts virtuales que viene en el directorio de configuración de Apache:

10 gedit /usr/local/apache2/conf/httpd.conf

# Virtual hostsInclude conf/extra/httpd-vhosts.conf

Editar el archivo que se incluyó en el punto anterior (Ver anexo, fig.11):

11 gedit /usr/local/apache2/conf/extra/httd.vhosts.conf

...NameVirtualHost 10.0.2.15:80...<VirtualHost 10.0.2.15:80> ServerAdmin [email protected] DocumentRoot "/home/kamilin-virtual/www/tamashii" ServerName tamashii.com ServerAlias www.tamashii.com ErrorLog "logs/tamashii.com-error_log" CustomLog "logs/tamashii.com-access_log" common</VirtualHost>

<VirtualHost 10.0.2.15:80> ServerAdmin [email protected] DocumentRoot "/home/kamilin-virtual/www/tenshii" ServerName tenshii.com ServerAlias www.tenshii.com ErrorLog "logs/tenshii.com-error_log" CustomLog "logs/tenshii.com-access_log" common</VirtualHost>...

Nota:NameVirtualHost es una directiva que define la dirección o nombre del host principal e indica que este puede ser usado para establecer hosts virtuales usando los tags <VirtualHost>. Entre estas etiquetas se puede poner casi cualquier directiva. Por tanto se puede establecer un directorio específico, un nombre de servidor, un alias para acceder a el, entre otras opciones.

Page 13: Instalacion y Configuracion de Apache

Editar el archivo resolv.conf y dejar unicamente la ip del host principal como se observa a continuación (Ver anexo, fig.12):

12 gedit /etc/resolv.conf

nameserver 10.0.2.15

Nota: Esto se hace con el objetivo de tener en cuenta el servidor DNS del host principal al momento de resolver las peticiones HTTP.

Reiniciar el servidor Apache:

13 /usr/local/apache2/bin/apachectl restart

Ahora podemos visitar las direcciones www.tamashii.com y www.tenshii.com y aparecerán los archivos alojados en los direcciones de publicación de los hosts virtuales.(Ver anexo, fig.13-14).

Page 14: Instalacion y Configuracion de Apache

Bibliografía

• KABIR, Mohammed J. La Biblia del Servidor Apache 2, Anaya Multimedia, 2003• APACHE Software Foundation, Apache HTTP Server Documentation Version 2.2, Apache

Software Foundation, 2005• http://dan.drydog.com/apache2php.html , Apache 2 and PHP 5 (PHP_MOD), Consultado en feb

7/2011• http://www.marblestation.com/?p=543 , Configuración servidor DNS (bind9) en Ubuntu |

Marble Station, Consultado en feb 7/2011• http://wiki.php.net/rfc/newinis , PHP: rfc:newinis [PHP Wiki], Consultado en feb 8/2011

Page 15: Instalacion y Configuracion de Apache

AnexoCapturas de pantalla

Page 16: Instalacion y Configuracion de Apache

Figura 1. Accediendo a la base de datos “test” en PostgreSQL.

Figura 2. Apache funcionando en el puerto 80.

Page 17: Instalacion y Configuracion de Apache

Figura 3. Pruebas en consola Apache (Parte 1).

Page 18: Instalacion y Configuracion de Apache

Figura 3. Pruebas en consola Apache (Parte 2).

Page 19: Instalacion y Configuracion de Apache

Figura 4. Prueba de PHP, phpinfo().

Figura 5. Conexión con PostgreSQL confirmada.

Page 20: Instalacion y Configuracion de Apache

Figura 6. Cambiando la directiva LISTEN.

Figura 7. Conectado por el puerto 8084.

Page 21: Instalacion y Configuracion de Apache

Figura 8. Publicando desde /home.

Figura 9. Creando zonas para dominios.

Page 22: Instalacion y Configuracion de Apache

Figura 10. Editando zona tamashii.com

Figura 11. Creando virtual hosts en Apache.

Page 23: Instalacion y Configuracion de Apache

Figura 12. Editando archivo resolv.conf.

Figura 13. Host virtual tamashii.com

Page 24: Instalacion y Configuracion de Apache

Figura 14. Host virtual tenshii.com.