Configurar WSL para entorno de desarrollo web

En este guiá te ayudare a configurar tu WSL con Ubuntu 20.04 como un entorno de desarrollador Web, que contenga las siguientes características

  • OhmyZsh - Se ve bonito UwU
  • Servidor Apache - Servidor Web
  • Servidor MariaDB - Servidor de Base de datos
  • PhpMyAdmin - Gestor de Base de datos
  • Composer - Administrador de paquetes PHP
  • Instalador Laravel - Framework PHP
  • Configurar atajos para
    1. Log de consultas MYSQL - Permite ver las consultas
    2. Log de errores Apache - Permite ver los errores
    3. Encender y apagar servidores Apache y MariaDB

Requisitos

  1. Windows 10
  2. WSL 2
  3. Ubuntu 20.04
  4. Windows Terminal - (Opcional)

Instalar OhMyZsh

> sudo apt install zsh

> sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Instalar PHP

¡Primero actualiza!


> sudo apt update && sudo apt upgrade


Instalar PHP


> sudo apt-get install -y php php-tcpdf php-cgi php-pear php-mbstring libapache2-mod-php php-common php-phpseclib php-mysql zip unzip php-zip php-sqlite3 sqlite

Instalar MariaDB

> sudo apt install mariadb-server

Inicia el servidor

> sudo service mysql start

Iniciar el aseguramiento del servidor

> sudo mysql_secure_installation

Crear usuario con todos los permisos

> sudo mysql -u root

CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña';

GRANT ALL PRIVILEGES ON * . * TO 'usuario'@'localhost';

FLUSH PRIVILEGES;

EXIT;

Activar Log de Consultas

> sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

En la sección [server] (generalmente la primera) pega las siguientes lineas, guarda con Ctrl + O y sal del editor con Ctrl + X

general_log_file = /var/log/mysql/mysql.log
general_log = 1

Instalar Servidor Web Apache

> sudo apt-get -y install apache2

Configurar permisos de escritura en /var/www/html

Este comando es para añadir tu usuario al grupo www-data, cambia el texto tu_usuario por el usuario que deseas tenga permisos

> sudo usermod -a -G www-data tu_usuario

Este comando le da permisos de escritura al grupo

> sudo chmod -R g+w /var/www/html

En caso de que, aun no te permita escribir dentro del directorio utiliza este comando y repite los dos anteriores

> sudo chown -R www-data:www-data /var/www/html

Activar módulo rewrite

> sudo a2enmod rewrite

> sudo nano /etc/apache2/apache2.conf

En el apartado Directory /var/www cambiar None por All

Guardar con Ctrl + O y salir con Ctrl + X

Reiniciar apache 2 con

sudo service apache2 restart

Instalar phpMyAdmin

Dirígete al directorio Home de Linux

> cd

> wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz

> tar xvf phpMyAdmin-5.0.4-all-languages.tar.gz

> sudo mv phpMyAdmin-*/ /usr/share/phpmyadmin

> sudo mkdir -p /var/lib/phpmyadmin/tmp

> sudo chown -R www-data:www-data /var/lib/phpmyadmin

> sudo mkdir /etc/phpmyadmin/

> sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

> sudo nano /usr/share/phpmyadmin/config.inc.php

Pega las siguientes lineas, guarda con Ctrl + O y sal del editor con Ctrl + X

$cfg['blowfish_secret'] = 'H2OxcGXxflSd8JwrwVlh6KW6s2rER63i';

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Configurar Servidor Apache para recocer a phpMyAdmin

> sudo nano /etc/apache2/conf-enabled/phpmyadmin.conf

Pega lo siguiente

                
                  
                  
                  
                  Alias /phpmyadmin /usr/share/phpmyadmin
                  
                  <Directory /usr/share/phpmyadmin>
                    Options SymLinksIfOwnerMatch
                    DirectoryIndex index.php
                    
                    <IfModule mod_php5.c>
                      <IfModule mod_mime.c>
                        AddType application/x-httpd-php .php
                      </IfModule>
                      <FilesMatch ".+\.php$">
                        SetHandler application/x-httpd-php
                      </FilesMatch>
                      
                      php_value include_path .
                      php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                      php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
                      php_admin_value mbstring.func_overload 0
                    </IfModule>
                    <IfModule mod_php.c>
                      <IfModule mod_mime.c>
                        AddType application/x-httpd-php .php
                      </IfModule>
                      <FilesMatch ".+\.php$">
                        SetHandler application/x-httpd-php
                      </FilesMatch>
                      
                      php_value include_path .
                      php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                      php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
                      php_admin_value mbstring.func_overload 0
                    </IfModule>
                    
                  </Directory>
                  
                  # Authorize for setup
                  <Directory /usr/share/phpmyadmin/setup>
                    <IfModule mod_authz_core.c>
                      <IfModule mod_authn_file.c>
                        AuthType Basic
                        AuthName "phpMyAdmin Setup"
                        AuthUserFile /etc/phpmyadmin/htpasswd.setup
                      </IfModule>
                      Require valid-user
                    </IfModule>
                  </Directory>
                  
                  # Disallow web access to directories that don't need it
                  <Directory /usr/share/phpmyadmin/templates>
                    Require all denied
                  </Directory>
                  <Directory /usr/share/phpmyadmin/libraries>
                    Require all denied
                  </Directory>
                  <Directory /usr/share/phpmyadmin/setup/lib>
                    Require all denied
                  </Directory>
                  
                
                
              

Reinicia el Servidor Apache

> sudo service apache2 restart

Instalar Composer

> php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

> php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

> sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Configurar instalador Laravel de Composer

> composer global require laravel/installer

Si usas Bash > nano $HOME/.bashrc

Si usas OhMyZsh > nano $HOME/.zshrc

Pega lo siguiente

export PATH="$PATH:$HOME/.config/composer/vendor/bin"

Actualiza con

Sí usas Bash > source $HOME/.bashrc

Sí usas OhMyZsh > source $HOME/.zshrc

Instalar NodeJS 15

> curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash -

> sudo apt-get install -y nodejs

Configurar alias

Si usas Bash > nano $HOME/.bashrc

Si usas OhMyZsh > nano $HOME/.zshrc

Pega las siguientes lineas, guarda con Ctrl + O y sal del editor con Ctrl + X

alias lq='tail -f /var/log/mysql/mysql.log'

alias le='tail -f /var/log/apache2/error.log'

alias startlamp='sudo service apache2 start && sudo service mysql start'

alias stoplamp='sudo service apache2 stop && sudo service mysql stop'

Actualiza con

Sí usas Bash > source $HOME/.bashrc

Sí usas OhMyZsh > source $HOME/.zshrc

Info:
lq permite ver las consultas del log de Mysql
le permite ver los errores del log del Servidor Apache
startlamp inicia los servicios Apache y MariaDB
stoplamp apaga los servicios Apache y MariaDB

Configurar Windows Terminal

Abre Windows Terminal

Selecciona configuración, dirígete al apartado de perfiles y pega lo siguiente

"startingDirectory" : "//wsl$/Ubuntu-20.04/home/tu_usuario",

"acrylicOpacity": 0.5,

"useAcrylic": true

Esta configuración, hará que al abrir la Windows Terminal, esta inicie con el directorio home de tu usuario en Linux y no en el directorio de Windows como viene predeterminado, ademas activara los efectos de transparencia de la terminal en un 50%

Configurar idioma Español

Instala el paquete de idiomas Español

> sudo apt install language-pack-es language-pack-es-base

En mi caso uso LANG=es_MX.UTF-8, siendo es_MX por Español México, cambia estos datos según tu País

> sudo update-locale LANG=es_MX.UTF-8

Lista de abreviaturas disponibles del paquete Español

  • es_AR
  • es_BO
  • es_CL
  • es_CO
  • es_CR
  • es_CU
  • es_DO
  • es_EC
  • es_ES
  • es_GT
  • es_HN
  • es_MX
  • es_NI
  • es_PA
  • es_PE
  • es_PR
  • es_PY
  • es_SV
  • es_US
  • es_UY
  • es_VE