Mechasoft: Blog de Matías J. Magni

…dedicado al Open Source y al delirio del Autor…

  • Matías J. Magni

  • RSS Ubuntu

    • Ubuntu Cloud 15/12/2011
      In this webinar we discuss how open-source technologies in general, and Ubuntu Cloud in particular, can help companies avoid frustrating vendor lock-in and stay in control of their own cloud destinies. We will also explore Ubuntu’s unique attributes, looking at how it minimises hardware and software costs, accelerates cloud deployment, and supports dynamic s […]
    • Juju is Devops Distilled 15/12/2011
      Accelerated provisioning through IAAS has put the spotlight on friction in the deployment, configuration and management of services. This friction can only be overcome via a change in emphasis, from configuring machines to connecting services that can then be scaled independently. In other words, service orchestration. With Juju, services can be deployed, co […]
    • Crunch time on the Enterprise Desktop 12/12/2011
      This new e-book: Crunch time on the Enterprise Desktop is a great, short introduction to why there's never been a better time to include Ubuntu in your desktop strategy. Ubuntu is an elegant, feature-rich OS already running on millions of workplace desktops around the world, with more organisations switching every day. Once considered to technical for g […]
    • Five Golden Rules For An Ubuntu Desktop Migration 12/12/2011
      The next e-book in the series lets you into the secrets of a successful Ubuntu migration. To help you plan your migration, we've compiled 5 golden rules for success. These are things we've learned from the hundreds of Ubuntu desktop migrations we've conducted for clients around the world – from the French National Police Force to the Supreme C […]
    • Ubuntu Cloud: Cost Containment and Channel Opportunities 17/11/2011
      This channelcast will provide comprehensive insight into the current market for both Linux and Cloud adoption. Our special guest is Dave Russell, who heads Global Pre-sales at Canonical. In addition, CSS Corporation, a Canonical reseller, will share with you some of their current business opportunities and explain the benefits of being a Canonical global par […]
  • RSS LUGMen

    • Festival Latinoamericano de Instalacion de Software Libre 2010 11/03/2010
    • Nuevo pastebin.com.ar 01/07/2009
      Ahora podes pegar la salida de tus programas o tu código, en cualquiera de los 50 lenguajes soportados por pastebin, con resaltado de sintaxis para mostrarlos, linkearlos en listas de correo, IRC o desde tu cliente de mensajería instantánea preferido utilizando la URL http://pastebin.com.ar además de la anterior http://pastebin.lugmen.org.ar Gracias a LugFi […]
    • Festival Latinoamericano de Instalacion de Software Libre 2009 17/04/2009
    • ¿Cuál es el mejor diseño para la Expo 2009? 26/03/2009
      http://wiki.lugmen.org.ar/doku.php/expo2009_diseno#blitux49% (399 votos)http://wiki.lugmen.org.ar/doku.php/expo2009_diseno#marcos_trentacoste0% (4 votos)http://wiki.lugmen.org.ar/doku.php/expo2009_diseno#diseno_estudio_a-es_de_la_mano_de_global49% (398 votos)Con un Tux hecho con ASCII Art es suficiente1% (8 votos)Ninguno0% (3 votos)Total de votos: 812
    • Se viene la Expo 2009 13/03/2009
      Ya se está organizando la Expo 2009, bautizada como LUGMen's Resurrection. Así que vayan preparandose para un fin de semana largo a puro Software Libre los días 23 y 24 de mayo del 2009 en la UTN Facultad Regional Mendoza. La Expo está abierta a todo público y participarán entusiastas y seguidores del Software Libre de Argentina y otros países. Quedan t […]
  • Archivos

printf(“Hola Mundo!”);

Publicado por Matías Magni en 20/11/2008

Bueno mi nombre es Matías Magni y con esta sentencia doy comienzo a este blog destinado a los lenguajes de programación, el código abierto, discusiones sobre tecnologías, etc, etc… La idea es devolver un poco a la comunidad de internet por todo lo que he aprendido gracias a ella. Espero que les guste mi blog y espero ver sus comentarios. Saludos!

Publicado en Inicio | 4 Comentarios »

Configurar un servidor LEMP (Linux, Nginx, MySQL, PHP5)

Publicado por Matías Magni en 03/06/2011

1. Instalamos el servidor web nginx:

# apt-get install nginx

Iniciamos el servicio:
# /etc/init.d/nginx start

2. Instalamos MySQL:

# apt-get install mysql-server mysql-client

3. Instalamos PHP5:

# apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Editamos el archivo /etc/php5/cgi/php.ini:
# vim /etc/php5/cgi/php.ini
Agregamos la siguiente línea o la descomentamos en el caso de que ya exista:
cgi.fix_pathinfo = 1

4. Instalamos Lighttpd:

Debemos instalar Lighttpd para proporcionar una interfaz Fast CGI del intérprete de PHP, ya que no viene incluida con Nginx.
# apt-get install lighttpd

Lo quitamos del arranque:
# update-rc.d -f lighttpd remove

5. Configuramos la interfaz Fast CGI:

Creamos el script de inicio:

# vim /etc/init.d/php-fastcgi

Escribimos las siguientes lineas de código dentro del mismo:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-fastcgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description:       Start and stop php-cgi in external FASTCGI mode
### END INIT INFO

# Author: Kurt Zankl <[EMAIL PROTECTED]>

# Do NOT "set -e"

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PHP_CONFIG_FILE=/etc/php5/cgi/php.ini

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
        log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
        exit 0
fi

# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT -c $PHP_CONFIG_FILE"

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
                --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}
case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

Le damos permisos de ejecución:

# chmod +x /etc/init.d/php-fastcgi

Ahora creamos el archivo de configuración:

# vim /etc/default/php-fastcgi

Y agregamos lo siguiente:

START=yes

# Which user runs PHP? (default: www-data)

EXEC_AS_USER=www-data

# Host and TCP port for FASTCGI-Listener (default: localhost:9000)

FCGI_HOST=localhost
FCGI_PORT=9000

# Environment variables, which are processed by PHP

PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000

Agregamos la interfaz Fast CGI en el arranque del sistema:

# update-rc.d php-fastcgi defaults

6. Configuramos Nginx y el vhost por defecto:

# vim /etc/nginx/sites-available/default

En el virtual host por defecto cambiamos las lineas de código para que se vean así:

server_name localhost;
location ~ \.php$ {
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
	include fastcgi_params;
}

Reiniciamos el servidor:
# /etc/init.d/nginx restart

Por último agregamos el servidor web al arranque del sistema:
# update-rc.d nginx defaults

Publicado en Uncategorized | Deja un Comentario »

Cambiar el tamaño a una lista de imágenes en Linux

Publicado por Matías Magni en 16/05/2011

Bueno este artículo está destinado a aquellos desarrolladores web que como yo se encuentran a menudo con el problema de cambiar el tamaño de una lista de imágenes de una sóla vez, ya sea porque un módulo de una galería trabaja con cierto tamaño en las imágenes o para reducir el tráfico en su sitio.

Aquí les dejo el script que cambia el tamaño de las imágenes contenidas en un directorio y las guarda dentro del directorio images-resized:


mkdir images-resized
for file in *.$1
do
convert "$file" -resize $2\! +profile '*' "images-resized/${file%%.$1}.$1"
done

Ejecución del script:

$ ./resize.sh <extension_archivos> <dimension>

Ejemplo de ejecución del script:

$ ./resize.sh jpg 640×480

Publicado en Uncategorized | Deja un Comentario »

Como eliminar los archivos Thumbs.db en Windows

Publicado por Matías Magni en 14/01/2010

Esto es totalmente útil cuando se trabaja con SVN y no queremos hacer commit de esos molestos archivos.

  1. Inicio > Ejecutar…
  2. cmd
  3. attrib -a -s -h /s thumbs.db (Tarda un tiempo considerable el comando en terminar)
  4. Abrir el explorador de Windows.
  5. Herramientas > Opciones de Carpeta … ficha Ver.
  6. En la sección bajo Configuración avanzada, buscar la opción No alojar en caché las vistas en miniatura.
  7. Presiona Aceptar.
  8. Ahora realizar una búsqueda de los archivos thumbs.db existentes en tu PC y eliminarlos.

Publicado en Uncategorized | Deja un Comentario »

ACTUALIZAR A UBUNTU 9.04

Publicado por Matías Magni en 23/04/2009

Si al intentar actualizar el Ubuntu desde el Gestor de actualizaciones nos sale un error del tipo:

Error al obtener http://security.ubuntu.com/ubuntu/dists/intrepid-security/universe/binary-i386/Packages.bz2 La Suma MD5 difiere

o en inglés:

Failed to fetch http://security.ubuntu.com/ubuntu/dists/intrepid-security/universe/binary-i386/Packages.bz2 Hash Sum mismatch

Se soluciona cambiando el servidor de Argentina por el servidor principal. Para eso abran el Synaptic y vayan a Configuraciones > Repositorios y cambien el servidor.

Espero que les sirva porque me leí mil foros y no conseguí nada, fue un momento de iluminación cuando se me ocurrió hacer eso :P

Publicado en Uncategorized | 1 comentario

Añadir subtítulos a un video en Linux

Publicado por Matías Magni en 02/03/2009

Para llevar acabo esta tarea deberemos instalar avidemux. En Ubuntu lo podremos instalar con la siguiente línea:

$ sudo apt-get install avidemux

Luego lo que deberemos hacer se ve en el siguiente video:

O podríamos usar mencoder desde la línea de comandos:

$ mencoder mi_video.avi -oac pcm -ovc lavc -lavcopts vcodec=xvid:mbd=2:trell:autoaspect -sub mis_subtitulos.srt -subfont-text-scale 3 -o video_final.avi

Publicado en Uncategorized | Deja un Comentario »

Flash sin sonido en Ubuntu con Firefox 3.0

Publicado por Matías Magni en 02/03/2009

Leyendo en internet me he dado cuenta de que es un problema muy frecuente así que publico aquí la solución que funcionó para mí.

Abrir una consola y escribir la siguiente línea:

$ sudo apt-get install libflashsupport

Publicado en Uncategorized | Deja un Comentario »

Comprimir y descomprimir .rar .ace .zip en Ubuntu

Publicado por Matías Magni en 19/01/2009

Escribimos en consola:

$ sudo aptitude install rar unace unrar p7zip p7zip-full arj unzoo

Y nuestro gestor de archivadores por defecto podrá soportar estos formatos.

Publicado en Uncategorized | 1 comentario

Configurar SVN para el envío de e-mails sin MTA

Publicado por Matías Magni en 12/12/2008

Podemos configurar SVN para que envíe un e-mail al realizar el commit de una versión del repositorio pero el script que viene por defecto con el programa utiliza sendmail el cual necesita que haya un servidor de SMTP corriendo en nuestra PC. Nosotros podemos utilizar un script hecho en bash que utilice una cuenta en Gmail y que envíe los e-mails utilizando mutt.

Para ello nos vamos al directorio del repositorio SVN y creamos el script:

$ vim post-commit
#!/bin/bash

# post-commit script
# @autor: Matias J. Magni
# @email: matias.magni@gmail.com

# ----------------------------------------------------------------------------------

# variables a modificar. separar direcciones de correo electronico con un espacio.

mails="matias.magni@gmail.com thegoldmember@gmail.com"
ip="mjm.homelinux.com"

# ----------------------------------------------------------------------------------

# $1: home de svn
# $2: revision del repositorio

i=0;
autor=$(svnlook author $1 -r $2)
log=$(svnlook log $1 -r $2)
archivos=$(
	for linea in $(svnlook changed $1 -r $2)
	do
		i=$(($i+1))
		if [ $(($i%2)) -eq 1 ]
		then
			echo "<li>"
		else
			echo $linea
		fi
	done
)
fecha=$(svnlook date $1 -r $2 | cut -f 1,2,4,5,6,7 -d " ")

# contenido del mail
mensaje="<h1>La revisión $2 del repositorio ya se encuentra disponible.</h1>
		Modificado por <b>$autor</b>.<br><br>
		<b>Fecha de modificación:</b> $fecha<br><br>
		<b>Comentario de modificación:</b><br>
		<pre>$log</pre><br>
		<b>Archivos modificados:</b><br>
		<ul>$archivos</ul><br>
		<b>URL:</b> svn://$ip$1"

# envio del e-mail.
echo $mensaje | mutt -e 'set content_type="text/html"' -s "SVN - Cambios en el repositorio" $mails

El e-mail debería ser una cosa así:

svn_mail

Pero para poder hacer esto necesitaremos que mutt esté configurado para poder acceder a nuestra cuenta Gmail. Lo primero que debemos hacer es configurar nuestra cuenta para que sea accesible vía protocolo IMAP, para lo cual accedemos a nuestro correo y nos vamos a Configuración > Reenvío y correo POP/IMAP y habilitamos IMAP. Luego, debemos editar un archivo rc que pondremos en nuestro home directory:

$ vim .muttrc
set imap_user = "aquí va el e-mail"
set imap_pass = "aquí va el password"

set smtp_url = "smtp://aquí va el nombre de la cuenta@smtp.gmail.com:587/"
set smtp_pass = "aquí va el password"
set from = "aquí va el e-mail"
set realname = "aquí va tu nombre"

set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed="+[Gmail]/Drafts"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set move = no

set sort = 'threads'
set sort_aux = 'last-date-received'
set imap_check_subscribed

ignore "Authentication-Results:"
ignore "DomainKey-Signature:"
ignore "DKIM-Signature:"
hdr_order Date From To Cc

Publicado en Uncategorized | Deja un Comentario »

Solucionar problemas de DNS usando Speedy

Publicado por Matías Magni en 11/12/2008

No sé si se habrán dado cuenta pero ultimamente el servidor DNS de Speedy anda muy mal, para solucionar este problema podemos usar los servidores de openDNS. Para cambiar nuestros DNS hacemos lo siguiente:

# vim /etc/resolv.conf

Y escribimos dentro del archivo:

nameserver 208.67.222.222
nameserver 208.67.220.220

Publicado en Uncategorized | 5 Comentarios »

Fallo de segmentación en Gestionador de Paquetes

Publicado por Matías Magni en 11/12/2008

Si al ejecutar Synaptic, apt-get o aptitude les tira un error de fallo de segmentación (segmentation fault), deben hacer lo siguiente para solucionar el problema:

# rm /var/cache/apt/*.bin

Publicado en Uncategorized | 1 comentario

 
Seguir

Get every new post delivered to your Inbox.