https://tecadmin.net/install-php5-on-ubuntu/

Instalación Apache

Sudo apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php

Instalación de versiones de PHP

5.6
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6
7.0
sudo apt-get install -y php7.0
7.1
sudo apt-get install -y php7.1
7.2
sudo apt-get install -y php7.2
apt-get -y php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap phpmyadmin php7.2-cli php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php7,2-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap php7.2-xml php7.2-mcrypt 

Cambio de versión de PHP

Ejemplo:

From PHP 5.6 => PHP 7.2
Apache:
sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart
CLI:
sudo update-alternatives --set php /usr/bin/php7.2

From PHP 7.1 ⇒ PHP 7.0

Apache:
sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart
CLI:
sudo update-alternatives --set php /usr/bin/php7.0

Configuraciones de Apache:

Guardamos los ficheros de configuración en:

/etc/apache2/sites-available 

Las configuraciones para http y https pueden ir en el mismo fichero. En caso contrario tendremos que habilitar ambos ficheros. Para habilitar los ficheros, una vez puestos los archivos de configuración, deberemos hacer

a2ensite proyecto.conf
a2ensite proyecto-ssl.conf

Posteriormente arrancamos apache con todos los sites que hayamos habilitado:

sudo /home/usuario/arranque.sh

Configuración le fichero hosts

Añadimos una línea por cada sitio (ejemplo en el mio)

127.0.0.1 sk.local 127.0.0.1 loiola.local 127.0.0.1 microloiola.local  

PHP en modo módulo

HTTP (proyecto.conf)

<VirtualHost *:80>
      ServerName sk.local
      ServerAdmin webmaster@merkatu.com
      DocumentRoot  /mnt/c/work/projects/sk/public
    <Directory /mnt/c/work/projects/sk/public>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

HTTPS (proyecto-ssl.conf)

<VirtualHost *:443>
      ServerName sk.local
      ServerAlias sk.local
      DocumentRoot /mnt/c/work/projects/sk/public
      DirectoryIndex index.html index.php
      <Directory /mnt/c/work/projects/sk/public>
              AllowOverride All
              Options FollowSymLinks
              Require all granted
      </Directory>
              ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
      SSLEngine on
      SSLCertificateFile      /mnt/c/work/projects/certs/server.crt
      SSLCertificateKeyFile /mnt/c/work/projects/certs/server.key
</VirtualHost>

Instalación de node en WSL

Instalación de Docker en WSL

Requiere un paso previo para instalar Docker for Desktop en Windows

https://medium.com/@callback.insanity/using-docker-with-windows-subsystem-for-linux-wsl-on-windows-10-d2deacad491f

¡¡¡ATENCION!!!!

Desde abril de 2020, los cambios realizados en /etc/wsl.conf no son automáticos, por lo que es necesario parar la consola de WSL y lanzarla de nuevo para que se tengan en cuenta.

Para ello primero miramos le nombre de nuestra distribución:

wsl.exe --list

Distribuciones del subsistema de Windows para Linux:
Ubuntu-18.04 (predet.)

Posteriomente la cerramos:

wsl.exe --terminate Ubuntu-18.04