CÓMO CONFIGURAR APACHE PARA CREAR UN SITIO WEB El servidor HTTP Apache es un servidor web HTTTP de código libre abierto para plataformas Unix (GNU/Linux, BSD, etc), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Publicando una página web con Apache Lo primero que tenemos que hacer obviamente es instalar Apache. Algunas versiones (si no todas) vienen con él deshabilitado por defecto, para ver si la nuestra lo tiene podemos usar el comando slackpkg search httpd. Si no lo tenemos lo descargamos de algún sitio web de confianza, como por ejemplo: http://slackfind.net/ http://distrowatch.com/table.php?distribution=slackware NOTA IMPORTANTE: asegúrese de instalar justamente la versión de Apache correspondiente a su versión de Slackware. Lo primero que debemos hacer es ejecutar el comando “pkgtool” para ver si poseemos el servicio de apache. Luego vamos a View>Nombre del paquete. Luego para que este servidor Web trabaje correctamente, necesitamos darle los respectivos permisos al daemon de Apache. A continuación vamos a ver lo que contiene el archivo de configuración de Apache (httpd) y vamos a hacerle algunos ajustes. Para ello le damos los permisos y usamos el comando vim /etc/httpd/httpd.conf. En este archivo podemos agregar nuestro email para recibir cualquier error que un usuario pueda tener al intentar ingresar nuestro website. Luego, ponemos el nombre y el puerto con el cual nuestro sitio web se identifica. Si el host no tiene registrado el nombre de DNS, introduzca su dirección IP. También lo podemos establecer como localhost como en el ejemplo siguiente: Luego, agregamos lo siguiente para que nuestro servidor Web trabaje con los siguientesformatos: También descomentamos la siguiente línea quitándole el signo de número para que se habilite el sitio web que Apache trae creado por defecto. Luego, para ver si Apache ha sido instalado correctamente entramos a la página que Apache trae por defecto abriendo nuestro browser preferido. Podemos acceder a esta poniendo 127.0.0.1 (la ip del servidor con la cual apache se instaló) o simplemente escribiendo localhost. Creando un directorio de datos para descargar archivos desde un sitio web Ahora para poder descargar ficheros de nuestro servidor editamos el archivo html que tenemos por defecto. Para ello nos dirigimos a la siguiente ruta señalada: Con un poco de html lo editamos de la siguiente forma: Al editar este fichero tenemos que tener pendiente la creación de la carpeta de donde se van a descargar los archivos, en este caso se llamara “download” y estará ubicada en /var/www/htdocs y será publicada en el sitio web bajo el link “Archivos Disponibles para descargar” gracias al atributo “HREF”. En las siguientes imágenes se muestra la creación de la carpeta download. Ahora creamos dos archivos dentro de esta carpeta que estarán disponibles para descargar desde el website. Ahora vamos al navegador, tecleamos la ip de nuestro servidor y veremos la fachada de nuestra página que editamos en html en el index.html, le damos al link “Archivos Disponibles para descargar” y veremos los archivos a descargar. Creando dominios virtuales de Hosts en Apache. Un host virtual, o VirtualHost, en Apache nos permite mantener múltiples nombres de host en nuestro servidor, es decir, nos permite tener más de un servidor web con la misma IP a través de varias traducciones de DNS para tener más de una página web en la misma máquina. Ahora nos dirigiremos otra vez al archivo de configuración de Apache. Esto hará que se incluyan los hosts virtuales que creemos en el archivo httpdvhosts.conf. Cómo configurar Apache para crear un sitio Web Las configuraciones de los Hosts virtuales las podemos realizar tanto en el archivo httpd.conf como en httpd-vhosts.conf. Alli crearemos dos hosts virtuales para 2 websites diferentes usando la misma ip (la de nuestro servidor). Y editamos más o menos de esta manera: Ahora editamos el archivo etc/hosts para agregar el nombre de las nuevas páginas que acabamos de crear, esto tendrá efecto solo en su uso local. En caso de tener un servidor DNS no necesitamos hacer esto. Ahora para que todo lo anterior tenga efecto tenemos que agregar los directorios que señalamos para cada host virtual en el archivo httpd.conf. De la siguiente manera podemos hacerlo: Los directorios de CustomLog y ErrorLog que señalamos en httpd.conf vienen creados por defecto asi que no tenemos que crearlos, estos tendrán el nombre que especificamos en este archivo. Tambien tenemos que crear los archivos en html de cada virtual host y ubicarlos en el directorio “public_html” correspondiente. En resumidas formas esto lo hacemos de la siguiente forma: Por último reiniciamos el servicio de Apache con el comando /etc/rc.d/rc.httpd restart. Luego abrimos el web browser de nuestra preferencia y escribimos los nombres de los websites para probarlo: Controlando el acceso a archivos y directorios y archivos de un sitio web. Cuando un servidor apache recibe una petición de una página web, antes de devolver el resultado, lleva a cabo varias acciones para verificar que la petición está autorizada. Las distintas acciones que lleva a cabo para verificar la validez de la aplicación, se pueden agrupar en tres tipos: Autentificación, Autorización y control de acceso. La autentificación es el proceso por el cual se verifica la identidad de una persona. De una forma simple, este proceso se puede llevar a cabo mediante un nombre de usuario y una contraseña, pero se pueden llegar a utilizar otros Métodos para validar la identidad de una persona, como mediante el uso de certificados, tarjetas, etc. El control de acceso es el proceso por el cual se verifica que la máquina desde la que se ha hecho la petición, tiene acceso al recurso. Los controles de acceso se utilizan para limitar y controlar las máquinas que tienen acceso a un recurso independientemente del usuario que accede, ya que estos controles se llevan a cabo antes de que se realice el proceso de autentificación. En apache, el control de acceso se puede llevar a cabo mediante las directivas <directory> <files>y <location>, o a través del fichero de configuración .htaccess para controlar una carpeta especifica. En todo caso y para poder llevar a cabo la configuración de las tres características aquí enumeradas, autentificación, autorización y control de acceso, es necesario tener la directiva AllowOverride con el valor AuthConfig, para así permitir el uso de las distintas directivas de autentificación. Para controlar el acceso de usuarios primero vamos al archivo httpd.conf y agregamos lo siguiente Al website que queremos controlar (website1 en este caso): Las líneas que nos indican seguridad son AllowOverride y AuthConfig. AuthConfig nos indica que tenemos una configuración de autenticación para esta parte de la pagina “/srv/httpd/htdocs/website1”. Lo que haremos a continuación será crear 2 archivos indispensables para la seguridad en los sitios web, .htpasswords y .htaccess: En .htaccess se establece el tipo de permiso necesario y qué usuarios pueden acceder a qué archivos, mientras que en .htpasswords se guardan el nombre de usuario y contraseña de cada uno de ellos. Para guardar los nombres de usuario y sus contraseñas en el archivo .htpasswords hacemos lo siguiente: Ahora crearemos y editaremos el archivo .htaccess. Este archivo lo colocaremos en la carpeta que queremos proteger: Alli escribimos lo siguiente: Definiendo cada línea: Authtype ; Indica que el tipo de autentificación es básico. Authname ; Muestra el nombre del sitio. Al intentar entrar al website te aparecerá una ventana de dialogo con un formulario de acceso por nombre de usuario y contraseña con un mensaje similar a “Está intentando entrar a Restricted Access, debe especificar un nombre de usuario y contraseña”. AuthUserFile ; Le tenemos que indicar la ruta absoluta hacia nuestro archivo .htpasswords, lo normal es poner el archivo de contraseñas fuera del alcance de la web, es decir, fuera de la carpeta public_html o similar. Require user ; Indica que el único usuario que puede entrar es root, cualquier otro -aunque la contraseña sea correcta- no será válido. Podemos agregar tantos usuarios como deseemos. Aunque no lo haremos en este tutorial, pero podríamos incluso proteger un archivo del website en particular agregando lo siguiente a .htaccess: <Files "nombre_del_archivo"> Require user root </Files> O en vez de poner Require user root podríamos poner Require valid-user para que pueda entrar cualquier usuario que se encuentre en el archivo .htpasswords. De vuelta con las configuraciones, Ahora tenemos que asignarle una clave de acceso al usuario que hemos nombrado en el archivo “.htaccess” (root en este caso), para ello usamos el comando: htpasswd –c ; es el comando para crear una contraseña de httpd a un usuario. El directorio que especificamos es el que almacenara la contraseña (encriptada en MD5) de este usuario, como se ve en la siguiente imagen: Por ultimo reiniciamos el servidor apache con el comando /etc/rc.d/rc.httpd restart: Para probarlo vamos al web browser e ingresamos el nombre o la ip del website que configuramos para protegerlo, al intentar ingresar debería aparecer el siguiente cuadro pidiéndonos que ingresemos la cuenta y la contraseña httpd de un usuario con permiso para acceder. Tras ingresarla deberíamos de ser capaces de ver el sitio tal como lo vemos en la siguiente imagen.