domingo, 25 de marzo de 2012

Comandos Linux (Los más usados).

Una lista con los comandos más usados en la terminal de Linux.

Archivos y Directorios:

- cd /home: entrar en el directorio home.
- cd ..: retroceder un nivel.
- cd ../..: retroceder dos niveles.
- cd: ir al directorio raiz.
- cd ~user1: ir al directorio user1.
- cd -: regresar al directorio anterior.
- pwd: mostrar el camino del directorio de trabajo.
- ls: listar los ficheros de un directorio.
- ls -F: ver los ficheros de un directorio.
- ls -l: mostrar los detalles de ficheros y carpetas de un directorio.
- ls -a: mostrar los ficheros ocultos.
- tree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.
- lstree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.
- mkdir carp1: crear una carpeta o directorio con nombre carp1.
- mkdir carp1 carp2: crea dos carpetas o directorios simultáneamente.
- mkdir -p /carp0/carp1/carp2: crea un árbol de directorios.
- rm archivo1: borra el archivo llamado archivo1.
- rm -f archivo1: borra el archivo llamado archivo1.
- rmdir dir1: borra la carpeta llamada dir1.
- rm -rf dir1: borra la carpeta llamada dir1 y todo su contenido. 
- rm -rf dir1 dir2: borra dos carpetas con todo su contenido.
- mv dir1 nuevo_dir: cambia el nombre de dir1 a nuevo_dir.
- mv /dir1/file /dir2 mueve el archivo file de la carpeta dir1 a la carpeta dir2.
- cp archivo.txt: copia un archivo llamado archivo.txt
- cp archivo1 archivo2: copia dos archivos a la vez.
- cp dir /*: copia todos los ficheros de un directorio dentro del directorio de trabajo actual.
- cp -a /tmp/dir1: copa un directorio dentro del directorio de trabajo actual.
- cp -a dir1: copiar un directorio.
- cp -a dir1 dir2: copia dos directorios a la vez.
- ln -s file1 lnk1: crea un enlace simbólico al fichero o directorio.
- ln file1 lnk1: crea un enlace físico al fichero o directorio.
- touch -t 0854450000 file1: modifica el tiempo de creación de un fichero o directorio.
- file file1: salida (volcado en pantalla) del tipo mime de un fichero de texto.

Continuará...

jueves, 15 de marzo de 2012

Montar particiones de forma autómatica en Linux

Muchas veces tenemos en nuestro sistema particiones que nos piden poner contraseña para montarlas cada vez que iniciamos sesión.

A priori no es un drama, pero se reconoce que es un poco molesto el andar metiendo la contraseña cada vez que quieres acceder a un dato de esa partición.

La forma de solucionar esto es configurar la partición para que se automonte al arranque del sistema, y ya esté accesible desde el primer momento sin necesidad de poner contraseña.

El archivo a modificar se encuentra en /etc/fstab.

Pero existe una aplicación que nos lo pone mucho más facil a la hora de configurar el automontaje de nuestras particiones.

Se trata de PySDM.

Este programa se encuentra en la mayoría de repositorios oficiales de nuestra distro. Basta con ir a la terminal a descargarla:

apt-get install pysdm (si estás con una distro basada en Debian)
yum install pysdm (si estás con una distro basada en Red Hat)

Antes de tocar nada, conviene hacer una copia de seguridad del archivo fstab.

Desde la terminal y como root, nos situamos en la carpeta /etc y tecleamos:

cp fstab fstab-old

Con esto hacemos una copia de fstab en un archivo llamado fstab-old.

Si la fastidiamos en algún momento, podemos restaurar el fstab tecleando:

cp fstab-old fstab

Para iniciarlo lo tecleamos desde la terminal

pysdm



Como vemos en la imagen, a la derecha se nos muestra nuesto disco duro sda, y dentro las particiones disponibles, sda1, sda2, y sda3.

En mi caso, la primera partición, sda1 es la partición del sistema, la sda2 es la partición swap, y la sda3 es una partición NTFS que necesitaba autenticar por contraseña cada vez que iniciaba sesión en el equipo.

Así que marcamos la partición a automontar, y clicamos en Asistente.


Aquí nos aseguramos de que esté marca la opción:

"Montar el sistema de ficheros en el arranque".

Y que esté NO esté marcada la opción:

"Sistema de solo lectura".

Aceptamos, y luego Aplicamos.

Tras reiniciar, ya se nos montará esa partición automáticamente.





martes, 13 de marzo de 2012

Instalar Prestashop en Linux

En esta guía vamos a explicar cómo instalar el gestor de tiendas virtuales de código abierto, Prestashop, en nuestra máquina Linux.

La instalación no difiere mucho respecto a la de Windows, aunque existen un par de detalles que mencionaremos posteriormente.

Antes de instalar Prestashop y ejecutarlo en modo local, necesitamos que se encuentren instalados: Apache, PHP y mySQL.

Para instalar estos módulos puedes consular esta entrada donde se explicó cómo instalar el paquete XAMPP en Linux. 

Empezamos...


Lo primero será acudir a la web del proyecto y descargar el paquete Prestashop, que está comprimido en zip.

Podemos extraerla con nuestro descompresor favorito, o podemos acceder a una terminal, situarnos en el directorio donde se ha descargado y teclear:

unzip prestashop_1.4.7.0.zip



Una vez descomprimido, vemos que la carpeta que nos ha generado:


Bien, esta carpeta tenemos que copiarla dentro de /opt/lampp/htdocs.

Pero si intentamos copiarla tal cual, nos va a decir que no tenemos permisos para realizar la acción.

Así que vamos a copiarla utilizando la terminal.

Lo primero nos identificamos como root:

su
password

Nos situamos en el directorio donde se encuentra la carpeta Prestashop, y tecleamos:

cp -R prestashop /opt/lampp/htdocs



Con cp copiamos, con -R le decimos que incluya todos los archivos y subdirectorios que hay en el interior, y lo último es la ruta en donde queremos copiarlo.

Nos aseguramos de que se ha copiado correctamente:



Otro paso importante:

Para instalar Prestashop, éste necesita poder leer/escribir en los archivos/carpetas de Prestashop. Pero recordemos que la carpeta /opt y todos los subdirectorios que le cuelgan solo son escribibles por root. Para cualquier otro usuario solo son de lectura.

Así que necesitamos asignar permisos de lectura/escritura a toda la carpeta prestashop, para que cualquier usuario (el propio Prestashop) tenga acceso a lectura/escritura.

El comando es:

chmod -R 0777 /opt/lampp/htdocs/prestashop



chmod es el encargado de asignar permisos.
-R le indica que afecte a todos los archivos y subdirectorios que contiene.
Los permisos en Linux se establecen mediante un número octal (con base 8), esto significa, números que comprenden entre el 0 y el 7. 
El parámetro 0777 asigna permisos a cualquier usuario para lectura/escritura.

Una vez establecidos los permisos, vamos a crear la base de datos sobre la que trabajará Prestashop.

Para ello accedemos al navegador y entramos en http://localhost/phpmyadmin


Pinchamos en Bases de Datos y escribimos el nombre para esta. Por ejemplo, Prestashop, y clic en Crear.


Ahora para instalar Prestashop entramos en http://localhost/prestashop:

Lo primero que nos aparece es el Contrato de Licencia. Siguiente:



A continuación nos pide un nombre para el servidor, el nombre de la base de datos que habíamos creado, el usuario de la base de datos, etc..

Podemos dejar las opciones por defecto:


En tipo de instalación podemos darle a Modo Completo, para que nos incluya todos los módulos y la tienda de ejemplo para ver cómo funciona y poder modificarla a nuestro antojo.

El e-mail es opcional y como bien dice, configurarlo es para expertos únicamente, jeje.


Más datos sobre nuestra tienda. Podemos poner el nombre, el tipo de actividad que vamos a realizar, escoger un logo, etc.


Escribimos nuestro nombre y apellido.

Muy importante la dirección de email que pongamos aquí y la contraseña, pues es la que nos va a pedir cuando administremos la tienda.


La hemos terminado la instalación. 


Como vemos en el mensaje, nos dice que para más seguridad borremos la carpeta install que se encuentra dentro de la carpeta Prestashop.

Pues nos vamos a la terminal, nos siguamos en el directorio de prestashop:

cd /opt/lampp/htdocs/prestashop

y tecleamos:

rm -rf install (siempre identificado como root)



rm borra el directorio
-rf borra todos los archivos y subdirectorios internos y además no nos pregunta uno a uno si estamos seguros de borrarlos, ya que son bastantes archivos y directorios, y podemos estar un buen rato confirmando el borrado de cada archivo/directorio.

También tenemos que renombrar el directorio /admin.

Pues ya que tenemos la terminal abierta la renombramos, por ejemplo, a admin1:

mv admin admin1



Y para acceder a nuestra tienda entramos en http://localhost/prestashop

Añadir leyenda


Para acceder a la zona de administración, entramos en http://localhost/prestashop/admin1


Y eso es todo.

jueves, 1 de marzo de 2012

Arrays (Tablas) Parte 2



Arrays Multidimensionales

Los arrays multidimensionales son arrays en los cuales cada elemento es otro array.

Ejemplo:

<?php

$calendario[0] = array (1, "enero", 31);
$calendario[1] = array (2, "febrero", 28);
$calendario[2] = array (3, "marzo", 31);
$calendario[3] = array (4, "abril", 30);
$calendario[4] = array (5, "mayo", 31);
$calendario[5] = array (6, "junio", 30);
$calendario[6] = array (7, "julio", 31);
$calendario[7] = array (8, "agosto", 31);
$calendario[8] = array (9, "septiembre", 30);
$calendario[9] = array (10, "octubre", 31);
$calendario[10] = array (11, "noviembre", 30);
$calendario[11] = array (12, "diciembre", 31);

reset ($calendario);

while (list ($clave, $valor) = each ($calendario)) {

$cadena = $valor[1];
$cadena .= " es el mes número " . $valor[0];
$cadena .= " y tiene " . $valor[2] . " días <BR>";

echo $cadena;

}

?>

Vamos a explicar este ejemplo de array multidimensional.

1º Hemos declarado un array llamado $calendario. Este calendario está formado por 12 elementos que serían los 12 meses del año.

2º A cada elemento hemos declarado un array que recoge tres valores, el número de mes, el nombre del mes y el número de días que tiene ese mes.

Por lo que hemos metido un arrays dentro de otro array que era lo que se pretendía.

3º Hemos creado un bucle While para recorrer los arrays. Con la función list hemos declarado las variables $clave y $valor para ir recogiendo los valores del array, y con la función each, extraemos el valor del elemento actual y pasamos al siguiente.

4º Hemos creado una variable llamada $cadena para que almacene los elementos de los arrays internos. Recordamos que cada array interno tenía 3 valores:

valor[0] = Número del mes.
valor[1] = Nombre del mes.
valor[2] = Número de días que tiene el mes.

5º Por último hemos creado un echo para $cadena y nos ha imprimido lo que le hemos indicado:

enero es el mes número 1 y tiene 31 días
febrero es el mes número 2 y tiene 28 dí­as
marzo es el mes número 3 y tiene 31 dí­as
abril es el mes número 4 y tiene 30 dí­as
mayo es el mes número 5 y tiene 31 dí­as
junio es el mes número 6 y tiene 30 días
julio es el mes número 7 y tiene 31 dí­as
agosto es el mes número 8 y tiene 31 dí­as
septiembre es el mes número 9 y tiene 30 dí­as
octubre es el mes número 10 y tiene 31 días
noviembre es el mes número 11 y tiene 30 dí­as
diciembre es el mes número 12 y tiene 31 dí­as

Veamos otro ejemplo.

Imaginemos que tenemos una lista de empleados y queremos almacenar en un array sus nombres, edad y estado civil.

<?php
$empleados[0] = array ("Pedro", 34, "casado");
$empleados[1] = array ("Jorge", 26, "soltero");
$empleados[2] = array ("Ana", 28, "casada");
$empleados[3] = array ("Julia", 30, "soltera");

reset ($empleados);

while (list ($clave, $valor) = each ($empleados)) {

$cadena = $valor[0];
$cadena .= " tiene " . $valor[1] . "años";
$cadena .= " y está " . $valor[2];

echo $cadena;

}

?>

Imprimiría:

Pedro tiene 34 años y está casado
Jorge tiene 26 años y está soltero
Ana tiene 28 años y está casada
Julia tiene 30 años y está soltera


En el próximo capítulo hablaremos de Bucles y Repeticiones.

Arrays (Tablas) Parte 1



Los arrays son variables que permiten almacenar varios elementos, estructurándolos como si fuesen una tabla, de ahí a que también se les llamen tablas.

Imaginemos que tenemos una variable llamada $pais, y que a esa variable queremos incluirle varios nombres de países.

Lo declararíamos de la siguiente forma:

<?php
$pais[0] = "España";
$pais[1] = "Francia";
$pais[2] = "Portugal";
$pais[3] = "Alemania";
$pais[4] = "Polonia";
echo "Yo vivo en " .$pais[0];
?>

Esto imprimiría "Yo vivo en España".

Al número entre corchetes [] se le llama índice. Si cambiamos el índice en el echo, nos imprimirá el elemento de ese índice.

Se puede declarar el array de forma más rápida, de la siguiente forma:

<?php
$pais = array("España", "Francia", "Portugal", "Alemania", "Polonia");
echo "Yo vivo en " .$pais[0];
?>

Nos imprimiría el mismo resultado. Solo hay que contar los índices, teniendo en cuenta que el primer índice será el 0.

Si queremos que el índice empiece por otro número, deberemos declararlo:

$pais = array(1=> "España", "Francia", "Portugal", "Alemania", "Polonia");


A los elementos de array se les pueden asignan otros valores llamados claves (keys). A estos arrays se les llama Tablas Asociativas.

Imaginemos que dentro del array países, que contiene varios elementos (países), queremos además asociar el idioma que se habla en cada uno de ellos.

Podemos hacerlo de las dos formas al igual que antes:

<?php
$pais["Espana"] = "Español";
$pais["Francia"] = "Frances";
$pais["Portugal"] = "Portugues";
$pais["Alemania"] = "Aleman";
$pais["Polonia"] = "Polaco";
}
?>

El problema ahora sería recorrer la tabla para sacar el valor que nos interesa, ya que antes lo teniamos fácil al apuntar a su índice. Pero ahora el índice a cambiado al nombre del elemento.

Necesitamos recurrir a un bucle para que recorra el array.

Por defecto, el puntero interno se sitúa sobre el primer elemento de la tabla.

Haremos uso de las siguientes funciones:

- current para devolver el valor del elemento donde se encuentra el puntero.
- reset  para mover el puntero al primer elemento de la tabla.
- end para mover el puntero al último elemento de la tabla.
- next para mover el puntero al siguiente elemento de la tabla.
- prev para mover el puntero al elemento anterior de la table.
- count para que nos diga el número de elementos de la tabla.

Para recorrer la tabla utilizaremos la función each().
Volvemos al ejemplo anterior de los países:

<?php
$pais = array ("Espana"=>"Español", "Francia"=>"Frances", "Portugal"=>"Portugues", "Alemania"=>"Aleman", "Polonia"=>"Polaco");
reset($pais); //situamos el puntero en el primer elemento.
while (list($clave, $valor) = each($pais)) {
echo "En el pais " . $clave . " se habla " . $valor . "<BR>";
}
?>

Esto imprimirá:

En el pais Espana se habla Español
En el pais Francia se habla Frances
En el pais Portugal se habla Portugues
En el pais Alemania se habla Aleman
En el pais Polonia se habla Polaco

Repasemos el código:

Declaramos el array $pais, con una lista de elementos (países) con unos valores asociados (idiomas).

Colocamos el puntero en el primer elemento de la tabla con reset.

Creamos un bucle While en el que listamos (list) las claves (paises) y valores (idiomas) de cada elemento de la tabla, y con each extraemos el valor del elemento actual y pasamos al siguiente, hasta que llega al final.

En la 2ª parte veremos los Arrays Multidimensionales.