Archivos de Categoría: GNU/Linux @es

Añadiendo soporte para PHP 7.0 en Plesk

Lo primero que hay que hacer es actualizar Plesk a la version 12.5 (actualmente la 12.5.30). Para ello hay que ir a la sección Server y luego a “Plesk->Updates and Upgrades” y ahí a “Install or Upgrade Product”. Puede que te aparezcan ciertos avisos si es que has instalado módulos de otras partes que no sean de Plesk por lo que sería mejor desinstalarlos antes de hacer la actualización (a mí me sucedió mod_security). Como se puede ver yo ya me he actualizado a las versión 12.5.30 y por tanto no puedo mostrar la imagen exacta pero las opciones son las mismas.

upgrade_plesk_product

Una vez actualizado Plesk la magia, en sistemas Linux, se realiza con éste comando (ejecutado como root):

# plesk sbin autoinstaller --select-product-id plesk --select-release-current --install-component php7.0

El proceso completo de instalación de PHP 7.0 se puede ver aquí: http://pastebin.com/UjH9g4Ak

Lo bueno de todo ésto es que se pueden instalar diferentes versiones de PHP a la vez con tan solo cambiar el número de la versión, así que por ejemplo se puede instalar PHP 5.2 para un dominio en el que la app necesita una versión antigua de PHP:

# plesk sbin autoinstaller --select-product-id plesk --select-release-current --install-component php5.2

Ahora ya se puede seleccionar la versión específica de PHP que acabamos de instalar en los diferentes dominios en la opción “PHP Settings”. Así se ve antes:

php_before

Cambiado a la versión PHP 7.0:

php_70_change

Y después:

php_after

Ref: https://kb.odin.com/en/127701
https://kb.odin.com/en/125146

Eliminar viejas versiones del kernel linux en Ubuntu

A medida que pasa el tiempo se publican nuevas versiones del kernel. Después de instalar una nueva versión del kernel las antiguas no se eliminan, se guardan por si fuera necesario volver a usarlas si falla algo con la nueva versión.

linux-penguin-logo

Pero puedes acabar teniendo muchas versiones viejas que nunca más vas a utilizar. Para borrarlas lo primero es saber qué vesiones son:

$ dpkg -l | grep linux-image | grep -v extra | awk '{print $2}'
linux-image-3.16.0-30-generic
linux-image-3.16.0-31-generic
linux-image-3.16.0-34-generic
linux-image-3.16.0-37-generic
linux-image-3.16.0-43-generic
linux-image-generic-lts-utopic

Luego tan solo hay que desinstalarlas usando apt-get autoremove:

$ sudo apt-get autoremove linux-image-3.16.0-30-generic linux-image-3.16.0-31-generic linux-image-3.16.0-34-generic

Deberías dejar al menos las 2 últimas por si acaso algo falla con la última versión para que puedas arrancar el sistema sin problemas.

Ref: https://help.ubuntu.com/community/Lubuntu/Documentation/RemoveOldKernels

Opciones de vi-vim

Para cambiar las opciones de vi-vim se usa el comando set. Para ver las opciones actuales hay que ejecutar lo siguiente:

:set

Para ver todas las opciones disponibles:

:set all

Para dar un valor específico a una opción, por ejemplo ruler:

:set ruler

O la codificación del fichero:

:set fileencoding=utf-8

Así es como se ve si se activa ruler (mostrar alguna información del fichero y de la posición actual del cursor) y number (mostrar el número de línea a la izquierda):

vi-vim-options

Para establecer los valores por defecto editar ~/.vimrc:

set ruler
set number

Usar el fichero config de SSH para conectarse a servidores fácilmente mediante alias

No tengo muy buena memoria y siempre tengo problemas recordando los nombres de mis servidores al conectarme a ellos mediante SSH. Normalmente usaba esta “solución”:

$ history | grep ssh

Sip… no muy buena la verdad. Un amigo (síguele, aprenderás muchas cosas!) me dijo que podía usar Control+Shift+R en el terminal y de repente fue como “¡Guau! ¡Esto es buenísimo!”. Después de pulsar la combinación de teclas puedes empezar a escribir un comando y entonces obtienes comandos anteriores que contienen ese text, por lo que con empezar a escribir “ssh” me aparecian los comandos de conexión a los servidores. ¡Parece magia!

reverse-i-search

Pero hoy he encontrado otra forma que implica usar el fichero ~/.ssh/config. El primer paso es crear ese fichero en el lugar adecuado y, sobre todo, darle los permisos adecuandos:

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config

Ahora supongamos que nos solemos conectar a un servidor llamado vps1.hostingsolution.com con un usuario llamado myuser. Añadimos esto a ~/.ssh/config:

Host vps1
  HostName vps1.hostingsolution.com
  User myuser

Y ahora viene la parte buena: ya podemos conectarnos a ese servidor con solo ejecutar esto:

$ ssh vps1

Y ya está. Por supuesto puedes añadirle muchas más configuraciónes:

config

Y además si hemos configurado las claves público/privadas con el servidor ni siquiera tenemos que poner una contraseña.

Este fichero es además muy útil para otra cosas. Por ejemplo podemos hacer que las conexiones SSH sean más rápidas si configuramos ControlMaster porque permite habilitar la compartición de múltiples sesiones a través de una misma conexión de red.

Host *
  ControlMaster auto
  ControlPath ~/.ssh/ssh_mux_%h_%p_%r

Si te aparece el siguiente error al usar esta opción es muy probable que se deba a que la ruta configurada en ControlPath no exista o esté protegida contra escritura:

muxserver_listen bind(): No such file or directory

Ref: http://mattryall.net/blog/2008/06/ssh-favourite-hosts
https://twitter.com/nixcraft/status/570208662368575488

Permitir servir ficheros fuera de /var/www en Apache2

Estoy usando tanto Ubuntu como Mac OS X en mi ordenador. Quería poner una partición compartida en la que pondría todo lo susceptible de estar duplicado en ambos sistemas: DropBox, descargas, música, etc. Las páginas que estoy desarrollando también iban ahí pero estaba obteniendo todo el rato errores 403. Cualquier cosa fuera de /var/www no funcionaba. Al final me dí cuenta de que en /etc/apache2/apache2.conf hay una configuración con Directory que deniega el acceso a cuaquier fichero fuera de /var/www y /usr/share:

<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Para solucionar esto tan sólo hay que quitar el primer bloque Directory o mejor aún añadir otro bloque con Require all granted apuntando a tu ruta específica:

<Directory /home/shared/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

apache_logo