Definir un VirtualHost en Apache para Windows

Una vez instalado Apache en Windows, podemos proceder a definir un VirtualHost, VHost o Host Virtual el cual nos permitirá acceder a nuestro sitio a través del servidor web.

Antes que nada es necesario que definamos un dominio local para nuestro VirtualHost (para evitar utilizar localhost) en caso de que no contemos con un servidor de DNS.

Acceder al archivo de configuración

Para comenzar debemos recordar la ubicación donde instalamos Apache.

Una vez allí debemos abrir con un editor de textos el archivo: conf\httpd.conf

Permitir la utilización de Virtualhosts

Esta acción se realiza de diferentes maneras según la versión de Apache:

Versión 2.0.x

Quitar el comentario de la línea (sólo borrando el # inicial):

NameVirtualHost *:80

Versión 2.2.x

Quitar el comentario de la línea (sólo borrando el # inicial):

Include conf/extra/httpd-vhosts.conf

Agregar un VirtualHost

Nuevamente, dependiendo de la versión de Apache

Versión 2.0.x

Al final del texto de httpd.conf, copiar la plantilla propuesta y ajustarla

Versión 2.2.x

Editar el archivo conf\extra\httpd-vhosts.conf, borrar los virtualhosts definidos, copiar la plantilla propuesta y ajustarla

Reiniciar Apache

Procedemos a reiniciar el servicio de Apache para que tome la nueva configuración.

Probar el VirtualHost

Abrimos un navegador y accedemos al dominio local que hayamos determinado y veremos que se muestra el contenido correspondiente.

 

Plantilla de VirtualHost

<VirtualHost *:80>
    ServerAdmin user@localhost
    DocumentRoot SITE_PATH
    <Directory SITE_PATH>
        Options +Indexes
        Allow from All
    </Directory>
    DirectoryIndex INDEX_LIST
    ServerName DOMINIO_LOCAL
    ErrorLog logs/www-error_log
    CustomLog logs/www-access_log common
</VirtualHost>

A continuación les explico cada una de las líneas:

<VirtualHost *:80>

Define un VirtualHost. En lugar de * se podría indicar una dirección IP para que solamente se acceda al sitio a través de la misma y separado por dos puntos se indica el puerto, en este caso, el puerto por defecto 80.

ServerAdmin user@localhost

Establece el mail del administrador del VirtualHost (solo a fines nominativos)

DocumentRoot SITE_PATH

Determina la ubicación en disco donde se encuentra nuestro sitio. En SITE_PATH debemos indicar esa ruta.

<Directory SITE_PATH>

Define las configuraciones de la ruta a nuestro sitio. SITE_PATH debe establecerse igual que en la directiva DocumentRoot.

Options +Indexes

Indicamos de esta manera que se listen los archivos contenidos en el SITE_PATH si no se determinara uno por defecto.

Allow from All

Establece que todos los hosts puedan acceder al área indicada. La versión 2.2.x de Apache bloquea el acceso por defecto.

DirectoryIndex INDEX_LIST

Define el listado de archivos que el servidor web intentará abrir por defecto (en el orden presentado) cuando no se especifique uno. INDEX_LIST es una concatenación de archivos separados por coma: index.html, index.php

ServerName DOMINIO_LOCAL

Indica el dominio al cual responde este VirtualHost.

ErrorLog logs/www-error_log

Ubicación del log de errores

CustomLog logs/www-access_log common

Ubicación del log de accesos (requests) y su formato, en este caso “common”, el cual se encuentra definido previamente en la configuración de Apache

Ejemplo de VirtualHost configurado

<VirtualHost *:80>
    ServerAdmin andres@localhost
    DocumentRoot c:/www/site/
    <Directory c:/www/site/>
        Options +Indexes
        Allow from All
    </Directory>
    DirectoryIndex index.php
    ServerName virtualsite
    ErrorLog logs/virtualsite-error_log
    CustomLog logs/virtualsite-access_log common
</VirtualHost>

habiendo definido en el archivo hosts

127.0.0.1 virtualsite

Anuncios

Reiniciar servicio de Apache

Existen varias maneras de reiniciar Apache. Ellas dependen principalmente del sistema operativo:

Windows

a. Mediante la línea de comandos:

  1. Acceder a la línea de comandos
  2. Utilizar el comando correspondiente según la versión de Apache:

net stop apache2 && net start apache2

net stop apache2.2 && net start apache2.2

b. Mediante el monitor de Apache:

  1. Click izquierdo sobre el icono de Apache en el área de notificaciones de la barra de tareas (abajo a la derecha)
  2. Posicionarse sobre el servidor Apache
  3. Elegir la opción “Restart” (esperar unos segundos – no hay indicador visual del proceso)

Linux

Para efectuar este proceso debemos acceder a una consola y tener permiso de superusuario, ya sea precediendo el comando con sudo o habiendo realizado un su previamente. Podemos elegir alguna de las siguientes formas:

/etc/init.d/apache2 restart

apache2ctl restart

En Linux está la posibilidad de utilizar, en lugar de restart, el comando reload que no detiene el servicio y solo recarga la configuración!

/etc/init.d/apache2 reload

Instalar Apache en Windows

La forma de instalar el servidor web Apache en Windows es bastante simple, pero no está demás plantear los pasos y resaltar algunas variantes entre las versiones disponibles. La idea es poder hacerlo de la manera más sencilla y posteriormente hacer las configuraciones necesarias.

En particular, este instructivo es válido para versiones de Apache 2.0 y 2.2 para Windows de 32 bits sin SSL en archivos binarios (msi), ambas descargadas de http://httpd.apache.org/download.cgi.

Una vez que se ejecuta el instalador:

  1. Aceptar los términos de la licencia y presionar “Next >” (2 veces)
  2. Establecer las siguientes configuraciones y presionar “Next >”
    • Network Domain: localhost
    • Server Name: localhost
    • Administrator’s Email Address: dirección de correo del administrador del servidor, la cual aparecerá cuando exista un error a nivel de servidor web.
      • Se puede utilizar una dirección ficticia: ej. user@localhost
    • Seleccionar usuario, puerto y tipo de inicio: La recomendación es “All Users, on Port 80, as a Service — Recommended” que permitirá que todos los usuarios puedan utilizar el servidor web en el puerto 80 (que es el puerto por defecto para la navegación).
      • Alternativamente se puede instalar solo para el usuario actual y que manualmente se deba lanzar para poder ser accedido mediante el puerto 8080.
  3. Eelgir el Tipo de instalación: “Custom” y presionar “Next >”
  4. La recomendación es mantener el Path propuesto que varía dependiendo de la versión y presionar “Next >”.
  5. Confirmar presionando “Install” y luego “Finish”

Para hacer la prueba mínima de funcionalidad, abrimos un navegador y accedemos a:

http://localhost

Si en el punto 4 elegimos la opción no recomendada, deberemos iniciar el servicio (apache2 o apache2.2 dependiendo de la versión) y la url será ligeramente diferente:

http://localhost:8080

Si vemos una página, entonces estamos seguros de que se ha realizado correctamente el proceso. El contenido de esa página puede ser:

  • ¡Funcionó! ¡El Servidor de Red Apache ha sido instalado en ese sitio!
  • It works!

Exportar la configuración de PuTTY en Windows

La configuración de las conexiones guardasas en PuTTY se almacenan en el registro de Windows. Si necesitamos respaldarlas solo debemos exportar la siguiente clave:

HKEY_CURRENT_USER\Software\SimonTatham

con todas las claves que contenga dentro.

 

Dato curioso: La clave tiene ese nombre debido a que Simon Tatham fue el generador del proyecto y es uno de los principales desarrolladores.

Exportar claves del registro de Windows

Determinados programas almacenan información en el registro de Windows. Ya sea por motivos de hacer una copia de seguridad, reinstalar el equipo o establecer dicha configuración en otro, debemos conocer cómo exportar las claves de registro asociadas.

Para abrir el Editor de registro, presionamos Win + R (Ejecutar…) e ingresamos “regedit”.

Desde la aplicación podremos navegar por un árbol de claves de registro hasta que demos con la que necesitamos mantener. Utilizando Edición > Buscar podremos encontrar la clave deseada si es que conocemos parte de su nombre. El proceso de búsqueda no es muy rápido, pero como máximo serán unos minutos.

Una vez que tengamos determinada la clave requerida:

  1. Click derecho sobre la clave
  2. Elegir la opción Exportar
  3. Elegir una ubicación y escribir  un nombre para el archivo
  4. Confirmar con Guardar

Ese archivo es el que debemos conservar. Cuando necesitemos agregar las claves que contiene al registro de un equipo, basta con hacerle un doble click y confirmar la operación.

Comprimir archivos o directorios en Linux

Para transferir un archivo grande como puede ser un dump de una base de datos, o un directorio con muchos archivos, como puede ser el directorio de datos de una aplicación, lo más recomendable es comprimirlos.

En Linux, podemos comprimir un directorio desde la línea de comandos:

tar czf comprimido.tgz directorio

De esta manera, se comprime con gzip el directorio con todo su contenido en el archivo comprimido.tgz. Podemos usar la extensión tgz o tar.gz

En el momento que deseemos extraer su contenido:

tar xzf comprimido.tgz

 

Los argumentos principales con los que se invoca tar son:

  • -c, –create: Crea un archivo nuevo
  • -z, –gzip: Comprime con gzip
  • -f ARCHIVO, –file=ARCHIVO: Archivo a utilizar
  • -v, –verbose: Indica más detalle del trabajo que se realiza. Ej: muestra los archivos a medida que se van agregando
  • -x, –extract: Extrae el contenido de un archivo

Se pueden indicar de diferentes maneras junto al comando (todas generan el mismo resultado):

tar --create --gzip --file=comprimido.tgz directorio

tar -c -z -f comprimido.tgz directorio

tar -czf comprimido.tgz directorio

tar czf comprimido.tgz directorio

 

 

Evaluar y finalizar procesos de MySQL

Cuando el servidor se encuentra con mucha carga de CPU, podemos analizar los procesos en ejecución con el comando top en Linux o mediante el administrador de tareas en Windows.

En caso de que el servicio de Mysql sea el que está consumiendo principalmente los recursos, tenemos la posibilidad de ver en detalle lo que está sucediendo.

Para obtener los procesos que se están ejecutando en el servidor Mysql, abrimos una conexión e introducimos el comando:

mysql> SHOW PROCESSLIST;

    Id   User Host            db     Command   Time State  Info 
------ ------ --------------- ------ ------- ------ ------ ----------------
   130   root localhost:51094 (NULL) QUERY        0 (NULL) SHOW PROCESSLIST
   131   root localhost:51095 (NULL) Sleep     1143 (NULL)

En los resultados, se muestran los procesos asociados a la cuenta con la que nos encontramos conectados. Si esta cuenta tiene el privilegio “Process” entonces verá los procesos de TODAS las cuentas (se puede consultar con SHOW PRIVILEGES).

Esta consulta presenta solamente los primeros 100 caracteres de la consulta en la columna Info. Para ver la consulta completa, se debe agregar el parámetro FULL:

mysql> SHOW FULL PROCESSLIST;

Si vemos que alguno de los procesos está bloqueando todo el resto y queremos terminarlo, utilizamos:

mysql> KILL <ID>;

donde ID es el identificador del proceso mostrado en el resultado del PROCESSLIST.