programacion

¿Cómo instalar LAMP en Subsystem Ubuntu de Windows 10?

¿Has pensado en instalar LAMP en subsystem Ubuntu? Hace poco decidí instalar Windows 10, pero no podía dejar que mi servidor local no funcionara correctamente, ya que he tenido varios problemas con las ultimas herramientas que uso en mis sitios para la seguridad, he probado WAMP, AppServ y AMPS pero todos me lanza error en los archivos que tenía en Ubuntu y nunca me dio error.

Luego, recordé que hace unos años Windows implemento Subsytem de Ubuntu 18.04 y me puse a pensar, será que puedo trabajar con el mismo instalando LAMP como ya lo había hecho en «[Guia completa] Como instalar LAMP en Ubuntu 18.04, 18.10 y 19.04«, pero no funciona al 100%, sin otros comandos.

NOTA: No se recomienda para espacios de trabajo o de producción ya que este consume demasiados recursos que son tan necesarios y puede ocasionar muchos problemas, y puedes perder más tiempo tratando de corregirlo. Te recomendamos mejor mirar otras opciones o tener dual boot.

Esto es lo que te explicare el día de hoy.

LAMP en subsystem Ubuntu de Windows 10

LAMP hace referencia a un grupo de diferentes programas de código abierto que típicamente son instalados en conjunto, con el objetivo de habilitar a un servidor como prestador de los servicios de páginas web dinámicas. De hecho, este término es el acrónimo de:

  • Linux
  • Apache
  • MySQL
  • PHP.

En esta guía, instalaremos LAMP en Subsytem Ubuntu 18.04 con PHPMyAdmin.

Instalar el subsistema de Windows para Linux

Antes de instalar cualquier distribución de Linux para WSL, debe asegurarse de que la función opcional «Subsistema de Windows para Linux» esté habilitada:

– Abra PowerShell como administrador y ejecute:

$ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

– Reiniciamos la computadora para guardar los cambios.

– Ahora vamos a la Microsoft Store y buscamos Ubuntu

resource1 subsytem windows

Lo instalamos y después buscamos nuestra distro favorita, en este caso Ubuntu 18.04. Buscamos la Ubuntu en nuestro menú y nos abrirá la Consola.

resource2 subsytem windows

Instalación de LAMP

Antes de empezar con la instalación debemos tener actualizado el sistema para ello usamos la terminal e ingresamos el siguiente comando:

$ sudo apt update && sudo apt upgrade

Como éste es un comando sudo, estas operaciones son ejecutadas con los privilegios de superusuario. Te preguntará por la contraseña de tu cuenta regular para verificar tus intenciones.

Paso 1: Instalar Servidor HTTP Apache

El servidor web Apache es uno de los más populares en el mundo. Se encuentra muy bien documentado.

$ sudo apt install apache2 apache2-utils

apt te informará cuáles paquetes se instalarán y cuánto espacio en disco será requerido. Digita «Y» y después «Enter» para continuar, así, la instalación procederá.

Ahora debemos añadir 2 lineas al archivo /etc/apache2/apache2.conf:

$ sudo nano /etc/apache2/apache2.conf

Las añadimos al final:

Servername localhost
AcceptFilter http none

Reiniciamos Apache:

$ /etc/init.d/apache2 restart

Ajuste del cortafuegos para permitir el tráfico web

Para permitir el tráfico de entrada HTTP y HTTPS para este perfil, ingresamos el siguiente comando:

$ sudo ufw allow in "Apache Full"

Una vez que se complete la instalación, ingrese la dirección IP pública en su navegador 127.0.0.1 o localhost. Debería ver la página web predeterminada de Apache como se muestra a continuación:

resource3 subsytem windows

Si viste esta página, entonces tu servidor web se encuentra instalado correctamente y es accesible a través del cortafuegos.

Paso 2: Instalar MySQL

Ejecute el siguiente comando en la terminal para instalar MYSQL:

$ sudo apt install mysql-server

Aquí es donde tuvimos problemas en el post anterior y en este no es la excepción y es un poco más complicado, casí que no encuentro una solución ya que si ingresamos el código como en el anterior para iniciar sesión nos da un error en ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2). lo que debemos hacer es ejecutar los siguientes comandos.

$ sudo /etc/init.d/mysql start
$ sudo service mysql start

Ahora ya podemos iniciar sesión en MySql para establecer una contraseña:

$ sudo mysql -u root -p

Pedirá la contraseña del usuario root, dejamos en blanco y damos «ENTER» :o, ahora asignamos una contraseña al usuario root con el siguiente comando:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tu_contraseña';

NOTA: Cambiar lo que está dentro de las comillas simples » por tu contraseña, generalmente se usa la contraseña ‘root’ en un servidor local de pruebas pero si vas a usar un servidor de producción ingresa una contraseña segura.

Paso 3: Instalar PHP

Ahora, vamos a instalar PHP, cuya versión predeterminada es PHP 7, y otros módulos para implementaciones web usando el siguiente comando. Ingresamos la letra «S» para confirmar la descarga e instalación de PHP y sus complementos.

$ sudo apt-get install php libapache2-mod-php php-common php-mysql php-gd php-cli

En la mayoría de los casos, desearás modificar la forma mediante la cual Apache sirve archivos cuando un directorio es solicitado. En este momento, si un usuario solicita un directorio del servidor, Apache buscará, en primera instancia, un archivo llamado index.html. Nosotros queremos que el servidor web le dé prioridad a los archivos PHP sobre cualquier otro archivo. Para lo cual haremos que el Apache busque el archivo index.php en primer lugar.

Para lograrlo, digita el siguiente comando para abrir el archivo dir.conf en un editor de texto con privilegios de superusuario:

$ sudo nano /etc/apache2/mods-enabled/dir.conf

Debería verse semejante a esto:

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Y lo modificaremos, poniendo en primer lugar index.php después de la especificación DirectoryIndex, debería verse similar a:

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Cuando termines, graba y cierra el archivo presionando las teclas «Ctrl + X«. Confirma los cambios presionando «Y«, y a continuación pulsa la tecla «Enter» para verificar el lugar de grabación del archivo.

Una vez que PHP haya sido instalado, será posible probar la configuración de PHP creando una página simple info.php en la raíz del documento del servidor web, ejecutando el siguiente comando:

$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Cuando termines, graba y cierra el archivo.

Reiniciar Apache

$ /etc/init.d/apache2 start

Ahora ya puedes probar si tu servidor web se encuentra habilitado para desplegar correctamente contenido PHP. Para hacerlo, visita una página web específica en tu navegador, necesitarás tu dirección pública de nuevo.

La dirección que deberás visitar es:

http://your_server_ip/info.php || http://localhost/info.php || http://127.0.0.1/info.php

La página que deberías estar viendo debe ser similar la siguiente:

resource4 subsytem windows

Esta página provee información básica sobre tu servidor, recogida desde la perspectiva de PHP. Es útil cuando necesites hacer algún tipo de seguimiento o para verificar que la configuración deseada ha sido aplicada de manera correcta.

Si pudiste ver esta página en tu navegador, tu PHP está trabajando según lo esperado.

Ahora para poder tener acceso a los archivos de LocalHost para nuestros proyectos debemos hacer un enlace simbólico de carpetas entre Windows y Subsystem Ubuntu, esto ya lo habíamos visto en el anterior articulo para PHPMyAdmin, el de PHPMyAdmin lo haremos después.

Lo que tenemos que hacer es eliminar la carpeta principal de HTML, ubicada en /var/www/, esto lo hacemos con el siguiente comando:

$ sudo rm -r /var/www/html/

Una vez hecho esto debemos crear una carpeta llamada «HTML», en el «C:», lo realizamos con el siguiente comando:

$ sudo mkdir /mnt/c/html/

Y ahora creamos el enlace simbolico para nuestra carpeta:

$ sudo ln -s /mnt/c/html /var/www/

Paso 4: Instalar PHPmyAdmin

Ahora, vamos a instalar phpMyAdmin con el fin de administrar bases de datos MySQL / MariaDB desde un navegador web, para ello vamos a ejecutar el siguiente comando:

$ sudo apt install phpmyadmin

Importante: Durante la instalación preguntará para qué servidor web configurar, elegir apache2 con «Espacio» y continuar (para navegar entre las opciones usar la tecla «TAB«, para continuar solo da «ENTER«).

resource5 subsytem windows

Ahora nos preguntará si queremos configurar la base de datos para phpMyAdmin con dbconfig-common y contestamos que Sí.

resource6 subsytem windows

En el siguiente paso se nos pregunta por la contraseña del usuario root de MySQL. Esta contraseña ya la configuramos anteriormente.

Al final creamos un enlace simbólico de la carpeta de phpmyadmin para poder acceder en el mismo, esto lo hacemos en la siguiente ruta /var/www/html:

$ sudo ln -s /usr/share/phpmyadmin /var/www/html

Entonces podemos ingresar a phpmyadmin desde la siguiente ruta en el navegador: http://localhost/phpmyadmin el usuario es «root» y la contraseña es la que se configuró anteriormente.

resource7 subsytem windows

Ahora, necesitamos activar el archivo .htaccess, para poder configurar nuestro sitio, para activarlo vamos a ejecutar el siguiente comando, seguido con reiniciar el apache:

$ a2enmod rewrite
$ sudo systemctl restart apache2

Para algunos programador, que utilizan los Short Codes de php <? y ?>, estos vienen desactivados por defecto para activarlos hay que editar nuestro archivo php.ini,

La ubicación la encontramos en el info.php que creamos anteriormente.

resource8 subsytem windows

Para editarlo utilizamos el siguiente comando:

$ sudo nano /etc/php/7.2/apache2/php.ini

Buscamos el la siguiente linea:

short_open_tag=Off

Y la cambiamos por:

short_open_tag=On

O esta puede estar comentada con un «;«, simplemente lo eliminanos

;short_open_tag = On

Listo, reiniciar apache:

$ sudo systemctl restart apache2

¡Genial! Ya tenemos un servidor funcional.