PHP 7.4 has been published on 28 Nov 2019.
To update the active version of PHP to this one in a Debian system, you can follow the next steps.
Information technologies. Per aspera ad astra
PHP 7.4 has been published on 28 Nov 2019.
To update the active version of PHP to this one in a Debian system, you can follow the next steps.
Executing in a Debian 9 an:
$ apt update
I get this error:
En un servidor que tengo con Debian 8 (esto mismo es aplicable a Debian 9) necesito tener PHP 7.0 y PHP 7.3 para poder actualizar las instalaciones que están con PHP 7.0 sin tener interrumpido el servicio.
Debian 9 allows installing PHP 7.0 using apt, as I explained in this link (in Spanish).
In this post, I will go to explain how to install PHP 7.3, whose publication date (GA: General Availability) is December 6, 2018.
Debian 9 permite instalar mediante apt PHP 7.0, tal y como explico en este enlace.
En este post voy a explicar cómo instalar la versión 7.3 de PHP, cuya fecha de publicación (GA: General Availability) es el 6 de diciembre del 2018.
Debian 9 allows installing PHP 7.0 using apt, as I explained in this link (in Spanish).
The next version of Laravel, the 5.6, has as a requirement to have a PHP version equal to or higher than 7.1.3, so I will explain how to install the latest stable version, 7.2.
En este post voy a explicar cómo sincronizar los archivos de dos servidores remotos (s1.example.com y s2.example.com) usando una conexión SSH.
Una buena alternativa para sincronizar dos servidores es Lsyncd (Live Syncing Daemon), pero como en este caso no necesito que la sincronización sea en tiempo real, lo voy a hacer mediante rsync (a través de SSH), ejecutando el comando cada hora mediante el cron del usuario.
En ambos servidores está instalado Debian 9, pero la operativa es muy similar o idéntica en el resto de distribuciones Linux.
Necesito tener instalado el siguiente software:
Lo primero que voy a hacer es configurar las claves para que un usuario de s1.example.com (u1) pueda acceder a s2.example.com (u2).
# – indica que el comando que viene a continuación tiene que ser ejecutado con permisos de root directamente con el usuario root o mediante el comando sudo.
$ – indica que el comando que viene a continuación puede ser ejecutado por un usuario normal sin privilegios de administración.
Ejecuto, con el usuario u1 en el servidor s1.example.com, el siguiente comando para crear las claves de acceso a s2.example.com.
u1@s1.example.com:~$ ssh-keygen -t rsa -b 4096 -C "Clave de acceso para u1 de s1.example.com a u2 en s2.example.com" -f ~/.ssh/u1s1u2s2 -q -N ""
Los parámetros del comando indican:
Lo siguiente es copiar la clave pública al segundo servidor (s2.example.com), para poder acceder usando el usuario u2
u1@s1.example.com:~$ ssh-copy-id -i ~/.ssh/u1s1u2s2.pub u2@s2.example.com The authenticity of host 's1.example.com (1.2.3.4)' can't be established. ECDSA key fingerprint is SHA256:+Drsm91Tzl3wsuY1mCkBsDWd3WeJ1KloIGjUgPmgcf8. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/u1/.ssh/u1s1u2s2.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys u2@s2.example.com's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'u2@s2.example.com'" and check to make sure that only the key(s) you wanted were added.
Los parámetros del comando indican:
Si me conecto al servidor s2.example.com (usuario u2) por SSH en otra consola nueva y veo el contenido de su directorio “.ssh”
u2@s2.example.com:~$ ls .ssh/ authorized_keys
aparece un archivo de claves autorizadas “authorized_keys”, donde se almacenan las claves públicas que tienen acceso a este usuario de este servidor
u2@s2.example.com:~$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDWm0gRSxFyyZKDLjvc4z10iQ87rj3TlIVo9+U1D1oHbPNjiCMBpF6xOQCqKAi+f5U2tTcZ23wDh1CVnTkCFC/LWsrMiv5UVaDIXVv/1NLnRz/n1REzSL+PemdIjE0R8Ll6DUae40brCmTn1yrDZnF9qOrRm6VWKr3BQ3nvV59P3O+zWUYLrNH6vs2nIlY7Xj9ss0I9BDVwdPFv8q0+mijyeld6VYLnnJ8clDaTBZmVEwWAADfD6a0ODPf61FItON0PCcnljU408aym6U2605cYuAfu70g5gqvis1gZadc9BbUw+6E748APmSN0oVHOHU2WSyX4UQNcaZzuaZxslKh/g7isWMV1tCN0MLfp13Kgjsa84xZEhT6LG3/+iTG9gdb1qxQ4tBtx0O7TNYvQH/U4SU0lCz6PNKjVVgXBNfBz4jxvMiVqrsRzwy5QnQnfwCWEm3whqqCuOL7meyMGY77IWkguqcGrn4Mj9n/m/bQ0dY1XoLKPbCgVBPEeMaQ96hoKNy13eExhksn/K6VH2qXRiChMyuj198e5l9KFqYrf+AY+SF8MGfHNjGJSPkQYdncqppHiN7491GmeUkFl1E8y5sZPCxCKGivLBzpR/BNnKfShSN6+9f43Wx/MydgH1Zmhzi5z3H1oLAVsGG/FjxGEYm33/OMy8payOv29Azy3lw== Clave de acceso para u1 de s1.example.com a u2 en s2.example.com
Desde el servidor s1.example.com pruebo a acceder al s2.example.com mediante SSH usando la clave privada
u1@s1.example.com:~$ ssh -i ~/.ssh/u1s1u2s2 u2@s2.example.com Linux s2.example.com 4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04) x86_64 Debian GNU/Linux 9 (stretch) Linux s2.example.com 4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04) x86_64 GNU/Linux u2@s2.example.com:~$
Los parámetros del comando indican:
A continuación pruebo el comando de sincronización mediante rsync
u1@s1.example.com:~$ rsync -arz --no-o --no-g --progress --delete --rsh="ssh -i /home/u1/.ssh/u1s1u2s2" /home/u1/backup/ u2@s2.example.com:"/home/u2/backup" sending incremental file list
Los parámetros del comando rsync indican:
Para probarlo creo un directorio y un par de ficheros en s1.example.com
u1@s1.example.com:~$ cd ~/backup u1@s1.example.com:~/backup$ touch archivo1.txt u1@s1.example.com:~/backup$ mkdir directorio1 u1@s1.example.com:~/backup$ cd directorio1 u1@s1.example.com:~/backup/directorio1$ touch archivo2.txt
Vuelvo a ejecutar el comando y compruebo en s2.example.com que se ha sincronizado correctamente.
u1@s1.example.com:~$ rsync -arz --no-o --no-g --progress --delete --rsh="ssh -i /home/u1/.ssh/u1s1u2s2" /home/u1/backup/ u2@s2.example.com:"/home/u2/backup" sending incremental file list sending incremental file list ./ archivo1.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4) directorio1/ directorio1/archivo2.txt 0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=0/4)
Borro un fichero, añado otro
u1@s1.example.com:~/backup/directorio1$ rm archivo2.txt u1@s1.example.com:~/backup/directorio1$ touch archivo3.txt
y vuelvo a ejecutar la sincronización para ver si en el equipo s2.example.com se han añadido y se han borrado los archivos de forma adecuada.
u1@s1.example.com:~$ rsync -arz --no-o --no-g --progress --delete --rsh="ssh -i /home/u1/.ssh/u1s1u2s2" /home/u1/backup/ u2@s2.example.com:"/home/u2/backup" sending incremental file list deleting directorio1/archivo2.txt directorio1/ directorio1/archivo3.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/4)
Lo siguiente es programar el rsync en el cron del usuario cada hora sin la opción “progress”, ya que no se ejecuta de forma interactiva en la consola, sino en background.
u1@s1.example.com:~$ crontab -e
Y añado la línea
00 * * * * rsync -arz --no-o --no-g --progress --delete --rsh="ssh -i /home/u1/.ssh/u1s1u2s2" u2@s2.example.com:"/home/u2/backup" /home/u1/backup
A partir de ahora, cada hora se sincronizará el contenido del directorio origen y del destino, borrando en el destino los archivos inexistentes en el origen.
Más información:
Debian 9 permite instalar mediante apt PHP 7.0, tal y como explico en este enlace.
La próxima versión de Laravel, la 5.6, tiene como requisito disponer de una versión de PHP igual o superior a la 7.1.3, por lo que voy a explicar cómo instalar la última versión estable, la 7.2.