Posts filed under ‘GNU Linux / *BSD’
Servidor de streaming mt-daap
Después de configurar NFS en Mac OS X aproveché para montar un servidor de streaming de audio, en concreto voy a usar el protocolo Daap. El servidor correrá en una Debian y los clientes, pues cualquiera que soporte este protocolo, iTunes por supuesto, pero también hay libres como Rhythmbox o Amarok.
En primer lugar hace falta avahi-daemon, un demonio que realiza multicast DNS para publicar/descubrir servicios, en nuestro caso publicaremos el servidor daap y los clientes tendrán que descubrirlo, por tanto hace falta en todas las máquinas. En teoría mt-daapd trae su propia implementación para hacer multicast DNS pero parece que funciona mejor con avahi.
Por tanto en el servidor instalamos los paquetes:
# apt-get install mt-daapd avahi-daemon avahi-utils libnss-mdns
Configuración de avahi-daemon.
Editamos el fichero /etc/default/avahi-daemon y nos cercioramos que la variable AVAHI_DAEMON_START esté seteada a 1, esto hará que el demonio arranque al inicio del sistema, en Debian viene por defecto.
# 0 = don’t start, 1 = start
AVAHI_DAEMON_START=1
Para que la resolución de nombres se realice correctamente con mdns tenemos que editar el fichero /etc/nsswitch.conf y donde aparece:
hosts: files dns
sustituimos por:
hosts: files dns mdns4_minimal mdns4
Avahi utiliza ficheros con formato XML para la configuración los servicios, en nuestro caso el fichero en cuestión es éste:
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name>Servidor iTunes</name> <service> <type>_daap._tcp</type> <port>3689</port> </service> </service-group>
Su nombre será daap.service e irá en /etc/avahi/services/
Configuración de mt-daapd.
Editamos el fichero de configuración /etc/mt-daapd.conf las opciones mas interesantes son:
# Contraseña de la interfaz web de mt-daap.
admin_pw =1234
# Directorio donde está la musica.
mp3_dir = /home/shared/Musica
# Usuario con el que correrá mt-daap
runas = mt-daapd
# Nombre del servidor
servername = Servidor iTunes
El logfile por defecto está desactivado, es decir, no hay fichero de log, cualquiera que halla usado un poco linux sabe que es importante que la aplicación vuelque sus mensajes a logs, cuantos errores no he resuelto gracias a los logs que si no me hubiese sido imposible. Por tanto lo activamos.
logfile = /var/log/mt-daapd.log
Reiniciamos los servicios:
# /etc/init.d/dbus restart
Esto reiniciará dbus y avahi.
Arrancamos manualmente mt-daapd:
# mt-daapd -m -f -d 5
-m para que no haga multicast dns, ya lo hace avahi.
-f para que nos vaya mostrando por pantalla el debug.
-d 5 el nivel de debug.
Hay que retocar el script del servicio para que cuando arranque por defecto no haga multicast dns, editamos el fichero /etc/init.d/mt-daapd y añadimos DAEMON_OPTS=»-m» tal que así:
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/mt-daapd
NAME=mt-daapd
DESC=mt-daapd
DAEMON_OPTS=»-m»
test -x $DAEMON || exit 0
….
No hay que modificar mas nada, así que guardamos.
Configuración de los clientes. ArchLinux y Mac OS X.
En arch instalamos avahi y dbus:
# pacman -S avahi dbus
Iniciamos dbus:
# /etc/rc.d/dbus start
Iniciamos avahi:
# avahi-daemon
Ahora si abrimos nuestro reproductor nos debe aparecer el servidor, por ejemplo en Rhythmbox:
Hay que tener en cuenta que dbus y avahi deben arrancar al inicio, en Arch basta con añadirlo a DAEMONS(… dbus avahi-daemon …) en el fichero /etc/rc.conf ademas en ese orden pues avahi no arranca sin dbus.
En Mac OS X no hay que hacer casi nada, sólo tener marcada la opción «Buscar bibliotecas compartidas» en el menú Preferencias de iTunes y ya nos aparece el servidor:
Haciendo Streaming fuera de nuestra red.
El protocolo sólo hace streaming para nuestra subred, si estamos fuera de ella tendremos que hacer una triquiñuela. Como migranpipa está accesible siempre desde internet lo que haremos es un túnel ssh y utilizaremos un programa llamado Network Beacon que nos hará de proxy y publicará el servicio.
Crear el túnel ssh es sencillo, desde un terminal ejecutamos (por supuesto con tu nombre de usuario y servidor):
ssh oscar@www.migranpipa.net -N -f -L 3689:www.migranpipa.net:3689
Donde:
-N para que el túnel no sea interactivo.
-f envía el proceso a segundo plano.
-L especifica el túnel, en este caso el puerto 3689 local será tunelado al puerto 3689 de la máquina remota http://www.migranpipa.net.
Para eliminar el túnel tan sólo tenemos que matar el proceso.
También se puede hacer de forma gráfica con Fugu, es un universal, asi que lo instalamos simplemente arrastrando el ejecutable al directorio Aplicaciones, lo ejecutamos y en la pestaña «SSH» creamos un «Nuevo túnel SSH»:
Ahora descargamos e instalamos Network Beacon, igual que Fugu, ya que también es universal, lo ejecutamos y creamos un «New Beacon» con la información que corresponda:
Esto se puede hacer desde linea de comandos con Bonjour pero hay que compilar el paquete, por tanto también instalar Xcode, en fin Network Beacon ya nos lo da hecho.
Ahora ya podemos oír música desde todo el mundo, sin embargo tenemos que arrancar Network beacon y crear el túnel al menos cada vez que encendemos el ordenador, esto es un poco engorroso, que mejor que automatizarlo con un AppleScript.
on run do shell script "ssh oscar@www.migranpipa.net -N -f -L 3689:www.migranpipa.net:3689 >/dev/null 2>&1 &" tell application "System Events" to (name of processes) contains "Network Beacon" if the result is false then activate application "Network Beacon" tell application "System Events" set visible of process "Network Beacon" to false end tell end if end run on quit do shell script "killall ssh" tell application "Network Beacon" to quit continue quit end quit
Edita los parámetros correspondientes y guárdalo como Aplicación en Aplicaciones. Pensé en hacer un script y ejecutarlo al inicio del sistema, sería aún mas cómodo ya que no tendríamos que ejecutar nada, pero al final descarté la idea porque eso implica mantener la conexión permanentemente, lo que añade carga innecesaria y resta ancho de banda a ambas máquinas.
Si en vez de Mac tenemos Linux como cliente, haremos lo mismo, creamos el túnel y en vez de Network Beacon utilizaremos RendezvousProxy, se puede también crear un script de bash, mas sencillo que el AppleScript, eso lo dejo como tarea.
Es conveniente tener la autenticación de SSH mediante llaves y passphrase, seguirá siendo seguro y no nos pedirá la contraseña, es muy fácil de hacer, lo explican muy bien aquí.
Con todo esto ya tenemos nuestro servidor mt-daap funcionando y toda nuestra música disponible en cualquier sitio.
Como alternativa (en realidad la alternativa sería mt-daap) podemos montar el servidor libre GNUMP3d ya que mp-daap una implementación del protocolo de Apple, no lo he probado pero he leído que funciona bien, yo utilicé daap porque se integra muy bien con iTunes y Rhythmbox
NOTA: inicialmente hice las pruebas con el MacBook por Wifi, el servidor estaba bien configurado pero iTunes no lo veía hasta que me dio por probar conectándolo mediante cable y ahí si que funcionó, el problema es del router, hay que activar el protocolo Multicast mediante IGMP, sin embargo yo lo activé (ambas versiones), también UPnP y sigue sin funcionar. Si alguien sabe como solucionarlo, que lo comente, mi router es un Zyxel Prestige 650HW, el de Telefónica.
Bueno, decir que en realidad funciona por Wifi pues esté o no en casa uso el túnel ssh, pero me gustaría saber si se puede hacer como debería.
Enlaces interesantes:
http://gentoo-wiki.com/HOWTO_Apple_ITunes_Server
Montar directorios NFS en Mac OS X
Como he comentado en posts anteriores, ésta máquina es servidor NFS para las demás máquinas de casa, expliqué como hacerlo en Ubuntu y en general para cualquier Linux es parecido, hoy lo haremos en Mac OS X (Leopard), muy sencillo mediante GUI’s.
1. Ejecutamos «Utilidad de Directorios» que se encuentra en Aplicaciones/Utilidades. En la pestaña «Montajes» clicamos en el + para añadir una nueva entrada (el candado tiene que estar abierto para realizar estos cambios):
Rellenamos los campos con nuestra configuración y listo, ahora se nos montará automáticamente el directorio en cuestión, aunque hay un pero, gracias a que el sistema de permisos de Unix funciona bien sólo tenemos permisos de lectura, el UID en el servidor es distinto al de Mac, así que lo que vamos a hacer es cambiarlo en éste último:
1. Ejecutamos la aplicación «Cuentas» que se encuentra en «Preferencias del sistema». Hacemos clic con el botón derecho o «Ctrl + Clic» sobre nuestro usuario y vamos a «Opciones avanzadas» (el candado tiene que estar abierto para realizar estos cambios):
2. Cambiamos el UID por el que corresponda, en mi caso en Mac tenía 501 y en el servidor 1000, el grupo en principio no lo cambiamos:
3. Falta un detalle que yo pensé que se haría de forma automática, asignar el nuevo dueño a nuestros ficheros, pues estos todavía son del UID 501, que era el que teníamos antes, simplemente abrimos un terminal y ejecutamos:
oscar@macbook: sudo chown -R oscar /Users/oscar
Sustituyendo por el usuario que corresponda claro.
Con esto tenemos todo bien montado y permisos de escritura en el directorio NFS.
Script para crear un CD/DVD bootable de OpenBSD
Originalmente OpenBSD no distribuye ISO’s, por tanto o las buscamos de forma no oficial creadas por terceros o nos las creamos nosotros, yo me decidí por esta última opción y me hice un script en Bash para automatizar el proceso. El script en cuestión:
#!/bin/bash ############################## # # OpenBSD CD/DVD script # # Author: Oscar Moreno Martin # Web: http://www.migranpipa.net # # This script create a bootable OpenBSD CD/DVD # # Editable parameters: # - release: The number of the actual release. # - version. Same as release without the point. # - workdir: the directory where will be downloaded the data. # Default is your_home_directory/openbsd # - arch: computer architecture # - Optionally change the mirror. # Find more in http://www.openbsd.org/ftp.html#ftp # # Requirements: # - wget. # - mkisofs. # - You will need a cd record program like as cdrecord or k3b # to burn the ISO. # # The ISO will be saved in your home directory. # ############################### mirror=ftp://ftp.rediris.es/pub/OpenBSD/ workdir=~/openbsd release=4.0 version=40 arch=i386 # Download base, binary, sources. Need a CD. wget -c -N -nH --cut-dirs=4 -r -P $workdir/$release $mirror/$release/{ANNOUNCEMENT,Changelogs,HARDWARE,PACKAGES,PORTS,README,SIZES, ftplist,root.mail,tools,{XF4,ports,src,sys}.tar.gz,$arch} # Optional packages. Need a DVD. #wget -c -N -nH --cut-dirs=4 -r -P $workdir/$release/packages/$arch $mirror/$release # Download documentation. wget -c -N -P $workdir/$release/doc $mirror/doc/obsd-faq.{txt,pdf} # Download the song of the actual release. wget -c -N -P $workdir/$release $mirror/songs/song$version.{mp3,ogg} # Build the iso echo "Creating ISO..." mkisofs -r -v -l -o ~/OpenBSD-$release-$arch.iso -c boot.catalog -b $release/$arch/cdrom$version.fs -V \"OpenBSD-$release-$arch\" $workdir # Delete all downloaded files rm -rf $workdir echo "ISO Created."
Le damos permiso de ejecución con:
chmod +x openbsdiso.sh
Y ejecutarlo:
./openbsdiso.sh
Compresión web con Mod_gzip y Apache en OpenBSD
Mod_gzip es un módulo que permite a Apache comprimir al vuelo las peticiones HTTP y enviárselas comprimidas al cliente siendo el navegador de éste quién las descomprime, la ventaja es evidente, si los ficheros pesan menos, tardaremos menos tiempo en transferirlos y ahorraremos ancho de banda. Como mi servidor corre en OpenBSD, la versión de Apache es la que trae la propia distribución, es decir Apache 1, para Apache 2 no existe mod_gzip sino mod_deflate. Bueno empezamos (haremos todo como root):
Buscamos el paquete en el FTP de OpenBSD y lo instalamos:
$ pkg_add -r ftp://www.openbsd.org/pub/OpenBSD/4.0/packages/i386/mod_gzip-1.3.26.1ap0.tgz
Activamos el módulo:
$ /usr/local/sbin/mod_gzip-enable
Indicamos a Apache el fichero de configuración de mod_gzip. Por tanto editamos el fichero /var/www/conf/httpd.conf y añadimos después de la linea LoadModule gzip_module /usr/lib/apache/modules/mod_gzip.so:
# Config of mod_gzip module
# The sample config file is in /usr/local/share/examples/mod_gzip/mod_gzip.conf.sample
< IfModule mod_gzip.c>
Include /var/www/conf/mod_gzip.conf
En realidad podríamos configurar los parámetros de mod_gzip dentro de y pero mejor lo hacemos en un fichero aparte, asi pues creamos el fichero /var/www/conf/mod_gzip.conf con el siguiente contenido:
#Fichero de configuracion mod_gzip.conf
# Oscar Moreno Martin (http://migranpipa.dyndns.org)
# The sample config file is in /usr/local/share/examples/mod_gzip/mod_gzip.conf.sample
# mod_gzip config file
#mod_gzip always on
# ============
mod_gzip_on Yes
############
### file sizes ###
###########
mod_gzip_minimum_file_size 300
mod_gzip_maximum_file_size 60000
mod_gzip_maximum_inmem_size 100000
##################
### data management ###
#################
mod_gzip_keep_workfiles No
mod_gzip_temp_dir /tmp
mod_gzip_command_version ‘/mod_gzip_status’
mod_gzip_dechunk Yes
############
### logging ###
###########
LogFormat «%h %l %u %t \»%V %r\» % < s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n – < Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct.» common_with_mod_gzip_info2
CustomLog /var/www/logs/mod_gzip.log common_with_mod_gzip_info2
###########
### filters ###
##########
# phase 1: (reqheader, uri, file, handler)
# =======================
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
# phase 2: (mime, rspheader)
# ================
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-httpd-php
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
# Exclude files with extensions
# =================
mod_gzip_item_exclude file \.css$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*
# Fin del fichero
El fichero lo puedes descargar desde aqui ya que si copias y pegas puede darte un fichero raro pues wordpress mete saltos de lineas y cosas raras dando lugar a un fichero erróneo.
Ahora creamos el fichero de log:
$ touch /var/www/logs/mod_gzip.log
Reiniciamos Apache:
$ apachectl restart
Ahora vamos a probar si mod_gzip esta funcionando, abrimos un navegador y vamos a http://tusitioweb/mog_gzip_status, en mi caso http://migranpipa.dyndns.org/mod_gzip_status
Debe aparecer algo como:
mod_gzip is available…
mod_gzip_version = 1.3.26.1a
mod_gzip_on = Yes
Podemos probar el ratio de compresión en http://web-sniffer.net/ escribimos la dirección de nuestra web y nos muestra entre otras cosas las cabeceras HTTP y el tamaño comprimido (encoded) y sin comprimir (decoded). Por ejemplo mi página principal dió los valores:
Content (encoded: 13.50 KiB / decoded: 54.11 KiB)
La compresión es bastante notable, muy recomendable para servidores caseros como éste, en el cual no tenemos mucho ancho de banda de subida.
Compartiendo directorios mediante NFS entre máquinas OpenBSD y Ubuntu.
Nota: Joan en los comentarios nos deja un link a su blog con una versión más actualizada, sin duda recomendable su lectura 🙂
http://jcatala.net/categoria-unix/centralizaci%C3%B3n-de-datos-en-una-oficina-mediante-nfs
Gracias Joan.
Actualmente poseo dos ordenadores, el que uso como mi Pc «normal» de escritorio para hacer todo, y éste, desde donde estás leyendo ésto, el servidor, tux y migranpipa respectivamente. Una buena opción es compartir entre éstos directorios, en primer lugar pensé en exportar el home, es decir que el home de los usuarios no esté es tux sino en migranpipa pero no me convencía la idea pues hay cosas que prefiero que no estén en el home de migranpipa y viceversa, así que quedó como dos usuarios distintos pero que comparten cosas. Bien, voy a explicar los pasos, que habrá que hacerlos como root:
Configuración del servidor (migranpipa).
En primer lugar deben estar corriendo los servicios Portmap, que es requerido por Nfs y por supuesto Nfs, ésto lo realizamos en el fichero /etc/rc.conf buscamos las siguientes claves y les ponemos el valor YES:
portmap=YES
nfs_server=YES
Éstos servicios arrancarán automáticamente en el próximo reinicio.
Ahora habrá que especificar que directorios compartimos, a quién y cómo. Ésto lo hacemos en el fichero /etc/exports y la sintaxis es:
/directorio_a_compartir -alldirs -ro -network=192.168.1 -mask=255.255.255.0
Donde -alldirs indica que se podrá montar cualquier punto por debajo de /directorio_a_compartir, -ro es el modo, es decir sólo lectura (ro = read only), -network y -mask indican que sólo los clientes de esa red pueden montar el directorio, para más información haz un man exports.
Bien en mi caso, cómo sólo tengo dos ordenadores pues restringí más, simplemente el único que puede montar el directorio es tux, mi /etc/exports quedó así:
# $OpenBSD: exports,v 1.2 2002/05/31 08:15:44 pjanzen Exp $
#
# NFS exports Database
# See exports(5) for more information. Be very careful: misconfiguration
# of this file can result in your filesystems being readable by the world.
/home/oscar -alldirs tux
Para que el servidor sepa quién es tux, o lo sustituímos por la ip correspondiente o se lo indicamos al sistema en el /etc/hosts yo uso ésta última opción, así ya el sistema sabe resolver el nombre para cualquier otra aplicación sin tener que especificar la ip. Simplemente editamos dicho archivo, la sintaxis es así:
IP Nombre_de_la_máquina
Por ejemplo en mi caso:
192.168.1.3 tux
Listo, reiniciamos y servidor configurado.
Configuración del cliente (tux).
Al menos en Ubuntu 6.10 no hace falta instalar ningún paquete, si tuvieramos que hacerlo supongo que bastaría con nfs-common pues ésta máquina será sólo cliente, bueno pues simplemente editamos el fichero /etc/fstab que es donde se establecen las opciones y puntos de montaje de las particiones, colocamos, en tu caso lo que corresponda, pero debe ser algo como lo siguiente:
maquina:/directorio_compartido /directorio_de_montaje nfs rw 0 0
En mi caso quedó:
migranpipa:/home/oscar /media/oscar(migranpipa) nfs rw 0 0
Los cuatro primeros argumentos son los importantes, el primer argumento migranpipa:/home/oscar indica el dispositivo de origen, en nuestro caso será el directorio que comparte el servidor, el segundo /media/oscar(migranpipa) es el punto de montaje del dispositivo o partición, para evitar errores crearemos un directorio nuevo:
sudo mkdir /directorio_de_montaje
en mi caso:
sudo mkdir /media/migranpipa
Si usamos uno creado y con contenido puede darnos problemas, el tercero nfs indica el sistema de ficheros y el cuarto rw el modo, es decir lectura escritura (rw = read-write).
Para que tux sepa quién es migranpipa hacemos lo propio en el /etc/hosts, igual a cómo lo hicímos antes, el mío quedó así:
192.168.1.2 migranpipa migranpipa.dyndns.org
Pues ya debería estar todo configurado, reiniciamos el equipo y debería aparecernos un icono en el escritorio para acceder al directorio compartido.
Awstats en Apache y OpenBSD
Awstats es una herramienta para generar estadísticas acerca de una web a partir de los logs del servidor web, en éste caso Apache. Bien voy a explicar como logré que funcionara en OpenBSD con la versión auditada que trae de Apache pues hay un par de detalles que hay que salvar y creí conveniente explicar y no encontré ayuda en internet.
Partimos de que tenemos Apache sin chroot, esto se resuleve en el fichero /etc/rc.conf, en la opción httpd_flags colocamos:
# use -u to disable chroot, see httpd(8)
httpd_flags=»-u» # for normal use: «» (or «-DSSL» after reading ssl(8))
También tenemos que tener instalado mod_perl, eso es sencillo tomamos la ruta del enlace del paquete del FTP de OpenBSD y lo instalamos con pkg_add:
pkg_add ftp://www.openbsd.org/pub/OpenBSD/4.0/packages/i386/mod_perl-1.29p0.tgz
Después de instalar el paquete nos recomiendan que habilitamos el módulo, por tanto ejecutamos:
/usr/local/sbin/mod_perl-enable
Descargamos awstats de http://awstats.sourceforge.net/
Y lo descomprimimos con:
tar xvfz awstats-6.5.tar.gz
Por defecto, según dice la instalación, awstats debe ir en /usr/local, así que lo movemos ahí, de paso lo renombramos y le decimos que www sea el dueño:
mv awstats-6.5 /usr/local/awstats
chown -R www:www /usr/local/awstats
Ahora nos movemos a:
cd /usr/local/awstats/tools
Y ejecutamos:
./awstats_configure.pl
Lo primero nos pide la ruta del httpd.conf del apache
—– AWStats awstats_configure 1.0 (build 1.6) (c) Laurent Destailleur —–
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
– You are not an administrator user,
– You want to analyze downloaded log files without web server,
– You want to analyze mail or ftp log files instead of web log files,
– You need to analyze load balanced servers log files,
– You want to ‘understand’ all possible ways to use AWStats…
Read the AWStats documentation (docs/index.html).
—–> Running OS detected: Linux, BSD or Unix
—–> Check for web server install
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path (‘none’ to skip web server setup):
>
en nuestro caso ponemos:
> /var/www/conf/httpd.conf
—–> Check and complete web server config file ‘/var/www/conf/httpd.conf’
Add ‘Alias /awstatsclasses «/usr/local/awstats/wwwroot/classes/»‘
Add ‘Alias /awstatscss «/usr/local/awstats/wwwroot/css/»‘
Add ‘Alias /awstatsicons «/usr/local/awstats/wwwroot/icon/»‘
Add ‘ScriptAlias /awstats/ «/usr/local/awstats/wwwroot/cgi-bin/»‘
Add » directive
AWStats directives added to Apache config file.
—–> Update model config file ‘/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf’
File awstats.model.conf updated.
—–> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ?
Aquí nos pregunta si queremos crear un nuevo fichero de configuración (necesario si es la primera vez que lo instalamos), le decimos que sí (y)
file (required if first install) [y/N] ? y
—–> Define config file name to create
What is the name of your web site or profile analysis ?
Example: http://www.mysite.com
Example: demo
Your web site, virtual server or profile name:
>
Ahora nos pide el nombre del fichero de configuración, pondremos el nombre de nuestra web, en mi caso: migranpipa.dyndns.org
> migranpipa.dyndns.org
—–> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>
Aquí nos pregunta por el directorio donde guardaremos el fichero de configuración, por defecto /etc/awstats, ese está bien, así que le damos a Enter para continuar.
—–> Create config file ‘/etc/awstats/awstats.migranpipa.dyndns.org.conf’
Config file /etc/awstats/awstats.migranpipa.dyndns.org.conf created.
—–> Don’t forget to restart manually your web server
—–> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=migranpipa.dyndns.org
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue…
Ésto sólo nos dice que que awstats no puede añardirse de forma automática al cron, no importa lo añadiremos después. Le damos a Enter.
A SIMPLE config file has been created: /etc/awstats/awstats.migranpipa.dyndns.org.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for ‘migranpipa.dyndns.org’ with command:
> perl awstats.pl -update -config=migranpipa.dyndns.org
You can also read your statistics for ‘migranpipa.dyndns.org’ with URL:
> http://localhost/awstats/awstats.pl?config=migranpipa.dyndns.org
Press ENTER to finish…
Y para finalizar nos dice que se ha creado el fichero de configuración y cómo acceder a awstats. Pulsamos Enter para finalizar.
Pues ya tenemos el awstats casi configurado, ya que retocaremos el fichero de configuración, concretamente el apartado LogFile, que por defecto aparece:
# Example: «/pathtotools/logresolvemerge.pl *.log |»
#
LogFile=»/var/log/httpd/mylog.log»
Y nosotros colocaremos la ruta de nuestro fichero de logs de Apache:
# Example: «/pathtotools/logresolvemerge.pl *.log |»
#
LogFile=»/var/www/logs/access_log»
Un detalle es que Apache por defecto usa logs tipo «common» y awstats «combined», así que retocamos el httpd.conf para que use «combined»:
-bash-3.1# vi /var/www/conf/httpd.conf
Y en el apartado CustomLog colocamos:
CustomLog logs/access_log combined
Lo que haremos ahora será borrar el contenido del fichero de logs pues seguramente ya tendrá algún log del tipo «common» y al ejecutar el awstats dará un error.
-bash-3.1# cat > /var/www/logs/access_log
^C
-bash-3.1#
Al hacer el cat se queda esperando a que escribamos algo, pero como lo queremos dejar vacío pulsamos Ctrl+C para salir por eso se ve ese ^C.
Ahora reiniciamos Apache:
-bash-3.1# apachectl restart
/usr/sbin/apachectl restart: httpd restarted
-bash-3.1#
Nos movemos a:
cd /usr/local/awstats/wwwroot/cgi-bin/
Y ejecutamos awstats para que nos genere la primera estadística, es lo que hará el cron de ahora en adelante.
-bash-3.1# perl awstats.pl -update -config=migranpipa.dyndns.org
Error: AWStats database directory defined in config file by ‘DirData’ parameter (/var/lib/awstats) does not exist or is not writable.
Setup (‘/etc/awstats/awstats.migranpipa.dyndns.org.conf’ file, web server or permissions) may be wrong.
Check config file, permissions and AWStats documentation (in ‘docs’ directory).
El error que nos dá, es que no están creados los directorios /var/lib y /var/lib/awstats, así que lo creamos:
-bash-3.1# mkdir /var/lib
-bash-3.1# mkdir /var/lib/awstats
Volvemos a ejecutar:
-bash-3.1# perl awstats.pl -update -config=migranpipa.dyndns.org
Update for config «/etc/awstats/awstats.migranpipa.dyndns.org.conf»
With data in log file «/var/www/logs/access_log»…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
Jumped lines in file: 0
Parsed lines in file: 0
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.
Nos debe salir algo así, eso es que todo va bien.
Ahora abrimos un navegador y vamos a http://migranpipa.dyndns.org/awstats/awstats.pl?config=migranpipa.dyndns.org
Bueno lo que corresponda en tu caso, y deberá aparecernos las estadísticas del sistema.
Por último colocamos el awstats en el cron para que se nos ejecute cada cierto tiempo, yo lo puse cada media hora, para ello ejecutamos:
#crontab -e
Y añadimos al final del fichero:
30 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=migranpipa.dyndns.org
Recuerda que los argumentos del crontab son:
Los cinco primeros la programación del tiempo y el sexto, el comando.
Argumento 1: Minutos (0 – 59)
Argumento 2: Horas (0 – 23)
Argumento 3: Día del mes (1 – 31)
Argumento 4: Mes (1-12)
Argumento 5: Día de la semana (0 – 6) Domingo = 0
Argumento 6: Comando