Instalación y configuración de un servidor Apache con PHP y MySQL (Parte 1)

Existen multitud de herramientas para instalar y configurar fácilmente un servidor Apache con MySQL tanto en Windows como en Linux, que nos permiten tener un sistema local para hacer nuestras pruebas en el mundo de la web, pero a nivel local y sin los problemas de seguridad que puede dar un servidor real.

El uso de herramientas de este tipo viene bien cuando no queremos complicarnos demasiado con la configuración de PHP, MySQL y Apache. De esta forma tenemos una configuración básica de apache sin problemas y perféctamente funcional. Herramientas como EasyPHP (http://www.easyphp.org/) para Windows o XAMPP para Linux que se puede encontrar en la web http://sourceforge.net, son algunos ejemplos de ésto.

En esta primera parte se va a explicar lo necesario para instalar un servidor Apache en Linux, así como las diferentes opciones de configuración del servidor de las que disponemos en el fichero httpd.conf


Instalación de Apache en Linux

A día de hoy los gestores de paquetes disponen de la mayoría de aplicaciones en los repositorios que vienen de serie en las distintas distribuciones, especialmente si utilizamos Ubuntu que facilita bastante la instalación de aplicaciones en nuestro sistema.

En nuestro caso utilizaremos el gestor de paquetes apt-get que nos permitirá de forma sencilla descargar e instalar una versión de Apache. Para instalar nuestro servidor apache ejecutamos:

sudo apt-get install apache2

Una vez que ha terminado el proceso ya tenemos nuestro servidor Apache en funcionamiento. Ahora tenemos que comprobar que el servidor responde a nuestras peticiones. Para eso abrimos nuestro navegador web habitual e introducimos la dirección http://127.0.0.1. De esta forma obtendremos una web con un texto que dice: IT'S WORKS! Esto indica que Apache está respondiendo a nuestras peticiones.

 

Funcionamiento básico del sistema de directivas de Apache. Ejemplo de configuración

Ahora que ya disponemos de nuestro servidor, tenemos que saber como configurarlo correctamente para lo que queramos hacer. Para ello, vamos a describir el funcionamiento básico del fichero httpd.conf que podemos encontrar normalmente en la ruta /etc/apache2/httpd.conf.

La configuración de Apache se basa en un sistema de directivas que se aplican de forma general o bien en secciones concretas (un directorio o una IP por ejemplo). Todos los parámetros que se le pueden aplicar al fichero httpd.conf se denominan directivas. Estas directivas son de dos tipos:

Directivas generales. Las directivas generales son aquellas que se aplican a todo el servidor, de forma que lo que indique afectará a toda petición que se realice a dicho servidor. Por ejemplo si en nuestro fichero httpd.conf indicamos lo siguiente.

DirectoryIndex index.php

esta directiva le esta diciendo al servidor que el fichero a buscar cuando el cliente solicita una web a este servidor, será index.php. Es posible añadir mas de un fichero separado por espacios.

Directivas de sección. A diferencia de las generales, las directivas de sección solo afectan a partes concretas del servidor (un directorio, un dominio o subdominio, etc.).

Se puede decir que las directivas de sección nos permiten agrupar directivas generales, y que mientras que las primeras permiten establecer un ámbito de efecto dentro del servidor por sí solas, las segundas afectan a todo el servidor a menos que estén dentro de una directiva de sección.

Apache se divide en varios módulos cada uno de los cuales hace referencia a un grupo de directivas que tratan partes distintas del servidor, como puede ser el sistema de archivos, el núcleo, etc. Los módulos de los que dispone Apache los podemos encontrar en la web de Apache httpd.apache.org/docs/2.0/es/mod/

A continuación se expone un ejemplo de configuración de un servidor Apache para el caso en que queramos utlilizar hosts virtuales:

NameVirtualHost 192.168.55.1
DirectoryIndex index.php
<Directory />
order Deny, Allow
Deny from all
Allow from 192,168.55.1
</Directory>
<VirtualHost 192.168.55.1>
DocumentRoot /web/miweb
ServerName www.miweb.midominio.es
</VirtualHost>
<VirtualHost 192.168.55.1>
DocumentRoot /web/webmitio
ServerName www.webmitio.midominio.es
ServerAlias www.mitio.es
<Directory /web/webmitio>
order Deny, Allow
Allow from all
</Directory>
</VirtualHost>

Esta configuración es un ejemplo del uso de host virtuales. Como se puede ver, el fichero httpd.conf no es más que una serie de directivas generales y de sección que en este caso definen dos subdominios para el dominio www.midomino.es. Se suele utilizar cuando queremos alojar en un servidor mas de una web sin necesidad de comprar más de un dominio en la red, se conoce como servidor compartido.

En nuestro ejemplo queremos alojar las web www.miweb.es y www.webmitio.es en nuestro servidor Apache, pero tan sólo disponemos del dominio www.midominio.es y para ello se utilizan los hosts virtuales, de tal manera que se pueden crear subdominios para tener mas de una web usando los recursos de los que disponemos. De esta forma tenemos www.miweb.midominio.es y www.webmitio.midominio.es en el servidor como subdominios de www.midominio.es.

Cada host virtual se trata como si fuese una máquina independiente dentro del sistema, por lo que puede llevar sus propias directivas para dar o denegar permisos, establecer un alias para ese host virtual, etc. Cada una de las webs que se cren con hosting virtual tiene su propio direcotrio raiz que definimos con la directiva DocumentRoot, así como un nombre de host que definiremos con la directiva ServerName.

Además, se le pueden incluir restricciones con directivas de sección como en el segundo de los casos del ejemplo. Con la directiva Directory, podemos crear restricciones a un directorio concreto. En este caso estamos dando permiso total al directorio raiz de la web.

Comentarios

Comentario de JUqnNvcZmRhiBiEGkmb - 12 de Mayo de 2012 - 05:42
Oh OK. Well now my problem is that the file I ruqseet is a Perl script and my browser just shows its code. Thats what happens when the script is right in the DocumentRoot folder (C:/vhosts/A2/index2.cgi). So why does the script not run?Originally I had a folder called cgi-bin in my virtualhost's DocumentRoot and in that folder was the Perl script (so C:/vhosts/A2/cgi-bin/index2.cgi). When trying to run the script in this location I got this error:[error] [client 127.0.0.1] script not found or unable to stat: C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/index2.cgiIt seems here that Apache is trying to search in the original cgi-bin folder but why?
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: