Blog Archives

Como cambiar permisos de archivos y directorios de manera recursiva

Digamos que en nuestro servidor web estamos instalando WordPress y queremos estar seguros que los permisos de archivos y directorios sean los correctos para evitar cualquier inconveniente de seguridad. 

Notaremos que estamos tratando con muchos archivos/directorios, y simplemente no podemos hacerlo de a uno a la vez.

Entonces, lo que haremos es valernos del comando find para encontrar archivos (f) y directorios (d), y asignarles permisos estándar para este tipo de situaciones.

find /ruta/al/directorio/superior -type d -exec chmod 755 {} ";"
find /ruta/al/directorio/superior -type f -exec chmod 644 {} ";"
Publicado en General

«Set the RESUME variable to override this»

En el error, initfram-tools hace saber que ha encontrado el una incongruencia relacionada al UUID de la partición swap.

Este error es visible luego de actualizar el sistema, al final del resumen de las operaciones. Allí es posible leer el siguiente mensaje:

Procesando disparadores para initramfs-tools (0.130ubuntu3.8) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
I: The initramfs will attempt to resume from /dev/sda3
I: (UUID=e791294f-d590-4a23-8d1a-47689915513a)
I: Set the RESUME variable to override this.

La solución es bastante sencilla, debemos agregar el UUID al archivo /etc/initramfs-tools/conf.d/resume. Para ello:

echo "RESUME=UUID=e791294f-d590-4a23-8d1a-47689915513a" | tee /etc/initramfs-tools/conf.d/resume

Luego ejecutamos lo siguiente para actualizar los kernels en el sistema:

update-initramfs -u -k all

Reiniciamos el sistema para que los cambios tengan efecto.

Publicado en General

Multiples versiones de PHP desde un mismo servidor Apache

Podemos enfrentar muchas situaciones en donde sea necesario correr múltiples versiones de PHP en paralelo. En el caso del cual extraigo este ejemplo la necesidad pasaba por brindar soporte a una aplicación moderna con PHP 7.2 y, al mismo tiempo, a un desarrollo personalizado que no permitía dejar la rama 5.x.

Como punto de partida utilizamos Debian 9 Stretch, ya que cuenta con una nueva infraestructura para paquetes PHP que maneja el versiones de manera nativa.

Instalar PHP

PHP 7.2

Instalamos PHP 7.2 desde los repositorios de Debian.

$ apt-get install php7.2-cli php7.2-fpm

Versiones anteriores de Debian usaban simplemente php5 mientras que la nueva infraestructura phpX.Y. De esta manera podemos instalar múltiples versiones de PHP en paralelo.

PHP 5.6

Debian ofrece solamente una única versión de PHP en el repositorio oficial. Afortunadamente existe un repositorio mantenido por el encargado de los paquetes oficiales de PHP en Debian, Ondřej Surý. Visita su página acerca de paquetería para aprender más. (También existe un repositorio PPA en caso que uses Ubuntu en lugar de Debian.)

Agregamos este repositorio (al tiempo que habilitamos HTTPS para APT y registramos la clave APT):

$ apt-get install apt-transport-https
$ curl https://packages.sury.org/php/apt.gpg | apt-key add -
$ echo 'deb https://packages.sury.org/php/ stretch main' > /etc/apt/sources.list.d/deb.sury.org.list
$ apt-get update

Ahora podemos instalar los paquetes desde allí:

$ apt-get install php5.6-cli php5.6-fpm

Esto instalará PHP 5.6 en paralelo con el PHP 7.2 instalado anteriormente. Podemos verificar esto con:

$ php7.2 -v
PHP 7.2.0-1 (cli)
$ php5.6 -v
PHP 5.6.32-1 (cli)

Configurar PHP

La configuración se almacena en ubicaciones versionadas también. Además, la configuración está separada para cada SAPI. Lo mismo se aplica para los módulos PHP así que no habrá que preocuparse acerca de módulos incompatibles entre versiones.

La configuración de PHP 7.2 FPM se almacena en /etc/php/7.2/fpm y PHP 5.6 en /etc/php/5.6/fpm. Cada instancia FPM consiste de múltiples pools. Cada sitio/proyecto debería tener su pool separado así que creamos una copia de la configuración predeterminada.

$ cp /etc/php/7.2/fpm/pool.d/www.conf /etc/php/7.2/fpm/pool.d/php72.conf
$ cp /etc/php/5.6/fpm/pool.d/www.conf /etc/php/5.6/fpm/pool.d/php56.conf

Buscamos la opción listen. Tendría que ser igual a /run/php/php7.2-fpm.sock o similar. Ahora hacemos los mismo para 5.6, debería contener lo mismo pero con 5.6 en lugar de 7.2. Esto también podría ser una dirección vinculada, ej. dirección IP con puerto (lo cual es más conveniente, en términos de desempeño, que sockets para entornos de producción).

Configurar Apache

Creamos un VirtualHost para cada versión de PHP, ej. /etc/apache2/sites-available/php7.2.conf

Agregamos


<VirtualHost>
...
<FilesMatch "\.php$">
   SetHandler proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost
</FilesMatch>
...
</VirtualHost>

Habilitamos el sitio

$ a2ensite php7.2

Y hacemos lo mismo con la configuración para PHP 5.6

Luego habilitamos los módulos necesarios

$ a2enmod proxy_fcgi

Y, por último, reiniciamos los servicios

$ systemctl restart php5.6-fpm php7.2-fpm apache2

Probando todo

Para probar que todo funcione de la manera que esperamos creamos un archivo PHP con la instrucción phpinfo, si todo está bien FPM/FastCGI aparecerá en la salida.

$ echo '<?php phpinfo(); ?>' > /var/www/sitio-php7.2/info.php

 

 

Fuentes |

Publicado en General

Convertir imagenes a PDF desde la línea de comandos

La herramienta ImageMagick nos permite llevar a cabo esta tarea de manera sencilla.

La sintáxis es la siguiente:

$ convert a.png b.png c.png (...) x.png multipagina.pdf

Ahora bien, es muy probable que el resultado no se ajuste a un tamaño de papel estándar para lo cual debemos definir de manera explícita para el destino mediante la opción ‘resize’:

$ i=150; convert a.png b.png c.png -compress jpeg -quality 70 \
 -density ${i}x${i} -units PixelsPerInch \
 -resize $((i*827/100))x$((i*1169/100)) \
 -repage $((i*827/100))x$((i*1169/100)) multipagina.pdf

El comando convert no siempre usa DPI como la unidad predeterminada para la densidad/formato de página, así pues debemos especificar de manera explicita los DPI con la opción -units (de otro modo es probable que obtengamos resultados diferentes con distintas versiones/combinaciones de formato de entrada). El nuevo tamaño (especificado vía -resize) es la dimensión de una hoja A4 en pixeles. El argumento resize especifica el tamaño máximo de página. La resolución y calidad exacta a escoger depende del uso en cada caso. En el ejemplo se seleccionó 150 DPI y calidad promedio para ahorrar algo de espacio al tiempo que no se ve tan mal una vez impreso.

Debemos notar que convert no cambia la relación de aspecto de manera predeterminada con la operación resize:

Resize encajará la imágen en el tamaño requerido. Aunque NO rellena el tamaño de caja.

Manual de ImageMagick: http://www.imagemagick.org/Usage/resize/#resize

Dependiendo de la versión de ImageMagick y el formato de entrada involucrado se podría omitir la opción -repage. Pero algunas veces se requiere y sin esa opción el encabezado del PDF podría contener dimensiones muy pequeñas. En cualquier caso, -repage no debería molestar.

El cómputo usa aritmética de enteros ya que bash soporta eso solamente. Con zsh las expresiones pueden ser simplificadas – ej. $((i*8.27))x$((i*11.69)).

 

 

unix.stackexchange.com

Publicado en General, Miniguías

Reparar discos duros con sectores defectuosos Ubuntu

Recientemente me encontré que un ubuntu 12,04 que me reportaba un problema de sectores de mi disco. Podemos hacer una reparación de la siguiente forma, si el disco que queremos reparar es el que contiene el sistema operativo deberemos utilizar un live-cd para poder realizar la reparación, ya que necesitamos que el disco no esté montado, si es otro el caso podemos usar el siguiente comando en la consola.

$ sudo badblocks -s -v -n -f /dev/sda

Donde /dev/sda será el dispositivo que intentaremos reparar, para ver cual es el nuestro podemos utilizar el comando fdisk -l y comprobarlo. Ahora os explico en que consisten los argumentos utilizados.

-s muestra el proceso de la operación utilizando porcentajes.
-v nos indica el modo de escritura utilizado.
-n utiliza el modo no destructivo para recuperar sectores defectuosos e intentará recuperar la información.
-f fuerza la lectura/escritura en los dispositivos montados, esta opción es muy peligrosa, es recomendable no utilizarla. Únicamente sería segura utilizarla cuando tenemos el fichero /etc/mtab dañado y estamos seguros que el dispositivo está desmontado.
Fuente: Reparar discos duros con sectores defectuosos con Ubuntu 12.04

Publicado en General

Habilitar boot linux en sistemas EFI

Esto es un artículo interesante para poder hacer arrancar nuestros sistemas linux en computadoras que poseen el nuevo sistema EFI
lignux

Publicado en General

Como instalar o actualizar wordpress plugins sin proporcionar acceso ftp?

Hace ya un tiempo que tenemos instalado en nuestra oficina WordPress para algunos sitios. Nuestro versionado estaba con una versión menos, entonces mi buen amigo daniel me informa que ya esta disponibles la versión 3.6.
Desde hace ya un tiempo que no me funcionaba el proceso de actualización automática del WordPress, por tal motivo el proceso de actualización lo hacíamos de forma manual.
Pero al ingresar al administrador recibo la grata sorpresa que nuevamente el actualizador automático funcionaba, tanto para el núcleo de la aplicación como también para los plugins, me mostraba cuales eran los plugins que me faltaban actualizar, muy contento y sin dudar le digo que me actualice todo, pero…… me encuentro que me pide la información de conexión ftp de mi servidor, hasta ahí todo bien, el problema es que no tengo servidor FTP instalado, por ende no funcionaba la actualización automática.
Entonces comencé a buscar con el señor San google de como actualizar WordPress sin que me pida los datos de conexión ftp.
Después de un buen rato dando vueltas por la web encontré a lo que a mi parecer una solución sencilla, es agregando la siguiente línea que muestro abajo en el en el archivos wp-config.php
define(‘FS_METHOD’, ‘direct’);

Según lo que leí el método de conexión también pude ser definir el método de conexión como ‘direct’ ‘ssh’, ‘ftpext’ or ‘ftpsockets’ . Tenga en cuenta que si se define como ‘directo’ pero su usuario de la web (el nombre de usuario bajo el cual se ejecuta el servidor de webs) no tienen permisos de escritura correcta, podrá recibir un error.

Con esto pude actualizar, todo el WordPress, como también todos los plugins sin ningún problema, en lo personal me fue muy útil esta solución y le dejo para si alguien quizás le pueda servir tanto como a mi

Publicado en General

Atajos de teclado en la consola

Los que trabajamos en la consola de linux siempre es bueno saber cuales son la los atajos en el uso del teclado

http://conociendolinux.wordpress.com/

Ctrl-a Ir al principio de la linea
Ctrl-e Ir al final de la linea.
Ctrl-b Retroceder un caracter.
Alt-b Retroceder una palabra
Ctrl-f Avanzar un caracter
Alt-f Avanzar una palabra.
Alt-] x Avanzar hasta la siguiente ocurrencia del caracter x.
Alt-Ctrl-] x Retroceder hasta la anterior ocurrencia del caracter x.
Ctrl-u Borrar desde el cursor hasta el principio de la linea
Ctrl-k Borrar desde el cursor hasta el final del linea
Ctrl-w Borrar desde el cursor hasta el principio de la palabra
Ctrl-Shift-V Pega el texto del portapapeles
Ctrl-Shift-C Copia el texto del portapapeles
Ctrl-l borra la pantalla
Publicado en General

Cómo saber la versión de Ubuntu/Debian instalada

Bueno despues de mucho tiempo sin aportar nada he aquí nuevamente tratando de retomar en colocar unas líneas y que sea de alguna utilidad para comunidad. Ahora bien el tema propuesto es que varias veces tuve que necesitar saber que versión de linux tengo instalada en mi pc por supuesto desde la consola no de forma gráfica. Aunque muchos crean que puede ser una tonteria pero realmente no sabía o no me acordaba de como hacerlo, así que por supuesto como siempre lo que hice fue preguntarle a señor google y me contesto en esta wiki. Asi que en caso que tengan la misma duda que tuve le dejo aquí abajo la solución

Podemos ejecutar un sencillo comando para averiguar que versión de nuestro sistema operativo:

lsb_release -a

Otro comando alternativo para obtener la misma información es:

cat /proc/version

Esta instrucción funciona en Ubuntu, para Debian tenemos que usar una variante muy similar:

cat /etc/debian_version

OsluviWiki

Publicado en General

Instalacion AdobeFlashPlayer 64bits

Los otros días tuve un problema en la pc de una compañera de trabajo que trataba de ver videos de youtube con Firefox bajo un ubuntu 10.04 de 64 bits no lo podía lograr o mejor dicho no se reproducía el video. Me llamo para que tratara de solucionarle el problema; por supuesto nada es facil para el técnico de informática. Asi que me puse a buscar con el gran amigo google y encontre este fantástico script que te soluciona este problema.
Lo comparto para aquellos que tengan el mismo problema. Lo único que deben hacer es darle permisos de ejecución, correr el script en la consola por supuesto deben de antes tener cerrado el Firefox.

Publicado en General