Como instalar LAMP en Subsystem Ubuntu de Windows 10

Hola, 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, 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.

Introducción



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 con PHPMyAdmin en un Subsytem Ubuntu 18.04.

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:

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


- Reiniciamos la computadora para guardar los cambios.

- Ahora vamos a la Microsoft Store y buscamos Ubuntu
Imagen Externa

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.
Imagen Externa

Instalación LAMP



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

shell
$ 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.

shell
$ 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:

shell
$ sudo nano /etc/apache2/apache2.conf


Las añadimos al final

APACHE
Servername localhost
AcceptFilter http none


Reiniciar Apache

shell
$ /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:


shell
$ 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:

Imagen Externa

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:

shell
$ 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.

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


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

shell
$ 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:

SQL
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.

shell
$ 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:

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


Debería verse semejante a esto:

APACHE
<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:

APACHE
<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:

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


Cuando termines, graba y cierra el archivo.

Reiniciar Apache

shell
$ /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:

plaintext
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:

Imagen Externa

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:

shell
$ 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:

shell
$ sudo mkdir /mnt/c/html/


Y ahora creamos el enlace simbolico para nuestra carpeta:

shell
$ 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:

shell
$ 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").

Imagen Externa

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

Imagen Externa

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:

SHELL
$ 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.

Imagen Externa

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

SHELL
$ 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.
Imagen Externa

Para editarlo utilizamos el siguiente comando:
SHELL
$ sudo nano /etc/php/7.2/apache2/php.ini


Buscamos el la siguiente linea:
APACHE
short_open_tag=Off

Y la cambiamos por:
APACHE
short_open_tag=On

O esta puede estar comentada con un ";", simplemente lo eliminanos
APACHE
;short_open_tag = On

Listo, reiniciar apache:

shell
$ sudo systemctl restart apache2

!Genial¡


Ya tenemos nuestro servidor completamente funcional.

Fuentes:
Blog Qué Código
Microsoft Subsytem Linux
GitHub Microsoft WSL
Medium @ssharizal

Errores posibles:


Igual que antes tenemos unos errores a corregir

No activa correctamente .htaccess: Solución

Error en PHPMyAdmin en sql.lib.php: Solución

Error en PHPMyAdmin en Warning in ./libraries/plugin_interface.lib.php#532: Solución
Nota: Fijarse en el numero de linea, no siempre son iguales.
Edinson Tique ADMIN

Estudiante de Ingeniería en Sistemas de Información, pro-activo y amante a la tecnología.
Los ordenadores han estado mucho tiempo en mi vida, desde pequeño empece aprendiendo manejo y mantenimiento de computadores, cuando obtuve acceso al Internet siempre quise saber como funcionaba y que era una página web, así que me dedique a aprender todo lo que pueda de programación enfocada a la web, ese aprendizaje y lectura de documentación fueron mis juegos desde los 11 años, actualmente cuento con conocimientos en Electrónica y programación en Arduino, Servidores, PHP, JavaScript, CSS y HTML...

Pasarelas de pago para Colombia[Guia completa] Como instalar LAMP en Ubuntu 18.04, 18.10 y 19.04

Comentarios

tutorial