Realtime website statisticsRealtime blog tracking

Instalando Web Servers..

Primero vamos a arrancar con Lighttpd:

Lo primero que hacemos es instalar desde consola, lighttpd:

aptitude install lighttpd

Ya está, tenemos funcionando nuestro servidor web.. muy dificil ..
Ahora lo que vamos a hacer es darle soporte para php, entonces instalamos el paquete:

aptitude install php5-cgi

Para que PHP5 funcione correcamente deberemos agregar un par de cositas a nuestra configuración tanto de php.ini como de lighttpd.conf.

Empezamos por agregar al final del archivo php.ini lo siguiente:

nano /etc/php5/cgi/php.ini

cgi.fix_pathinfo = 1

Y ahora editamos lighttpd.conf y agregamos al final del archivo lo siquiente:

nano /etc/lighttpd/lighttpd.conf

Y agregamos:

fastcgi.server = ( “.php” => ((
“bin-path” => “/usr/bin/php-cgi”,
“socket” => “/tmp/php.socket”,

Para cambiar el puerto de escucha del lighttpd editamos nuevamente lighttpd.conf y agregamos estas lineas (en este caso ponemos en escucha el puerto 8080)

server.port = 8080
server.socket = “[::]:8080″

Ahora habilitamos el módulo fastcgi:

lighttpd-enable-mod fastcgi

Reiniciamos la configuracion de lighttpd para que tome los cambios:

/etc/init.d/lighttpd force-reload

Ahora creamos el popular phpinfo para ver si funciona nuestro php:

nano /var/www/info.php

Agregamos:

< ?php
phpinfo();
?>

Ahora deberiamos ingresar a la ip del servidor poniendo /info.php y debería aparecernos algo como esto:

Listo, ya está funcionando .. sigamos con cherokee que es más lindo! (aptitude purge lighttpd)

Comenzamos por instalarlo con el querido amigo aptitude:

aptitude install cherokee

Y ya deberia estar funcionando!

Ahora para poder ingresar al panel de control de Cherokee vamos a escribir lo siguiente, (fijandonos que ip tenemos en la maquina anfitriona, en mi caso por ejemplo tengo la 192.168.1.101 entonces pondria)

cherokee-admin -b 192.168.1.101

Eso nos va a generar un usuario y contraseña con los que debemos ingresar al panel de control (NO PARAR CON CTRL+C)

El panel se ve parecido a esto, para agregar soporte a php5 vamos a seguir los mismos pasos que con lighttpd salvo lo de agregar lineas en lighttpd por obvias razones..

O sea que vamos a necesitar el php5-cgi y la linea en php.ini, sigamos estos pasos para activar php:

Listo .. pase el que sigue!

Nginx

Primero, usamos el dificilisimo aptitude:

aptitude install nginx

Ya deberíamos poder ingresar al sitio..

Ahora terminamos de instalar todos los paquetes para php5 ..

aptitude install php5-cgi php5-fpm php5-dev php5-curl php5-cli php5-imagick php5-sqlite php-pear

Ahora vamos a darle soporte con FastCGI, lo que hacemos es abrir el archivo defaults situado en /etc/nginx/sites-available

nano /etc/nginx/sites-available/default

Agregamos esto (antes podriamos hacer un echo > para borrar todo)

# You may add here your
# server {
# …
# }
# statements for each of your virtual hosts

server {

listen 80; ## listen for ipv4
listen [::]:80 default ipv6only=on; ## listen for ipv6

server_name localhost;

access_log /var/log/nginx/localhost.access.log;

location / {
root /var/www;
index index.php index.html index.htm;
}

location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}

location /images {
root /usr/share;
autoindex on;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
location ~ /\.ht {
deny all;
}
}

Te sirvió ? Compartilo !

Servidor NFS bajo Debian

¿Qué es NFS?

El Network File System , o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales. Originalmente fue desarrollado en 1984 por Sun Microsystems, con el objetivo de que sea independiente de la máquina, el sistema operativo y el protocolo de transporte, esto fue posible gracias a que está implementado sobre los protocolos XDR (presentación) y ONC RPC (sesión) . El protocolo NFS está incluido por defecto en los Sistemas Operativos UNIX y la mayoría de distribuciones Linux.

Características de NFS

* El sistema NFS está dividido al menos en dos partes principales: un servidor y uno o más clientes. Los clientes acceden de forma remota a los datos que se encuentran almacenados en el servidor.

* Las estaciones de trabajo locales utilizan menos espacio de disco debido a que los datos se encuentran centralizados en un único lugar pero pueden ser accedidos y modificados por varios usuarios, de tal forma que no es necesario replicar la información.

* Los usuarios no necesitan disponer de un directorio “home” en cada una de las máquinas de la organización. Los directorios “home” pueden crearse en el servidor de NFS para posteriormente poder acceder a ellos desde cualquier máquina a través de la infraestructura de red.

* También se pueden compartir a través de la red dispositivos de almacenamiento como disqueteras, CD-ROM y unidades ZIP. Esto puede reducir la inversión en dichos dispositivos y mejorar el aprovechamiento del hardware existente en la organización.

Todas las operaciones sobre ficheros son síncronas. Esto significa que la operación sólo retorna cuando el servidor ha completado todo el trabajo asociado para esa operación. En caso de una solicitud de escritura, el servidor escribirá físicamente los datos en el disco, y si es necesario, actualizará la estructura de directorios, antes de devolver una respuesta al cliente. Esto garantiza la integridad de los ficheros.

Vamos a ver cómo funciona, empezamos por descargar los archivos para montar nuestro servidor NFS.

apt-get install portmap

apt-get install nfs-kernel-server

apt-get install nfs-common

La configuración de NFS consta de 3 archivos, /etc/exports, /etc/hosts.deny y /etc/hosts.allow.

En /etc/exports irán los directorios que vamos a compartir, la estructura es bastante simple.

CARPETA-A-COMPARTIR – MODO EN QUE SE COMPARTE – CLIENTE/S QUE VA A TENER ACCESO

Ejemplo:

// Ejemplo de archivo /etc/exports de configuración del servidor NFS:

# Compartir la carpeta home del servidor
# en modo lectura y escritura y accesible desde la red 10.0.0.1/24
/home 10.0.0.1/255.255.255.0(rw)

# Compartir carpeta tmp a todos como ‘solo-lectura’
/tmp *(ro)

# Compartir carpeta /var/log a un PC como ‘solo-lectura’
/var/log 10.0.0.5(ro)

Los archivos /etc/hosts.allow y /etc/hosts.deny tienen la siguiente estructura:

SERVICIO: HOST/S

El servicio será justamente al que tendrá acceso el cliente, en este caso portmap y rpc.nfsd

En el caso de hosts.deny lo aconsejable es dejar el portmap:ALL puesto que sin este servicio será imposible acceder a los archivos compartidos.

Una vez que seteamos la configuración, tendremos que reiniciar el servicio de NFS:

/etc/init.d/nfs-kernel-server restart

Iniciamos portmap

/etc/init.d/portmap start

Listo, ya tenemos configurada la parte del Servidor NFS, ahora nos toca configurar nuestro cliente para acceder a los archivos compartidos:

Instalamos nfs-common en la maquina cliente:

apt-get install nfs-common

Creamos una carpeta en /mnt o donde tengamos ganas para luego montarla:

mkdir /mnt/compartido

y montamos la carpeta compartida de nuestro Servidor NFS:

mount -t nfs IP.SERVER:/carpeta-compartida /mnt/compartido

Listo, ya tenemos montada la carpeta compartida, para que quede automáticamente montada al iniciar el sistema sólo debemos añadirla a nuestro fstab

nano /etc/fstab

y añadimos al final:

ip-del-servidor:/CARPETA-COMPARTIDA /mnt/compartido nfs

Te sirvió ? Compartilo !

Samba y Cups

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que máquinas con GNU/Linux o Mac actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio, como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autenticar con su propio archivo de usuarios.

Instalando Samba ..

aptitude install samba samba-common samba-client smbfs

Lo primero que vamos a hacer es agregar un usuario, de una manera distinta, puesto que la mayoría de las veces que un usuario se conecte vía Samba no va a necesitar acceso a la consola, por lo tanto crearemos el usuario de la siguiente manera:

Planteemos el escenario, hagamos de cuenta que vamos a crear al usuario “patito” y su ip es la 10.0.0.7

useradd -s /bin/nologin patito

Lo que sigue es asignarle una clave al usuario con smbpasswd:

smbpasswd -a patito

Listo, hasta acá ya creamos un usuario en el sistema y su respectiva clave para Samba.

Pasemos a la configuración de Samba:

El archivo de configuración se encuentra en /etc/samba/smb.conf

Editamos la configuración y vamos viendo un par de parámetros dentro de ella..

nano /etc/samba/smb.conf

workgroup = instel: Define el grupo de trabajo donde trabajará Samba.
server string = Servidor Samba Instel: Mensaje de Bienvenida de Samba
netbios name = debian: Se indica el nombre del equipo (en mi caso, debian)
interfaces = lo eth0 192.168.1.1/24 : Las interfaces que tendrán permiso, cualquiera no incluída será ignorada.
log file = /var/log/samba/log.%m : Lugar donde se guardará el log
max log size = 50 : Tamaño del log

Todo muy lindo, y cómo compartimos algo acá ?

Muy fácil, creamos un “entorno” dentro de la misma configuración, un ejemplo acá abajo y luego la explicación de cada parámetro:

[fotitos]

comment = “esto esta compartido..”
path = /home/patito/fotos
public = yes
writable = yes
printable = no
write list = prueba

Aquí debajo tienen algunas de las opciones que pueden agregarse y su descripción:

Entonces, ya sabiendo qué parámetros podríamos utilizar, debajo les dejo un ejemplo de una Empresa que comparte un recurso llamado “Facturación” a la que por obvias razones sólamente deberían tener acceso ciertos usuarios y más aún a la hora de escribir datos.

[FacturasDiarias]
comment = Facturas
path = /var/facturas
guest ok = no
write list = jefe
directory mask = 1770
create mask = 0660
browseable = yes
admin users = jefe contador
valid users = jefe contador
writable = yes
public = yes

Iniciando, Reiniciando o Deteniendo Samba

/etc/init.d/samba start: Inicia el Servicio
/etc/init.d/samba stop: Detiene el Servicio
/etc/init.d/samba reload: Carga cualquier actualización a la configuración
/etc/init.d/samba restart: Reinicia el Servicio
/etc/init.d/samba status: Muestra el estado del Servicio

Bueno, suponiendo que agregamos la carpeta /home/patito/fotos como recurso compartido, vamos a conectarnos desde fuera de esa máquina con el siguiente comando:

smbclient -U patito -L 10.0.0.7

-U hace referencia al usuario en Samba, en este caso: patito

Eso nos devolverá información sobre la ip introducida (o el nombre de la máquina) con sus respectivos recursos compartidos.
En este caso, nuestro recurso compartido se llama “fotitos” y está ubicado en /home/patito/fotos

Para acceder al recurso compartido podemos hacerlo de la siguiente manera:

smbclient //10.0.0.7/fotitos -U patito

Eso nos pedirá la clave de “patito” y luego nos dará acceso al recurso en la misma consola.

Si queremos montar el recurso en nuestro Sistema utilizando GNU/Linux tenemos dos formas:

PRIMERA OPCION:

mkdir /mnt/fotitos

Creamos un directorio donde montar el recurso compartido..

smbmount //10.0.0.7/fotitos /mnt/fotitos

Montamos el recurso ..

SEGUNDA OPCION

mount -t smbfs -o username=patito,password=clave-de-patito //10.0.0.7/fotitos /mnt/fotitos

ATENCION: ESTOS DOS METODOS SON TANTO PARA CUANDO UNA MAQUINA GNU/LINUX COMPARTE UN RECURSO; COMO PARA CUANDO UNA MAQUINA CON MICROSOFT WINDOWS LO HACE.

Existe una tercera opción, que sería la gráfica .. ingresando simplemente a “Lugares” > “Red” (en Gnome)

Para ingresar a un recurso compartido en GNU/Linux desde Windows es aún más fácil, desde “Mis Sitios de Red” (siempre que tengamos el mismo nombre de grupo de trabajo) podemos ingresar y nos pedirá usuario y contraseña dependiendo de cómo hayamos configurado el smb.conf

Hasta acá vimos cómo configurar de manera “manual” nuestro Samba, ahora vamos a ver cómo hacerlo de manera asquerosamente fácil, con entorno web utilizando Swat (no, no son esos polis yankees)

Vamos a instalarlo con el difícil y complejo comando, aptitude:

aptitude install swat

Listo, ya está funcionando .. ahora entramos a la ip del servidor Samba con el puerto 901, ej:

http://10.0.0.7:901

Nos logueamos y luego podemos configurar de manera gráfica nuestros recursos a compartir, editarlos, compartir impresoras, manipular el servicio, etc.

Bueno.. ahora vamos a hablar un rato de CUPS, un
Podemos decir a grandes rasgos que CUPS es un Sistema de Impresión que trabaja como Servidor de Impresión.

CUPS es libre con licencia GNU, como requisitos mínimos pide un procesador de al menos 1 Ghz y 256 de ram, (recomendando 512 para un mejor funcionamiento).

Para instalarlo vamos a recurrir a nuestro querido/odiado aptitude:

aptitude install cups

Una vez instalado vamos a instalar nuestra impresora, y cuando ésta esté funcionando correctamente haremos lo siguiente:

a) Compartiremos esa impresora para que otros Clientes (GNU/Linux o Windows) puedan utilizarla
b) Usaremos una impresora funcionando en Windows (seremos clientes)

Todos pensarán que es difícil, pero no .. es tan fácil que da verguenza tener que contarlo.

Para el primer paso lo único que haremos es ingresar a nuestra ip con el puerto 631:

http://localhost:631

Nos logueamos como root y dejamos tildadas las siguientes opciones:

Vamos a ir a “Añadir Impresora” y elegiremos la impresora local (la que está correctamente instalada y funcionando)

En mi caso no tengo ninguna impresora conectada, pero esto no me va a impedir que pueda añadir una impresora :D

Me toma como “SCSI Printer”, voy a seleccionar esa .. y hago click en “Siguiente”

En la siguiente ventana haremos algo parecido a esto:

Le damos a Siguiente y yo completé con estos datos:

Le di click a Siguiente y ahora tengo que mentirle diciéndole que tengo X MARCA de impresora..

Seguimos (Siguiente) con nuestra mentirita .. ahora a seleccionar un modelo.. (damos click a Añadir Impresora)

Un último paso y listo ..

Tiene que habernos quedado algo así:

Ahora supongamos que queremos agregar la impresora estando en Windows XP seguimos estos pasos:

Hasta acá llegamos.
Para quien le interese dejo material para leer muy interesante ..

Libro de Samba (viejito pero muy muy muy bueno)
Implementación de Samba y Active Directory
Autentificación en Samba con LDAP

Te sirvió ? Compartilo !

Virtualización en GNU/Linux

Aunque a primera vista suena muy similar, virtualización no es lo mismo que emulación. La diferencia es que, mientras la virtualización “encapsula” una máquina virtual y le da acceso casi directo al hardware del equipo, la emulación crea un entorno de hardware completo, que puede no tener ninguna relación con el hardware donde se está ejecutando. ¿Más simple? La virtualización usa la misma arquitectura, y lo que hace es conectar la instancia virtual al hardware del equipo. El emulador parte de cero y crea todo un ambiente nuevo, en el que hasta el procesador puede ser “de mentira”, e incluso de una arquitectura distinta al del hardware original.

O sea, un PC x86 con GNU/Linux puede virtualizar Windows, pero un Mac PowerPC no podría hacerlo. Eso tendría que ser emulado, lo que también significa lentitud. La virtualización es mucho más rápida ya que es básicamente una abstracción del hardware.

Qemu – KVM

KVM significa Kernel Virtual Machine y, como su nombre lo dice, es un “virtualizador” que fue incluído en el propio kernel de Linux desde su versión 2.6.20.
Es decir que desde esa versión de kernel se pueden abrir instancias de otros S.O nativamente en GNU/Linux sin necesidad de utilizar un Software Externo.

fuente: bootlog

¿Cómo saber si puedo virtualizar?

Simplemente escribimos esto en consola:

egrep -c '(vmx|svm)' /proc/cpuinfo

Si el resultado de la consulta es 0, no podemos virtualizar.
Si el resultado de la consola es 1 o más, podemos virtualizar. (a veces es necesario habilitar la opción en el BIOS)

Suponiendo que nos haya arrojado el valor 1, procedemos con la instalación de kvm y qemu

En consola y como root vamos a instalar los paquetes necesarios ..

aptitude install kvm qemu-kvm libvirt-bin virtinst virt-manager openssh-server

Luego, vamos a agregar al usuario “común” del sistema, a los grupos libvirt y kvm

adduser tu-usuario libvirt && adduser tu-usuario kvm

Ahora vamos a chequear si todo salió bien ..

virsh -c qemu:///system list

Si el resultado es parecido a esto:

root@dysloke:~# virsh -c qemu:///system list
Id Name State

Entonces podemos seguir, de lo contrario vamos a volver con el proceso de instalación para ver si no salteamos ningún paquete..

Una vez hecho esto, vamos a reiniciar las X, o si les resulta más cómodo .. reiniciamos la máquina :)

Listo, ya reiniciamos .. ahora vamos a “puentear” la interfaz nuestra con una nueva, llamada “br0″

Primero instalamos bridge-utils y luego editamos nuestras interfaces:

aptitude install bridge-utils

nano /etc/network/interfaces

Ejemplo de cómo dejé yo mi archivo “interfaces”

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.10
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

Ovbiamente cada uno modificará según corresponda en su red, si el gateway es el 10.0.0.2 tendrán que cambiar los datos.

Una vez hecho los cambios, procedemos a reiniciar nuestra red:

/etc/init.d/networking restart

Ahora escribimos ifconfig y debería largarnos algo como esto:


root@dysloke:/home/dke# ifconfig
br0 Link encap:Ethernet HWaddr 6c:f0:49:a5:90:01
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::6ef0:49ff:fea5:9001/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2931 (2.8 KiB) TX bytes:7204 (7.0 KiB)

eth0 Link encap:Ethernet HWaddr 6c:f0:49:a5:90:01
inet6 addr: fe80::6ef0:49ff:fea5:9001/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:913094 errors:0 dropped:0 overruns:0 frame:0
TX packets:782281 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:1000
RX bytes:1072795056 (1023.0 MiB) TX bytes:69528171 (66.3 MiB)
Interrupt:27

Planteemos el escenario .. supongamos que queremos virtualizar un Windows XP, darle 5 gigas de espacio al disco, 512 de ram, 2 cpus y que la imagen del disco tenga como nombre “dke”, escribiremos lo siguiente:

virt-install --connect qemu:///system -n dke -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/dke.img,size=5 -c /lugar/donde/esta/el/iso/del/xp.iso --vnc --noautoconsole --os-type windows --os-variant winxp --accelerate --network=bridge:br0 --hvm

Si todo salió bien, debería devolvernos algo parecido a esto:


root@dysloke:/home/dke# virt-install --connect qemu:///system -n dke -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/dke.img,size=5 -c /home/dke/xp.iso --vnc --noautoconsole --os-type windows --os-variant winxp --accelerate --network=bridge:br0 --hvm

Empezando la instalación...
Asignando 'dke.img' | 5.0 GB 00:00
Creando dominio... | 0 B 00:00
La instalación del dominio continúa en progreso. Esperando para que se complete la instalación.

Esperamos unos minutos a que termine de generar la imagen, nos daremos cuenta porque nos “devolverá” el control a la consola.

Luego de esto (si es que reiniciamos anteriormente cuando agregamos nuestro usuario a los grupos libvirt y kvm), vamos a irnos hasta “Aplicaciones > Herramientas del Sistema > Administrador de Máquina Virtual”

O en su defecto si tienen en inglés: Applications > System Tools > Virtual Machine Manager

Si nos salta un error al toque, es porque no reiniciamos :)
Nos debería aparecer una pantallita linda como esta:

Luego de esto ya podríamos empezar a instalar el SO que vamos a Virtualizar, haciendo doble click sobre el nombre de la máquina virtual creada debería abrirnos una ventana con la instalación del SO:

Hasta acá podrían instalar el S.O tranquilamente .. en un rato sigo con el tuto agregando cómo instalar el SO si estamos fuera de nuestra máquina, usando un túnel SSH.

Te sirvió ? Compartilo !

Instalando Broadcom 43x en Debian Squeeze

Debian Squeeze no trae instalado el driver de las placas Broadcom 43xx, por lo tanto hay que instalarlo de forma manual.

Para empezar vamos a asegurarnos de tener los repositorios correctos:

deb http://ftp.uk.debian.org/debian squeeze main contrib
deb-src http://ftp.uk.debian.org/debian squeeze main contrib
deb http://ftp.uk.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.uk.debian.org/debian squeeze main contrib non-free

Donde dice “uk” podemos cambiarle por “us”, “de” “br” “fr”, etc.

Luego de hacer un apt-get update vamos a disponernos a instalar los siguientes paquetes:

aptitude install module-assistant wireless-tools

Una vez instalado esto, vamos a usar module-assistant para instalar de forma automática el paquete broadcom-sta

m-a a-i broadcom-sta

Ahora quedaría reconstruir nuestro “initial ramdisk” con el siguiente comando:

update-initramfs -u -k $(uname -r)

Ya casi estamos terminando, ahora removermos los módulos que no necesitamos:

modprobe -r b44 b43 b43legacy ssb

Finalmente cargamos el módulo wl (driver que vamos a utilizar)

modprobe wl

Ahora solo nos resta reiniciar y ya tendremos funcionando nuestra placa Broadcom B43xx

Otra solución es bajar este .deb que utiliza el driver b43 openfwwf.

Y lo instalamos con

dpkg -i b43*.deb

Te sirvió ? Compartilo !