sábado, 15 de junio de 2013

Instalar LenovoEMC Storage Manage en Ubuntu 13.04

Este es nuestro cliente para conectarnos a nuestra nube personal LenovoEMC:

http://iomegacloud.com/download_page.php?cloud_name=&access_code=&user_lang=la

Descargamos y ejecutamos el instalador:

$ sudo ./storagemgrsetup.bin
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

strings: '/lib/libc.so.6': No such file

Launching installer...


Graphical installers are not supported by the VM. The console mode will be used instead...

Preparing CONSOLE Mode Installation...

===============================================================================
Choose Locale...
----------------

    1- Deutsch
    2- English
  ->3- Español
    4- Français
    5- Italiano
    6- Nederlands
    7- Português  (Brasil)
    8- Svenska

CHOOSE LOCALE BY NUMBER: 3

=======================================================

Modo de la interfaz del usuario del instalador no compatible

El programa de instalación no puede ejecutarse en este modo de interfaz del usuario. Para especificar el modo de interfaz, utilice la opción de línea de comandos -i, seguido del identificador de modo de interfaz del usuario. Los identificadores de modos de interfaz del usuario válidos son GUI, Consola, y Silencioso.

=======================================================


Si les aparece el mismo mensaje de error que a mí, sigan estos pasos:
  1. Este error strings: '/lib/libc.so.6': No such file lo solucionamos con un link simbólico:

    sudo ln -s /lib/x86_64-linux-gnu/libc.so.6 /lib/libc.so.6
  2.  
  3. Por último, para corregir el error de la GUI en la JVM ejecutamos:

    $sudo /usr/sbin/alternatives --config java

miércoles, 22 de mayo de 2013

Montar una carpeta compartida de Windows o un NAS en Ubuntu

Por ejemplo, vamos a montar una carpeta compartida de música en red ya sea de una máquina con Windows o un NAS.

Primero creamos el directorio donde se montará en nuestra máquina local con Linux:

$sudo mkdir -p /mnt/NAS/Musica

Ahora instalaremos los paquetes necesarios para poder montar carpetas por samba:

$ sudo apt-get install samba smb-client cifs-utils

Por último, montamos la carpeta compartida:

$ sudo mount -t cifs //192.168.1.2/Musica /mnt/Musica/

Para automontar la carpeta cuando inicia el sistema operativo seguimos los siguientes pasos:

Instalamos primero el servicio autofs:

$sudo apt-get install autofs

Lo configuramos agregando esta línea al archivo /etc/auto.master:

/mnt/NAS /etc/auto.musica --timeout=60 --ghost

Ahora creamos el archivo /etc/auto.musica y escribimos dentro:

Musica -fstype=cifs ://192.168.1.2/Musica

Iniciamos el servicio:

$ sudo /etc/init.d/autofs start

martes, 21 de mayo de 2013

Yii Sharebox + DynamicRes

Escribí una actualización del código fuente de la extensión de Yii Sharebox para que funcione con DynamicRes, ya que por defecto usa CClientScript. El fork del repositorio en GitHub lo pueden encontrar aquí: https://github.com/matiasmagni/yii-sharebox

lunes, 20 de mayo de 2013

Montar FTP en un directorio local en Linux

Instalamos curlftpfs:

$ sudo apt-get install curlftpfs

Montamos la dirección del recurso FTP que queremos acceder en un directorio local:

$ sudo mkdir /mnt/ftp
$ mkdir /mnt/ftp/midominio
$ curlftpfs -o user="usuario:password" ftp://ftp.midominio.com/ /mnt/ftp/midominio

En usuario y password escribimos nuestro usuario y contraseña del FTP de nuestro sitio midominio.com.

Ahora podemos, por ejemplo, crear un enlace simbólico a /mnt/ftp/midominio y ponerlo en el root directory de nuestro servidor local:

$ ln -s /mnt/ftp/midominio /var/www/midominio

De esta manera podemos trabajar en el root directory de nuestro sitio como si fuera local.

miércoles, 8 de mayo de 2013

Mejorar la performance de Netbeans


Este post va dedicado a todos aquellos que estamos cansados de la lentitud de Netbeans. Primero que nada les recomiendo instalar la última versión de Netbeans en inglés (ya que la mayoría de los tutoriales, plugins, actualizaciones, etc., están en ese idioma, lo que nos facilitará seguir las instrucciones) y sólo con el lenguaje de programación con el que vayan a trabajar. Cualquier cosa, en el futuro podrán activar los plugins para otros lenguajes.

Ahora sí podemos seguir con esta lista de recomendaciones.

Tips:
  • Desactivar todos aquellos complementos que no usamos:
    1. Vamos a Tools -> Plugins -> Installed.
    2. Activamos el checkbox Show details para que nos muestre los plugins bien detallados.
    3. Seleccionamos el checkbox del plugin que nos interese desactivar.
    4. Hacemos click en Deactivate.
    5. Reiniciamos el IDE.
  • Desactivar el escaneo automático:
    1. Vamos a Tools -> Options -> Miscellaneous -> Files.
    2. Desactivamos el checkbox de Enable auto-scanning of sources.
También podemos instalar un plugin que nos desactiva esa opción, pero nos pasará nuestra versión del IDE de Stable a Develop Version. Yo lo he hecho y funciona bien.
  1. Vamos a Tools -> Plugins -> Settings.
  2. Pulsamos el botón Add y agregamos la url http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
  3. Vamos a Available Plugins y buscamos el plugin SCAN ON DEMAND.
  4. Pulsamos el checkbox e instalamos.
Tras terminar esto, faltará reiniciar el IDE para que se apliquen los cambios.
CUIDADO, seguramente nos dirá que hay actualizaciones de plugins. Tener en cuenta que hemos pasado a una nueva versión.

Solo les puedo decir que instalar ese plugin ha sido la mejor solución a este problema, ya que el consumo de procesador que rondaba entre los 100% - 200% ahora ha bajado estrepitosamente a 5% - 10%.

martes, 7 de mayo de 2013

Documentar en PHP con ApiGen usando Netbeans 7.3 en Linux

ApiGen es una herramienta para PHP que documenta las clases de nuestro proyecto de una forma muy parecida al Javadoc de Java. También existe phpDocumentor, pero probando ambas me quedé finalmente con ApiGen que tiene una interfaz, a mi gusto, mucho mas rápida para acceder a la información de las clases.

Para instalarla, abrimos una consola con el usuario root y tipeamos:

# pear config-set auto_discover 1
# pear install pear.apigen.org/apigen

Si no quieren usar el autodiscover de pear, la opción alternativa sería:

# pear channel-discover pear.apigen.org
# pear channel-discover pear.nette.org
# pear channel-discover pear.texy.info
# pear channel-discover pear.kukulich.cz
# pear channel-discover pear.andrewsville.cz
# pear install apigen/ApiGen

Pero yo les recomiendo usar autodiscover, ya que la instalación es más sencilla de esa manera. Ahora hacemos click izquierdo en nuestro proyecto PHP en Netbeans y nos vamos a Generate documentation > ApiGen. Si no nos genera la documentación automáticamente nos va a aparecer una ventana donde tendremos que decirle la ruta del script generador de ApiGen. Hacemos click en search. A mí que uso Lubuntu me sugiere la ruta /usr/bin/apigen. La ruta podría llegar a variar dependiendo de la distro de Linux que estén usando, si search no funciona, ejecuten este comando para encontrar la ruta:

# whereis apigen
apigen: /usr/bin/apigen /usr/bin/X11/apigen




lunes, 6 de mayo de 2013

Imprimir pantalla en Lubuntu

Abrimos una consola como root y tipeamos:

# apt-get install gnome-screenshot

¡Listo! Ya tenemos el botón Impr pant funcionando en Lubuntu.

Instalar PHPUnit en Linux para su uso en Netbeans 7.3

Ejecutar en una consola logueado como root:

# pear config-set auto_discover 1
# pear install pear.phpunit.de/PHPUnit
# pear install pear.phpunit.de/PHPUnit_SkeletonGenerator
# pear install pear.phpunit.de/DbUnit
# pear install pear.phpunit.de/PHP_Invoker
# pear install pear.phpunit.de/PHPUnit_Story
# pear install pear.phpunit.de/PHPUnit_Selenium

Ahora resta configurar el plugin en netbeans. Nos vamos a Tools > Options. Debería verse así:


Esos son mis paths para Ubuntu, para otras distros de Linux podrían ser diferentes. Para tal caso, ejecutar el comando whereis para saber donde se ubican dichos scripts:

# whereis phpunit
phpunit: /usr/bin/phpunit /usr/bin/X11/phpunit /usr/share/man/man1/phpunit.1.gz

$ whereis phpunit-skelgen
phpunit-skelgen: /usr/bin/phpunit-skelgen /usr/bin/X11/phpunit-skelgen

martes, 20 de noviembre de 2012

Activar xdebug en PHP

Configuración en php.ini para activar xdebug:

zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.show_local_vars=On
xdebug.dump.SERVER=HTTP_HOST, SERVER_NAME
xdebug.dump_globals=On
xdebug.collect_params=4
xdebug.show_exception_trace=On

viernes, 3 de junio de 2011

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

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