Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

domingo, septiembre 16, 2007

Servidor web en debian etch


Me encanta cacharrear con versiones de CMS, foros, etc... Un amigo me ha pedido a ver si le puedo montar un portal y por lo que me ha contado la mejor opción la veo con un Joomla + PhpBB + Coppermine ( y qué mejor para probar las RCs de los dos primeros). Por supuesto no me voy a poner a cargar mi equipo con paquetes eventuales, así que me he montado una máquina virtual mínima que esta tirando con 32Mg de RAM con un cherokee (hay que promover los proyectos nacionales), un mysql-5.0, php5, pureftp y ssh en un Debian Etch. Bueno voy a explicar los pasos por si a alguien le viene bien (o a mí mismo porque con la cabeza que tengo últimamente... jeje):

1.-He optado por usar la version netinst de Debian, no voy a meterme con temas de instalación, simplemente es una instalación mínima.

2.-Una vez el sistema esté instalado y actualizado llegamos a lo más bonito de Debian:
#apt-get install cherokee php5-cgi php5-mysql php5-gd mysql-server-5.0 pure-ftpd ssh
(Qué gozada en una simple línea todo instalado...)

3.- Modificamos un par de líneas en /etc/php5/cgi/php.ini (las descomentamos, es decir, quitar el punto y coma que tienen delante)
;extension=mysql.so
;extension=gd.so

4.-Por seguridad vamos a cambiar el directorio donde cherokee busca las páginas web, para ello en /etc/cherokee/sites-avaliable/default buscamos la siguiente línea
DocumentRoot /var/www
Y la cambiamos por:
/home/inmolatus/public_html (ojo que la carpeta exista!)
Tras esto a reiniciar al indio:
#/etc/init.d/cherokee restart
Llegados a este punto podríamos crear una archivo en la ruta mencionada llamada index.php con el texto y debería de interpretarlo correctamente.

5.-Pure-ftpd es, a mi entender, uno de los mejores servidores de ftp, básicamente por su seguridad (ya hablaremos otro día de eso) y su configuración es bastante sencilla. Desde luego no nos interesa que usuarios de ftp puedan tener acceso al sistema, por lo cual vamos a crear un usuario que solo pueda acceder al ftp, para ello primero creamos un usuario del sistema que no pueda hacer nada:
#useradd ftp -g ftp -d/dev/null -s/bin/false
Con esto ya tenemos un usuario llamado ftp que no puede hacer nada en el sistema y va a ser en el que van a estar basados el resto de los usuarios del ftp.
#pure-pw useradd inmoftp -u ftp -g ftp -d /home/inmolatus/public_html
password:******
confirm:******
Con esto ya tenemos un usuario de ftp chrooteado a la ruta que hayamos elegido. Pure-ftpd tiene otras muchas opciones como no chrootear, limitar espacio, horarios de conexión, velocidad de subida y de bajada... Pero bueno para el caso que tenemos con esto nos sobra, en caso de duda a tirar del man.
Tras modificar cambios en los usuarios siempre hay que reestructurar la base de datos con un
#pure-pw mkdb
Si ahora lo probais... ¡aiba la hostia! ¡Login incorrect! ¿Cómo es esto? Pues resulta que está leyendo /etc/passwd... y no lee de donde le hemos creado los usuario locales, pero no hay nada que no se pueda arreglar vamos a /etc/pure-ftpd/auth y creamos un enlace que apunte al sitio correcto:
ln -s ../conf/PureDB 50pure (cacharreando un poco a donde apuntan los enlaces se sacan cosas interesantes sobre como funciona el programilla...)

Bueno y con esto y un bicocho nos emitamos el tiempo necesario de trabajar en un servidor externo (por no hablar de subir los 4000 y pico ficheros del Joomla 1.5, al menos hasta que movamos todo ya bien ordenado al hosting)

A cuidarse!

domingo, mayo 27, 2007

Configuración del mando a distancia en GNU/Linux


Misteriosamente se ha activado la aceleración 3D de mi tarjeta, tantos meses configurandola y parece que algun update lo ha activado, con lo que ello implica he conseguido configurar mi tarjeta de TV. TVTime me daba errores antes ya que no era capaz de superponer imágenes sin una aceleración. Pues buscando me he encontrado como configurar el mando a distancia, además de programarlo para amarok y kaffeine. Ahí va:

Antes que nada he de decir que llevo dos días peleado con el mando a distancia, esta guía es MUY estúpida, pero que MUY ESTÚPIDA, aunque seguro que si alguien la pilla a tiempo le vendrá muy bien. Después de estar trasteando con el kernelcito de las narices dos días y no conseguir nadita, pensar que tenía los puertos estropeados, que el mando a distancia no tenía pilas, que el receptor se había roto... resulta que va y funciona.

Esta tarjeta viene acompañada de un receptor de infrarrojos que se conecta al puerto serie de nuestro ordenador y sirve para recibir las señales que emite el mando a distancia.

Para hacerlo funcionar NO hace falta cargar drivers de lirc en el núcleo, NO hace falta hacer el famoso "/bin/setserial /dev/ttySX uart none"

Solo hay que ejecutar lircd con los siguientes parámetros:

lircd -H pinsys -d /dev/ttySX

Donde la X se sustituye por 0 si está conectado al com1 o por 1 si está conectado al com2 y listo. Se ha terminado.

Para que funcione correctamente en Debian hay que hacer lo siguiente:

1. apt-get install lirc
2. Editamos /etc/lirc/hardware.conf y cambiamos DRIVERS="" por DRIVERS="pinsys" y DEVICE="" por DEVICE="/dev/ttySX". Una vez más deberemos sustituir la X por 0 o por 1 según nuestro caso.
3. cp /usr/share/lirc/remotes/pinnacle_systems/lircd.conf.pctv /etc/lirc/lircd.conf (Esto es para que el lirc entienda las señales de este mando a distancia en /usr/share/lirc/remotes/ hay muchos modelos de control remoto distintos)
4. /etc/init.d/lirc restart

Esto puede cambiar con el paso de los años y esas cosas, el paquete que se encuentra en Debian Unstable es:

apt-cache policy lirc
lirc:
Instalados: 0.7.1pre2-11
Candidato: 0.7.1pre2-11
Tabla de versión:
*** 0.7.1pre2-11 0
500 http://ftp.fi.debian.org unstable/main Packages
100 /var/lib/dpkg/status

Después de hacer esto, para comprobar que todo ha funcionado correctamente podemos ejecutar irw y pulsar un par de botones. El resultado en mi caso es algo como esto: (cuando te canses de ver lo bien que va todo pulsa ctrl+c)

irw
0000000000000031 00 1 PinnacleSysPCTVRemote
0000000000000032 00 2 PinnacleSysPCTVRemote
0000000000000035 00 5 PinnacleSysPCTVRemote
0000000000000016 00 undo PinnacleSysPCTVRemote
0000000000000027 00 Record PinnacleSysPCTVRemote
0000000000000015 00 pause PinnacleSysPCTVRemote
0000000000000013 00 redo PinnacleSysPCTVRemote
000000000000000e 00 Rewind PinnacleSysPCTVRemote
000000000000000d 00 Play PinnacleSysPCTVRemote
000000000000000b 00 Stop PinnacleSysPCTVRemote
0000000000000007 00 FForward PinnacleSysPCTVRemote
0000000000000026 00 F_TV PinnacleSysPCTVRemote
000000000000002f 00 Power PinnacleSysPCTVRemote

Ala, pues ya está. Ahora solo queda escribir nuestro fichero de configuración para que el mando haga lo que nos de la gana.

Los usuarios de KDE pueden utilizar el módulo de control de KDE para lirc. Está muy bien, hay módulos especiales para kaffeine y algunas aplicaciones más que hace muy fácil la configuración, pero sin embargo sólo permite controlar aplicaciones de KDE y esto muchas veces no es suficiente. (esto puede ser que cambie)

Aquí pongo un ejemplo de fichero de configuración para irexec. Este fichero controla tvtime usando el mando de la pinnacle, amarok y kaffeine. Para controlar tvtime hay que pulsar el botón del mando marcado como "TV", para controlar amarok hay que pulsar el botón de "Radio" y para kaffeine "EPG". Está basado en este otro fichero de ejemplo.

begin
prog = irexec
button = F_TV
mode = tvtime
config = echo "Modo tvtime"
end

begin
prog = irexec
button = F_RADIO
mode = amarok
config = echo "Modo amarok"
end

begin
prog = irexec
button = EPG
mode = kaffeine
config = echo "Modo kaffeine"
end

# Configuración del mando a distancia para kaffeine
begin kaffeine

begin
prog = irexec
button =
config = dcop kaffeine MainApplication-Interface
end

begin
prog = irexec
button = Power
config = kaffeine &
config = dcop kaffeine MainApplication-Interface quit
end

begin
prog = irexec
button = Play
config = dcop kaffeine KaffeineIface play
end

begin
prog = irexec
button = Pause
config = dcop kaffeine KaffeineIface pause
end

begin
prog = irexec
button = Stop
config = dcop kaffeine KaffeineIface stop
end

begin
prog = irexec
button = Chan+Play
repeat = 1
config = dcop kaffeine KaffeineIface posPlus
end

begin
prog = irexec
button = FForward
repeat = 1
config = dcop kaffeine KaffeineIface posPlus
end

begin
prog = irexec
button = Rewind
repeat = 1
config = dcop kaffeine KaffeineIface posMinus
end

begin
prog = irexec
button = Chan-Stop
repeat = 1
config = dcop kaffeine KaffeineIface posMinus
end

begin
prog = irexec
button = redo
config = dcop kaffeine KaffeineIface next
end

begin
prog = irexec
button = undo
config = dcop kaffeine KaffeineIface previous
end

begin
prog = irexec
button = Mute
config = dcop kaffeine KaffeineIface mute
end

begin
prog = irexec
button = vol+
repeat = 1
config = dcop kaffeine KaffeineIface volUp
end

begin
prog = irexec
button = Vol+FF
repeat = 1
config = dcop kaffeine KaffeineIface volUp
end

begin
prog = irexec
button = vol-
repeat = 1
config = dcop kaffeine KaffeineIface volDown
end

begin
prog = irexec
button = Vol-Rew
repeat = 1
config = dcop kaffeine KaffeineIface volDown
end

begin
prog = irexec
button = Fullscreen
config = dcop kaffeine KaffeineIface fullscreen
end
end kaffeine

# Configuración del mando a distancia para amarok
begin amarok
begin
prog = irexec
button = Power
config = amarok &
config = dcop amarok MainApplication-Interface quit
end
begin
prog = irexec
button = Play
config = dcop amarok player play
end

begin
prog = irexec
button = Pause
config = dcop amarok player pause
end

begin
prog = irexec
button = Stop
config = dcop amarok player stop
end

begin
prog = irexec
button = FForward
config = dcop amarok player next
end

begin
prog = irexec
button = Chan+Play
config = dcop amarok player next
end

begin
prog = irexec
button = Rewind
config = dcop amarok player prev
end

begin
prog = irexec
button = Chan-Stop
config = dcop amarok player prev
end

begin
prog = irexec
button = Vol+FF
repeat = 1
config = dcop amarok player volumeUp
end

begin
prog = irexec
button = vol+
repeat = 1
config = dcop amarok player volumeUp
end

begin
prog = irexec
button = Vol-Rew
repeat = 1
config = dcop amarok player volumeDown
end

begin
prog = irexec
button = vol-
repeat = 1
config = dcop amarok player volumeDown
end

begin
prog = irexec
button = Mute
config = dcop amarok player mute
end

end amarok


# This is an example config file for your LIRC remote. All buttons
# depend on what you have configured in your lircd.conf file. Please
# refer to this and adjust the labels below accordingly.
#
# tvtime is controlled through a separate program called tvtime-command.
# For a list of commands, see 'man tvtime-command'. Key events can
# be 'faked' using the command KEY_EVENT, which allows for mapping a
# single remote control button to both a menu mode command and a normal
# mode command.
#
# begin
# prog = irexec
# button = Info
# config = tvtime-command DISPLAY_INFO
# end


# This section includes two configs, what this does is that it allows
# you to open tvtime and close tvtime with one button. If your remote
# has seperate buttons for this, then you can break it apart.


begin tvtime
begin
prog = irexec
button = Power
config = tvtime &
config = tvtime-command QUIT
end


# The following defines most of the common buttons found on a remote and
# what commads they would map to inside tvtime.
#begin
# prog = irexec
# button = source
# config = tvtime-command TOGGLE_INPUT
#end
begin
prog = irexec
button = Info
config = tvtime-command DISPLAY_INFO
repeat = 1
end
begin
prog = irexec
button = Fullscreen
config = tvtime-command TOGGLE_FULLSCREEN
end
#begin
# prog = irexec
# button = CC
# config = tvtime-command TOGGLE_CC
#end

begin
prog = irexec
button = Mute
config = tvtime-command TOGGLE_MUTE
end

# Menu navigation.
begin
prog = irexec
button = Chan+Play
repeat = 1
config = tvtime-command UP
repeat = 1
end
begin
prog = irexec
button = Chan-Stop
repeat = 1
config = tvtime-command DOWN
repeat = 1
end
begin
prog = irexec
button = vol+
repeat = 1
config = tvtime-command RIGHT
repeat = 2
end
begin
prog = irexec
button = vol-
repeat = 1
config = tvtime-command LEFT
repeat = 2
end

begin
prog = irexec
button = middle
config = tvtime-command CHANNEL_JUMP
repeat = 1
end

begin
prog = irexec
button = 1
config = tvtime-command CHANNEL_1
end
begin
prog = irexec
button = 2
config = tvtime-command CHANNEL_2
end
begin
prog = irexec
button = 3
config = tvtime-command CHANNEL_3
end
begin
prog = irexec
button = 4
config = tvtime-command CHANNEL_4
end
begin
prog = irexec
button = 5
config = tvtime-command CHANNEL_5
end
begin
prog = irexec
button = 6
config = tvtime-command CHANNEL_6
end
begin
prog = irexec
button = 7
config = tvtime-command CHANNEL_7
end
begin
prog = irexec
button = 8
config = tvtime-command CHANNEL_8
end
begin
prog = irexec
button = 9
config = tvtime-command CHANNEL_9
end
begin
prog = irexec
button = 0
config = tvtime-command CHANNEL_0
end
#begin
# prog = irexec
# button = ENTER
# config = tvtime-command ENTER
#end

end tvtime
Fuente:http://drupal.gulic.org/

miércoles, abril 18, 2007

scripts en bash


A continuación unos comandos básicos para poder realizar scripts en bash:

#!/bin/bash --> Hay que ponerlo al principio del script
echo xxx --> Muestra "xxx" en pantalla
clear --> Limpia la pantalla
read -p "algo" variable --> Muestra "algo" y guarda en la variable un valor
read -n 1 --> Espera una tecla antes de continuar
exit --> Sale del programa

IF

if [$mes -lt $var]
then
----------
fi

Usamos $ delante de una variable cuando vamos a hacer una referencia de lectura
$# -->Cantidad de parámetros
$* -->Listado de parámetros
$0 --> Nombre script

Operaciones con variables

variable= $((var1 - 1))

Comprobación de ficheros

if [ -d directorio] -->Comprueba si es un directorio
if [ -f fichero] -->Comprueva si es un fichero

CASE

case $variable in
valor1)
----------
----------
;;
valor2) --> Para decir ó se pone s | S)
---------
---------
;;
*) -->Otros valores
---------
---------
;;
esac


WHILE

while [$contador -lt 3]
do
------
let contador= contador +1
done

PD: Puede haber algun problema con los espacios en las sentencias....

Consejos para Gnu/Linux


He aquí unas pequeñas ayudas para los que comienzan en el mundillo de GNU/Linux
Crear alias para los comandos

En /home/usuario/.bashrc encontramos los aliases para bash, simplemente hay que modificarlo o añadir los que necesitemos

Montar particiones mediante fstab
Ejemplo NTFS con driver ntfs-3g (para escritura)
/dev/sda1 /media/sda1 ntfs-3g defaults,locale=es_ES.utf8 0 0
Ejemplo FAT32
/dev/sda2 /media/sda2 vfat iocharset=utf8,umask=000 0 0

Montar particiones samba remotas desde la línea de comandos
smbmount //ip_remota/recurso_compartido /punto_de/montaje/ -o uid=usuario_local,username=usuario_remoto,password=passwordremoto

PD:Para esto último, es probable que tengas que instalar el paquete smbfs