Notas de Laboratorio

  • CentOS 7.3: ¡necesito actualizar a PHP 7 y no viene en los repositorios por defecto! { Notas de Laboratorio }

    CentOSphp7upgradeSCL

    Problema:

    Tengo una instancia de CentOS 7, con el clásico Apache funcionando y por requerimientos de versiones necesito actualizarme a PHP 7...pero no lo veo en los repositorios.

    Solución utilizada:

    • Utilizando una consola (vuelvo y lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix), iniciamos sesión con permisos administrativos (también se puede usar sudo) y agregamos el repositorio SCL (Software Collections), que incluye versiones actualizadas, como la requerida de php: yum install centos-release-scl
    • Instalamos nuestro php: yum install rh-php70 y las dependencias que necesitemos, se pueden listar con yum list rh-php70\*, en específico se requiere como mínimo soporte para mysql (si se usa) y el manejador de procesos php (FPM-PHP), una instalación básica podría ser: 
      • rh-php70-php-fpm
      • rh-php70-php-mysqlnd
      • rh-php70-php-gd
      • rh-php70-php-pspell
      • rh-php70-php-soap
      • rh-php70-php-bcmath
    • Decirle a apache que use fpm, en /etc/httpd/conf.d/php.conf:

    ...

    <FilesMatch \.php$>

    # SetHandler application/x-httpd-php

    SetHandler "proxy:fcgi://127.0.0.1:9000"

    </FilesMatch>

    ...

    • Si se necesitan configuraciones adicionales: php.ini esta en /etc/opt/rh/rh-php70/php.ini ...para correr el servicio FPM como otro usuario que no sea apache (tal vez nginx), eso se configuraría en /etc/php-fpm.d/www.conf (no olvidar reiniciar servicios)
    • Iniciar el servicio fpm: service rh-php70-php-fpm start (para dejarlo como autoarranque: systemctl enable rh-php70-php-fpm). No olvidar reiniciar apache: service httpd restart.

     

  • Cómo incrementar los valores de timeout para PHP en Apache

    5Mayo2016Timeout

    Problema:

    • Se necesita incrementar la cantidad de tiempo que le toma una aplicación en PHP para ejecutarse, antes de que nuestro servidor decida detener el proceso (PHP session timeout). Si bien conviene por eficiencia tener este valor bajo, hay aplicaciones que por diseño necesitan valores más altos, o situaciones específicas que lo requieren (actualización de aplicativos, carga de datos).

    Solución utilizada:

    • Si no se recuerda o conoce el manejador de PHP que se está ejecutando (¿cómo usa la máquina usa PHP?...por medio de mod_php (Apache DSO, Dinamic Shared Object), suPHP, FastCGI, CGI o PHP-FPM), un pequeño script en la carpeta web del sitio (el nombre del script lo colocan ustedes, la ruta depende del servidor), con las siguientes líneas, nos puede confirmar la ruta del archivo principal php.ini (obviamente no se recomienda tenerlo activo en producción):
      • <?php
        phpinfo();
        ?>
    • Hay dos variables a modificar: max_input_time (tiempo máximo disponible para desplegar/analizar datos de entrada para el script PHP) y max_execution_time (tiempo total permitido de ejecución para el script de PHP). Ambas tienen asignado por defecto 60 segundos, este sería el valor a incrementar (en una actualización de Moodle (por ejemplo) fué necesario aumentar su valor a 120 segundos).
    • Si se utiliza PHP por medio de PHP-FPM, es posible aumentar este valor en la variable request_terminate_timeout del archivo de configuración de este servicio.
    • Para que los cambios se actualicen en el sistema, es necesario reiniciar servicios:
      • service httpd reload
      • service php5-fpm reload #en caso de usar php-fpm

    Imagen Original (CC Atribución): https://flic.kr/p/aVdo7v

    Fuentes Consultadas:

  • Cómo montar particiones LVM desde el modo de rescate (CentOS/Fedora) { Notas de Laboratorio }

    LVM (By Emanuel DussThis vector image was created with Inkscape, and then manually edited by Perhelion. - Own work, CC BY-SA 3.0 de, https://commons.wikimedia.org/w/index.php?curid=11624545)

    Original Image: Emanuel Duss vector image created with Inkscape and manually edited by Perhelion. Own work, CC BY-SA 3.0

    Simplemente cómo nota de laboratorio, porque ya me ha pasado varias veces (y necesito anotarlo en algún lado), en un equipo que usa fedora (también sirve para CentOS) y tiene usuarios creativos, de esos que lo apagan a patadas, dejo para el registro el proceso para montar un Volumen Lógico.

    Después de que el usuario deja el equipo en modo de solicitud de restauración (esa consola negra que pide una constraseña administrativa para escanear los discos y restaurar el sistema)...si se tiene la fortuna de recordar la clave de root, no se tiene claro cómo montar ese maldito y sensual volumen lógico que se hizo cool al momento de instalación (LVM es una nota, pero si se retoma un equipo que no se ha tocado en años, puede quedar uno perdido por unos momentos).

    El procedimiento en consola de recuperación es:

    Revisar los volúmenes lógicos de la máquina:

    lvm vgscan -v

    Activar los volúmenes lógicos:

    lvm vgchange -ay

    Listar los volúmenes lógicos disponibles:

    lvm lvs -all

    Montar el volúmen requerido:

    mount /dev/volgroup/logvol /mountpoint

    Con el volúmen detectado y siendo capaces de montarlo, ya se puede recuperar al menos la información.

    Si por algún motivo se imaginan que este procedimiento es mio...pueees nop, agradezco al amigo Jim Zimmerman por hacer la tarea de registrarlo en su sitio, al menos aquí lo tienen en español, aunque con los comandos eso es irrelevante, y reitero, es una nota personal para no andar buscando en google lo mismo, cada vez que se le hace el favor a mi vecina ( "favor" :P...cuando se hace al derecho, queda uno como el Neo del barrio obrero, la consola negra asusta y si se saben par cosillas se descresta jejeje! ).

  • Cómo realizar una copia de respaldo con rsync

    archivosCopia

    Problema/Necesidad:

    • Necesito crear una copia local de una carpeta remota en un servidor

    Solución utilizada:

    • el comando rsync permite sincronizar desde terminal archivos y directorios, de remoto a local y viceversa
    • si tengo una llave de acceso en mi $HOME/.ssh/key puedo usarla
    • rsync tiene muchas opciones, se escogen las siguientes:
      • ---progress: muestra el avance del proceso de sincronización
      • -a, equivalente a --archive, una copia recursiva que preserva todos los atributos posibles de los archivos
      • -v, equivalente a --verbose, ofrece información adicional del proceso de sincronización
      • -z, equivalente a --compress, permite comprimir los archivos para reducir la cantidad de datos transmitidos
      • -e, permite ejecutar un comando que soporta la comunicación, en este caso ssh, pude incluir llaves de acceso puertos, etc
    • Sintaxis general:
      • rsync --opciones ORIGEN DESTINO
    • Comando ejecutado:
      • sync --progress -avz -e "ssh -i /home/myuser/.ssh/key" user@ipOrDomain:/dir/dir/dir .
      • el "." final traduce directorio actual
    Imagen Original (CC Atribución): https://flic.kr/p/5ZrohQ
  • Debian 7: ¿remover LXDE e instalar MATE? { Notas de Laboratorio }

    mateDesktop

    Problema:

     
    Tengo una instancia de Debian 7 (wheezy, antigua versión estable), con el escritorio LXDE instalado, me gustaría instalar el escritorio MATE...
     

    Solución utilizada:

    1. se abre una consola (lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix)
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos para el entorno de escritorio mate: "apt-get install mate-desktop-environment mate-desktop-environment-core mate-desktop-environment-extras"
    4. los anteriores comandos resuelven las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, se termina la sesión y se puede usar el nuevo entorno de escritorio, es posible que sea necesario seleccionar el escritorio en la ventana de login del lightdm.

    Si algun@ quedó insatisfech@, abajo está la sección de comentarios...
  • Fedora 20: ¿Libre Office en español? { Notas de Laboratorio }

    libreOfficeEsp

    Problema:

     
    Tengo una instancia de Fedora 20 ligeramente virgen y mi Libre Office me sale en inglés...
     

    Solución utilizada:

    1. se abre la consola
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos con yum desde la consola: "yum install libreoffice-langpack-es hunspell hunspell-es"
    4. el anterior comando resolvera las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, al abrir de nuevo Libre Office nos saldrá en español y con corrección de ortografía...
    Si algun@ quedó insatisfech@, abajo está la sección de comentarios...

     
  • Generar un volcado (copia) de una base de datos en MySQL desde la terminal

    6Marzo2011Backup

    MySQL es uno de los motores de bases de datos más utilizados actualmente, principalmente por ser uno de los componentes del stack LAMP (Linux, Apache, MySQL, PHP).

    Necesidad:

    • Se requiere generar desde la terminal de linux una copia de respaldo de cierta base de datos, el objetivo es repetir este comando desde algún script de cron cuando sea requerido

    Solución utilizada:

    • El comando mysqldump es la herramienta buscada, recibe como parámetro el usuario de la base de datos, el nombre de la base de datos, el servidor al que nos conectamos.
    • Sintaxis:
      • mysqldump -p -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
    • El caracter de redirección de flujo ">", es una característica de bash que permite dirigir la salida de un comando a un archivo, en este caso el archivo sql requerido (si no existe dicho archivo se crea, y si existe lo sobreescribe. Si se usa doble ">>" agrega el contenido al final...útil para algun tipo de logen el sistema)
    • El comando anterior preguntará la contraseña, sin embargo puede incluirse directamente (aunque quedaría en texto plano y visible 😐...eso se puede mejorar...en otra entrada registraremos como hacerlo) junto al parámetro -p asi:
      • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
    • También se puede mejorar (de nuevo gracias a las bondades de bash) reemplazando el "nombre.sql" por un archivo con la fecha del momento de ejecución del comando, eso puede ser útil si se usa en un script en cron:
      • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre-$(date +"%F-%H:%M:%S").sql
    • Como siempre se pueden consultar opciones y características adicionales del comando con:
      • man mysqldump
    Imagen Original (CC Atribución): https://flic.kr/p/mUfqu4
  • Nómadas Digitales: Termux ...varias sesiones en una misma terminal { Notas de Laboratorio }

    termuxNewSession

    Termux es uno de los mejores emuladores de terminal para android, por si mismo se merecería una serie completa de publicaciones.

    Con las resoluciones de pantalla, prestaciones y conectividad de los smartphones actuales, realmente permite llevar una estación de trabajo en el bolsillo...bueno, al menos para quienes se sienten cómodos trabajando desde consola y desde luego atendiendo temas que no requieran gran sofisticación (los clásicos incendios...mover palancas para que la cosa siga andando).

    Es un proyecto estable, muy bien documentado, pero es normal que aparezcan detalles que...de primera mano no son evidentes. Lo reconozco, el manual se lee al final, después de perder minutos valiosos, literalmente con el incendio en la mano (eso sí: ¡se puede acabar el mundo, pero la música de la primera sesión debe continuar!).

    Problema:

    • ¿Cómo se tienen varias sesiones abiertas en la misma terminal?

    Solución utilizada:

    • ...arrastre la pantalla de izquierda a derecha y escoja "NEW SESSION" 🙃🙃🙃

    No me siento orgulloso al reconocerlo, pero esa característica estaba documentada y perdí varios minutos valiosos detectando su uso.

    Pensándolo bien, evidencia que la aplicación esta muy bien lograda, ya que el manual sólo se lee cuando las cosas no son evidentes (al menos para un newbie).

    Me recuerda una historia que alguna vez escuche por ahi...alguien, tal vez no muy amable, o mejor, con la calidez humana tipo IT Crowd, le hizo un comentario, a una madre entusiasmada por las capacidades de expresión digital de su pequeño cuando este jugaba con una tablet:

    Señora, no es que su hijo sea un genio, lo que pasa es que los ingenieros hicieron tan bien su trabajo que cualquier imbécil puede usarla como un maestro.

     ...no quiero saber que les respondió la señora, lo que sí se, es que no fué un comentario mal intencionado. Traduciendo desde lenguaje nerd a-social antiguo: me alegra mucho que tu hijo disfrute la tablet, los ingenieros de esa marca son unos genios, ustedes hicieron una buena compra, ¡mire cómo su hijo sin ser un doctor en ciencias de la computación hace cosas tan sorprendentes! 😁.

     Creo que seguiremos hablando de truquitos usando Termux (al menos para que no se me olviden 😎).

  • Reset Moodle Contraseña de Administración vía CLI

    17Junio2018resetAdminMoodleCLI

     

    Problema

    • Tengo una instalación de Moodle y no encuentro la clave de administración...la he olvidado 😵

    Solución Utilizada

    • Moodle tiene varias utilidades administrativas que funcionan desde la terminal linux de lado del servidor
    • accedemos a la instancia que aloja nuestro Moodle (...se recomienda NO olvidar también esas credenciales 😁)
    • nos dirijimos a la ruta de la carpeta específica donde se encuentra instalado Moodle (para sistemas CentOS generalmente un directorio bajo /var/www/html)
    • la raíz de archivos de Moodle incluye una carpeta llamada "admin" y dentro de ella otra "cli", entramos hasta esta última
    • allí encontramos varios scripts administrativos, entre ellos uno que nos permite reiniciar la clave de usuarios, lo ejecutamos desde la consola:
      • php reset_password.php
    • nos preguntará el usuario que queremos afectar y la nueva contraseña

    Imagen Original (CC Atribución): https://flic.kr/p/2EDZXp

  • Unir distintos archivos pdf en linux (terminal)

    Merge PDF Files

     

    Problema

    • Necesito unir varios archivos en formato PDF, no quiero usar la suite ofimática, quiero hacerlo de manera rápida, ojalá en modo consola

    Solución Utilizada

    • el paquete poppler-utils disponible en las principales distribuiciones de linux tiene varias utilidades para proceso por lotes de archivos tipo PDF
    • una vez instalado, el paquete mencionado incluye la herramienta pdfunite que necesitamos
    • abrimos la terminal de comandos, nos situamos en la carpeta que contiene nuestros archivos y ejecutamos:
      • pdfunite archivo1.pdf archivo2.pdf archivoN.pdf archivoDESTINO.pdf
    • el archivoDESTINO.pdf generado es la unión de los archivos anteriores archivo1.pdf+archivo2.pdf+archivoN.pdf
    • el proceso es rápido, susceptible de automatizar vía bash, por defecto no realiza ajustes de resolución de los archivos, con confianza se puede usar sin dañar la calidad de los mismos.

    Imagen Original (CC Atribución): https://flic.kr/p/e1wE5A