Directorios virtuales

Un directorio virtual es un directorio que puede no encontrarse físicamente en el directorio raíz, por ejemplo C:\Inetpub\wwwroot, refiriéndonos a Windows, pero que puede ser accedido por medio del servidor web como si estuviera físicamente en el directorio raíz.

Para lograr esto hacemos uso de un alias al cual asociamos una ruta especifica en disco  con lo que se conseguirá acceso al directorio especificado en dicha ruta.
tanto IIS como apache hace uso de directorios virtuales para realizar publicaciones web sin tener que ubicar físicamente un directorio particular o raíz con esto me refiero que basta con mapear su ubicación con respecto a la raíz y asociar un alias para tener un contenido web completamente accesible.
tanto apache como IIS hacen uso de un nombre Ficticio (alias) para referirse a una ubicación real.

 
Como se configuran en apache.

nos ubicamos en la siguiente ruta

nano /etc/apache2/httpd.conf

una vez allí ingresamos las siguientes líneas

Alias /anime   /home/anderson/Desktop

<Directory  /home/anderson/Desktop>

Order allow,deny

Allow from all

</Directory>

De esta forma ya tenemos publicada nuestra carpeta y su contenido como se muestra a continuación.

 

Oksoft.es 0013

 

Como se configura en Windows.

 

Bueno como ya es sabido en Windows el mismo proceso lo realizamos de forma grafica como se describe a continuación.

 

Primero damos clic derecho sobre sitio al cual queremos añadir otro directorio, y seleccionamos nuevo directorio virtual como se muestra en la imagen.

Oksoft.es 0014

Inmediatamente se no inicia el asistente al cual le damos siguiente para continuar.

Oksoft.es 0015

Acá especificamos el alias con el cual vamos a identificar ese directorio.

Oksoft.es 0016

y especificamos la ruta donde se encuentra el directorio que queremos virtualizar

Oksoft.es 0017

Determinamos los permisos de acceso

Oksoft.es 0018

y finalizamos.

Oksoft.es 0019

Para visualizar si todo a salido bien damos clic sobre el sitio y se nos tiene que mostrar de esta forma.

 Oksoft.es 0022

Para accederlo desde el navegador se tiene que colocar el sitio mas el alias de la carpeta que se virtualizo, como se muestra a continuación.

Oksoft.es 0021

 

Como hemos podido ver Linux es mucho mas flexible a al hora de virtualizar un directorio, ya que este no requiere que necesariamente se desprenda de un sitio, como pasa con Windows, pero como siempre Windows tiene la ventaja de ser grafico y por ende mas practico.

Proxy inverso con nginx y apache

 

todos sabemos  y no es un secreto que un servidor proxy inverso es un intermediario entre el trafico entrante de internet y nuestros servidores web, con esto me refiero que cada solicitud que se realice a nuestros servidores web debe pasar primero por nuestro servidor proxy, el cual  realiza una petición a uno de los servidores en forma aleatoria, si estamos publicando el mismo contenido en mas de un servido (balanceo de carga) , o si simplemente contamos con un servidor como en mi caso que trabajar con dominios virtuales en apache. en cualquiera de las dos situaciones  el que presenta los datos solicitados al usuario es el servidor proxy.

uno de los grande beneficios de contar con un servidor proxy inverso es el de las seguridad, dado que el usuario que realiza una solicitud web no interactúa directamente con los servidores web.

 

como instalar nginx

apt-get install nginx

una vez intalado

vamos al archivo de configuracion

nano /etc/nginx/nginx.conf

y modificamos el archivo por este.

 

# smart default nginx (Ubuntu 9.04)

user                www-data www-data;
worker_processes    1;

error_log           /var/log/nginx/error.log warn;
pid                 /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
}

http {
    # allow long server names
    server_names_hash_bucket_size 64;
    
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log          /var/log/nginx/access.log;
    
    # spool uploads to disk instead of clobbering downstream servers
    client_body_temp_path /var/spool/nginx-client-body 1 2;
    client_max_body_size 32m;
    client_body_buffer_size    128k;
    
    server_tokens       off;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         off;

    keepalive_timeout   5;
    
    ## Compression
    gzip on;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_min_length  1100;
    gzip_buffers 16 8k;
    gzip_types text/plain text/html text/css application/x-javascript \
        text/xml application/xml application/xml+rss text/javascript \
        image/gif image/jpeg image/png;
    # Some version of IE 6 don't handle compression well on some mime-types, 
    # so just disable for them
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    # Set a vary header so downstream proxies don't send cached gzipped 
    # content to IE6
    gzip_vary on;
    
    # proxy settings
    proxy_redirect     off;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 0;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;

    include             /etc/nginx/sites-enabled/*;
    include 		/etc/nginx/conf.d/*.conf;


}

ahora configuramos  nginx para entrelazarlo con  el sitio de apache  que queremos publicar, en caso de tener varios tenemos que crear varios sites como los que se muestran a continuacion.

nota: site es el nombre que le he querido poner a mi sitio.

primero vamos a siguiente ruta

cd  /etc/nginx/sites-available/

ahora creamos y editamos

nano site

y ponemos esto dentro

 

server{
listen 192.168.1.106:80;
server_name www.anime.com anime.com;
location / {
proxy_pass http://192.168.1.106:8080;
include /etc/nginx/proxy.conf;
}
location / {
root /var/www/nginx-default/;
}
} 

 

lo explico

 

1.listen: es la direccion publica en mi caso privada por donde va ha escuchar nginx + el puerto. 

2. server name: especificamos el FQDN y el dominio.

3.proxy_pass: la direccion y el puerto por donde va eschusar el servidor apache.

4. root: es la ruta donde se encuentra nuestro sitio alamacenado.

 

explico un poco lo de los puertos, nginx como va hacer el que recibe la peticion va eschucar directament por el puerto 80, en consecuencia debemos modificar el puetor por donde escucha nuestro servidor apache para no crear conflicto y lograr que ambos queden funcionales.  

 

una vez terminada la configuracion anterior ejecutamos la siguiente linea

 

 ln  -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/site

ahora para poder procesar la peticiones que se realicen a nuestro sitio via apache creamos el siguiente archivo en la siguiente ruta.

nano /etc/nginx/proxy.conf

he ingresamos las siguiente lineas.

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

 

ahora reiniciamos nginx

/etc/init.d/nginx restart

 

instalación y configuracion de apache

 

para isntalar basta con el siguiente comando.

apt-get install apache2

 

ahora modificamos el puero por donde escucha para no crear conflicto como lo mencionamos anteriormente.

vamos a la siguiente ruta.

cd /etc/apache2

y editamos el siguiente archivo.

nano ports.conf

para que quede de la siguiente manera.

 

NameVirtualHost *:8080

Listen 8080

Aora creamos un archivo de configuración para site en /etc/apache2/sites-available/site

he incluimos la siguientes lineas.

 

NameVirtualHost 192.168.1.106
 <VirtualHost 192.168.1.106>
         ServerName www.anime.com
         ServerPath /nginx-defaul
        DocumentRoot /var/www/nginx-default
        Directoryindex  nada.html  index.html index.php index.shtml
  <Directory /var/www/nginx-default>
     AllowOverride All
     Options MultiViews Indexes SymLinksIfOwnerMatch
     Allow from All
   </Directory>
 
   </VirtualHost>

 

no olvidar publicar nuestro sitio en la carpeta web, en la ruta que especificamos en el DocumentRoot  la mía es /var/www/nginx-default

reiniciamos apache

/etc/init.d/apache2 restart

ahora verificamos si todo ha salido bien.

ingresamos a un navegador y digitamos el nombre del dominio en mi caso es www.anime.com nos debería salir algo como esto.

 

Oksoft.es 0020

 

en esta configuracion todavía no esta redirigiendo pero lo ideal seria que lo hiciera, acepto cualquier sugerencia, por el momento especificamos el sitio en mi caso es nada.html

y se nos debe mostrar algo como esto, que es a modo de ejemplo.

 

Oksoft.es 0021

 

nota:  si tenemos paginas en lenguajes como .asp o .php el proxy debe soportar estos lenguajes para poder publicarlos , para el caso de .php podemos instalar mod_wsgi.

con el siguiente comando.

apt-get install libapache2-mod-wsgi

 

si desena verificar si se esta realizando primero la conexión con el proxy y después con el apache revise los log de nginx y apache hay se muestra todo muy bien.

Integracion de servidores web

Recuperacion de datos

Como montar un disco en linux

Ayer tuve una necesidad inmediata de montar un disco, por que necesite espacio para guardar unos archivos recuperados y me pareció interesante realizar un post sobre este tema ya que muchos en ocasiones les puede suceder lo mismo y esta guía les puede ser de utilidad.

lo primero que hay que hacer es obviamente conectar el disco, hecho esto necesitamos saber que nombre recibió para poder llamarlo al momento de quererlo montar, para ello tecleamos el siguiente comando.

dmesg :  mensajes de diagnóstico, es un comando presente en los sistemas operativos Unix que lista el buffer de mensajes del núcleo. Este buffer contiene una gran variedad de mensajes importantes generados durante el arranque del sistema y durante la depuración de aplicaciones. La información ofrecida por dmesg puede guardarse en el disco duro mediante un demonio de registro, como syslog.

El comando dmesg puede redirigirse a tail para tener una visión de los últimos acontecimientos ocurridos en el sistema, vía el comando

dmesg | tail

de esta forma ya sabremos que un disco ha sido agregado al sistema, y podremos verificar que nombre le ha sido asignado.

ahora dependiendo del caso podemos hacer dos cosas.

1. necesitamos realizar un particionamiento del disco.

lo que se debe hace es ingresa en consola lo siguiente.

escribimos

fdisk /dev/sdb

1

luego pulsamos m para listar la opciones del comando.

2

presionamos n para crear una nueva particion, podemos seleccionar extendida con e o primaria con p.

3

ahora nos pide que referenciemos el segmento 1 a 4, si usted quiere puede realizar las cuatro pariciones primarias o tres primarias y una extendía, eso va a depender de su necesidad.

declare el numero de la partición como mencione antes (1-4) y asigne el tamaño del cilindro.

ahora vuelva a presionar m para listar la opciones del comando y presione w para que los cambios se hagan efectivos.

4

2. no requerimos particionamiento, por que va hacer un disco de almacenamiento de películas juegos o no se cualquier cosa.

entonces podemos saltarnos el paso del particionamiento y pasar de una vez a darle formato al disco para poder escribir en el.

el comando para ello es

mksf.ext3 /dev/sdb

6

nos va a pedir una confirmación por que queremos darle formato a todo el disco, como no especificamos particion, para aceptar pulsamos s.

7

y este ya es el resultado final.

8

ahora montamos el dispositivo para poder acezar al el.

lo primero es crear el directorio donde vamos a montar el dispositivo

mkdir nuevo

estando ubicados en media.

ahora si lo montamos

mount –t ext3 /dev/sdb /media/nuevo

Oksoft.es 0002

bueno ya tenemos montado nuestro dispositivo y listo para almacenar en el, pero que sucede si apagamos el equipo, pues nos tocaría cada vez que lo encendamos volver a montar la partición y eso es muy cansón.

para solucionar eso vamos a agregar unas líneas en el archivo fstab.

Este archivo, por mas pequeño que parezca, contiene todos los parámetros para que se monten todas las particiones de el o los discos que tenemos en nuestra maquina.

No tiene muchas cosas dentro, pero lo que en el está escrito es fundamental para que podamos tener acceso a nuestro disco/partición, así también como a su funcionamiento.

lo hacemos de la siguiente manera

editamos el archivo con su editor preferido.

nano /etc/fstab

de la forma que se muestra en la imagen

Oksoft.es 0003

cabe aclarar que los cambios se verán después que reinicies el equipo, por que ya no tendrás que montar nada ya que el sistema lo hace por ti.

Apache Top

apache-top  nos proporciona una visualización en tiempo real de los procesos activos de un servidor apache remoto.

Algo muy útil si eres el encargado de un servidor web 

Con la implementación de apache-top se pueden obtener los siguientes resultados

  • Los procesos de apache activos con sus PID asociados, el estado, los segundos de actividad, el uso de la CPU, el VirtualHost asociados, el acceso a la propiedad intelectual y de la solicitud (POST o GET, el archivo que se accede y el protocolo utilizado)
  •  

  • El tiempo de actividad del servidor y la última vez que se reinicia
  •  

  • El uso de CPU
  •  

  • Las solicitudes por segundo, Kb por segundo y el promedio por solicitud Kb
  •  

  • Número de procesos activos e inactivos
  •  

  • Un gráfico con los procesos inactivos y activos y su estado
  •  

    su instalación realmente es muy fácil en linux basta con un

     

    apt-get install apachetop

    lo ejecutamos desde la línea de comandos con

    apachetop

     

    y obtendremos una ventana como la que se muestra a continuación

     

    1

    Las cinco primeras líneas presentan información interesante relativa a los procesos en curso.

    last hit: 17:33:26         atop runtime:  0 days, 00:03:34             17:33:38
    All:            4 reqs (   0.0/sec)       3598.0B (   24.0B/sec)     899.5B/req
    2xx:       2 (50.0%) 3xx:       2 (50.0%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)
    R ( 30s):       2 reqs (   0.1/sec)       1799.0B (   60.0B/sec)     899.5B/req
    2xx:       1 (50.0%) 3xx:       1 (50.0%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)

    La primera línea contienen la hora del último acceso, el tiempo de ejecución del comando y la hora actual.

    last hit: 17:31:08         atop runtime:  0 days, 00:02:29             17:32:33

    Las cuatro líneas siguientes presentan la información por pares:

    En la segunda y tercera linea se contemplan los datos almacenados desde la ejecución del comando y en la cuarta y quita se presenta la información actual en tiempo real, permaneciendo allí los datos durante un tiempo por defecto que se puede parametrizar.

    Atendiendo al primer par, la segunda línea, de izquierda a derecha, contiene el total de solicitudes que el programa ha procesado desde su ejecución, el número de peticiones por segundo, el total de datos transferidos, el volúmen de transferencia de esos datos por segundo y, por último, una media de cantidad de datos por solicitud.

    All:            4 reqs (   0.0/sec)       3598.0B (   24.0B/sec)     899.5B/req

    La tercera línea presenta la información de respuesta del servidor por código y se divide en la cantidad de respuestas y, entre paréntesis, su porcentaje con respecto al total.

    2xx:       2 (50.0%) 3xx:       2 (50.0%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)

    La cuarta y quienta línea muestran información idéntica al primer par, pero sólo se visualizará la media de los datos que se han leído desde el parámetro especificado durante la ejecución del programa. Por defecto, ese parámetro se establece en un valor treinta segundos. Mediante los parámetros H (hits) y T (time) podremos cambiar ese valor a nuestro antojo, lo cual reflejará distintos estados en el último par de líneas descrito

     

     

    fuente: http://ismich.wordpress.com/2009/01/22/monitorizar-apache-con-apachetop/

    Monitoreo DNS

    En ocasiones  es muy necesario conocer el rendimiento de mi servidor DNS en tiempo real, me refiero a cuantas consultas o peticiones recibe a cada momento,  puedo saber quién hace consultas en mi servidor DNS o dominio específico o direcciones específicas de los clientes, o conocer el momento exacto en el que el servicio llegara a salir de la red.

    Dnstop es una herramienta  para escuchar en el dispositivo o para analizar el archivo savefile y coleccionar e imprimir las estadísticas sobre la red local de tráfico de DNS, permitiéndome estar completamente informado del performance de mi DNS.

    para instalar el dnstop.

    apt-get install dnstop

    Para ejecutarlo y  ver el trafico por medio dnstop solo tenemos que especificar la interfaz por donde queremos escuchar.

    dnstop eth0

    Presionando los botones de 1 2 3 4 se pueden ver los diferentes tipos de reportes que tiene la herramienta.

    la ayuda la podemos visualizar con el signo ?

    En  esta ventana se debería visualizar los reportes, pero en mi caso no tengo ningún servidor DNS instalado , peor espero que les sea de utilidad.

    Screenshot