DestacadasDEVOPS

INSTALA UNA PILA LAMP EN UBUNTU 20.04

Introducción

LAMP (Linux, Apache, MySQL y PHP) es un conjunto de software de código libre que puede ser instalado en conjunto para habilitar un servidor para alojamiento de sitios y aplicaciones web dinámicas.

Requisitos

  • 1 Instalación de Ubuntu 20.04
  • Ejecutar comandos con sudo

Paso 1: Instalar Apache 2

Ejecutamos el comando sudo apt update

sudo apt update
sudo apt install apache2

Una vez instalado hay que verificar que todo este correcto con el firewall UFW, así que lo primero sería verificar si esta activo el firewall con

sudo ufw status

Si te aparece como inactivo lo puedes activar con

sudo ufw enable

Verificamos nuevamente con

sudo ufw status

Y esta vez debería decir que esta activo. Durante la instalación, Apache se registra con UFW para proporcionar algunos perfiles de aplicación que pueden utilizarse para habilitar o deshabilitar el acceso a Apache a través del firewall.

Para ver la lista de los perfiles permitido por ufw escribimos lo siguiente:

sudo ufw app list

Entonces obtenemos una lista de los perfiles de la aplicación que podría ser algo similar a esto

Aplicaciones disponibles:
  Apache
  Apache Full
  Apache Secure
  CUPS

Como lo indica el resultado, hay tres perfiles disponibles para Apache:

  • Apache: Este perfil abre el puerto 80 (tráfico web normal sin cifrar)
  • Apache Full: Este perfil abre el puerto 80 (tráfico web normal sin cifrar) y el puerto 443 (tráfico TLS/SSL cifrado)
  • Apache Secure: Este perfil abre solo el puerto 443 (tráfico TLS/SSL cifrado)

Para obtener más información sobre estos perfiles podemos hacer lo siguiente, por ejemplo para “Apache Full” ejecutamos

sudo ufw app info "Apache Full"

El cual nos debería arrojar algo como esto

Perfil: Apache Full
Título: Web Server (HTTP,HTTPS)
Descripción: Apache v2 is the next generation of the omnipresent Apache web
server.

Puertos:
  80,443/tcp

Con este mensaje nos podemos dar cuenta de que los puertos 80 y 443 están abiertos. En caso de que no estén abiertos tendrás que ejecutar el siguiente comando para abrirlos

sudo ufw allow "Apache Full"

Finalmente podemos ir a nuestro navegador favorito y escribir en la barra de direcciones http:localhost o simplemente localhost y nos deberá mostrar algo similar a esto que es la pagina web por defecto de apache y con lo cual ya podremos saber que esta instalado y funcionando

Paso 2: Instalar MySQL

En la terminal ejecutamos

sudo apt install mysql-server

Con esto ya esta instalado pero no esta configurada la seguridad por lo tanto tenemos que ejecutar el siguiente comando para mejorar la seguridad

sudo mysql_secure_installation

Una vez hecho esto lo primero que nos preguntara es que si queremos configurar el complemento para la validación de contraseñas o sea que esto es para que cuando crees una contraseña estés obligado a crearla con cierto nivel de seguridad dependiendo del nivel que selecciones en el complemento. Yo siempre tengo el hábito de crear contraseñas fuertes por tanto no necesito este complemento y responderé no. Ahora independientemente de que si seleccionaste si o no anteriormente te pedirá que crees una contraseña para el usuario root y esta contraseña deberá ser fuerte si es que quieres la mejor seguridad. Ahora ponemos Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas siguientes. Con esto, se eliminarán algunos usuarios anónimos y la base de datos de prueba, se deshabilitarán las credenciales de inicio de sesión remoto de root y se cargarán estas nuevas reglas para que MySQL aplique de inmediato los cambios que realizó.

En los sistemas Ubuntu con MySQL 5.7 (y versiones posteriores), el usuario root de MySQL se configura para la autenticación usando el complemento auth_socket de manera predeterminada en lugar de una contraseña. Esto en muchos casos proporciona mayor seguridad y utilidad, pero también puede generar complicaciones cuando deba permitir que un programa externo (como phpMyAdmin) acceda al usuario.

Para usar una contraseña para conectar con MySQL como root, deberá cambiar su método de autenticación de auth_socket a otro complemento, como caching_sha2_password o mysql_native_password. Para hacer esto, abrimos la consola de MySQL desde la terminal con

sudo mysql

A continuación, comprobamos con el siguiente comando el método de autenticación utilizado por una de las cuentas de usuario de MySQL:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Entonces arroja algo como esto

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$
FnudS2j`py&dt.%SbmzWVN5kUH8SOq5/28qgY2F3sNKh0Y0H22BtqrjIN3 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

En este ejemplo, podemos ver que, en efecto, el usuario root se autentica utilizando el complemento de auth_socket. Para configurar la cuenta root para autenticar con una contraseña, ejecutamos una instrucción ALTER USER para cambiar qué complemento de autenticación utiliza y establecemos una nueva contraseña.

Asegurémonos de cambiar password por una contraseña segura, y tengamos en cuenta que este comando cambiará la contraseña root que establecimos anteriormente

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

A continuación, ejecutamos FLUSH PRIVILEGES para indicar al servidor que vuelva a cargar la tabla de permisos y aplicamos sus nuevos cambios:

FLUSH PRIVILEGES;

Comprobamos de nuevo los métodos de autenticación empleados por cada uno de nuestros usuarios para confirmar que root ya no esta usando el complemento auth_socket

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$n'2!2o,B.^])OL2KLakpqVosxE.6//4bB6245Q58ATS2l4u.AQxBE0LO6 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             | $A$005$Um#8I(qUK@)sB3UQ0QuPewrKQ6wsA1YT6127gx5zsmQ9geKkMZtDGWOCvC | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Puedemos ver en este resultado de ejemplo que el root user de MySQL ahora autentica usando caching_sha2_password. Una vez que confirme esto en su propio servidor, podrá cerrar el shell de MySQL:

exit

Paso 2: Instalar PHP

Instalamos Apache para presentar nuestro contenido y MySQL para almacenar y gestionar nuestros datos. PHP es el componente de nuestra configuración que procesará el código para mostrar contenido dinámico al usuario final. Además del paquete php, necesitaremos php-mysql, un módulo PHP que permite que este se comunique con bases de datos basadas en MySQL. También necesitará libapache2-mod-php para habilitar Apache para gestionar archivos PHP. Los paquetes PHP básicos se instalarán automáticamente como dependencias. También instalaremos algunas extensiones extras que se necesitaran posteriormente para instalar PhpMyAdmin.

sudo apt install php libapache2-mod-php php-mysql php-mbstring php-zip php-gd php-json php-curl

En este punto, nuestra pila LAMP está plenamente operativa, pero, para poder probar su configuración con una secuencia de comandos PHP, lo mejor es instalar un host virtual de Apache adecuado para almacenar los archivos y las carpetas de nuestro sitio web. Así que manos a la obra, que diga dedos a la obra y ejecutamos lo siguiente (your_domain, debe ser cambiado por el nombre de su propio dominio)

sudo mkdir /var/www/your_domain

ejemplo:

sudo mkdir /var/www/php.programadorvagabundo.com

A continuación, asigne la propiedad del directorio con la variable de entorno $USER, que hará referencia a su usuario de sistema actual:

sudo chown -R $USER:$USER /var/www/php.programadorvagabundo.com

Luego, abra un nuevo archivo de configuración en el directorio sites-available de Apache usando el editor de línea de comandos que prefiera. En este caso, utilizaremos gedit:

sudo gedit /etc/apache2/sites-available/php.programadorvagabundo.com.conf

De esta manera, se creará un nuevo archivo en blanco donde pegaremos la siguiente configuración básica:

<VirtualHost *:80>
    ServerName php.programadorvagabundo.com
    ServerAlias www.php.programadorvagabundo.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/php.programadorvagabundo.com
    DirectoryIndex info.php
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Con esta configuración de VirtualHost, le indicamos a Apache que proporcione php.programadorvagabundo.com usando /var/www/php.programadorvagabundo.com como directorio root web.

Ahora, puede usar a2ensite para habilitar el nuevo host virtual:

sudo a2ensite php.programadorvagabundo.com

Puede ser conveniente deshabilitar el sitio web predeterminado que viene instalado con Apache. Es necesario hacerlo si no se utiliza un nombre de dominio personalizado, dado que, en este caso, la configuración predeterminada de Apache sobrescribirá su host virtual. Para deshabilitar el sitio web predeterminado de Apache, escriba lo siguiente:

sudo a2dissite 000-default

Ahora reinicie Apache para que los cambios tengan efecto

sudo systemctl restart apache2

Pasemos a crear y apuntar los nombres del servidor en el servidor local de Ubuntu 20.04. Así que dedos a la obra. Primero en nuestra bash abrimos como superausuario con el editor de nuestra preferencia (en mi caso gedit) el archivo hosts

sudo gedit /etc/hosts

Una vez abierto veremos algo similar a esto:

127.0.0.1	localhost

127.0.1.1	nombre-de-tu-equipo

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ahora debajo de la línea que dice localhost podemos incluir los nombres de servidor que deseemos probar, del siguiente modo:

127.0.0.1	localhost


#Versiones PHP de prueba
127.0.0.1	nombre-de-tu-proyecto-1.tu-dominio.com


127.0.1.1	nombre-de-tu-equipo

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ejemplo:

127.0.0.1	localhost



#Versiones PHP de prueba
127.0.0.1	php.programadorvagabundo.com



127.0.1.1	vagabundo

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ahora nuevamente reiniciamos el servidor Apache para que surtan efecto los cambios

sudo systemctl restart apache2

Ahora que disponemos de una ubicación personalizada para alojar los archivos y las carpetas de nuestro sitio web, crearemos una secuencia de comandos PHP de prueba para verificar que Apache pueda gestionar solicitudes y procesar solicitudes de archivos PHP.

Cree un archivo nuevo llamado info.php dentro de su carpeta root web personalizada:

gedit /var/www/php.programadorvagabundo.com/info.php

Con esto se abrirá un archivo vacío. Añada el siguiente texto, que es el código PHP válido, dentro del archivo:

<?php phpinfo(); ?>

Cuando termine, guarde y cierre el archivo.

Para probar esta secuencia de comandos, diríjase a su navegador web y acceda al nombre de dominio, seguido del nombre de la dirección que en este caso es info.php:

http://nombre-de-tu-proyecto-1.tu-dominio.com/info.php

Ejemplo:

http://php.programadorvagabundo.com/info.php

Y se vera algo como esto:

Paso 4: Instalar PhpMyAdmin

Ahora procederemos a instalar PhpMyAdmin ya que esta interfaz web nos ayudara para administrar nuestras base de datos de una forma práctica y cómoda ahorrándonos tiempo de trabajo, así que ejecutamos lo siguiente

sudo apt install phpmyadmin

La primera pregunta que nos hace la respondemos de forma afirmativa.

¡¡OJO!! Mucho ojo con la siguiente pregunta, ya que en este paso muchos se equivocan. Ahora te preguntara sobre la configuración de phpmyadmin y deberás seleccionar el tipo de servidor web como se aprecia en la siguiente imagen

¡¡OJO!! Entonces como se ve en la imagen hay un “cuadro rojo” en la opción de “apache2” así que generalmente esto hace parecer que esta marcado y que debemos seguir con aceptar pero noooo… aquí debes presionar la barra espaciadora para verdaderamente seleccionar la opción donde este el cuadro rojo que en este caso es apache2 y ahora aparecerá un asterisco (*) dentro del cuadro rojo

y entonces y solo entonces ahora si podrás seguir con <Aceptar>

Luego te hará la siguiente pregunta:

¿Desea configurar la base de datos para phpmyadmin con «dbconfig-common»?

A lo cual respondemos afirmativamente

Posteriormente les pedirá que creen una contraseña a lo cual les recomiendo que pongan la misma contraseña que crearon en la base de datos MySQL

El proceso de instalación añade el archivo de configuración de phpMyAdmin de Apache al directorio /etc/apache2/conhable/, donde se lee de forma automática. Para terminar de configurar Apache y PHP a fin de que funcionen con phpMyAdmin, la única tarea que queda a continuación en esta sección del tutorial es habilitar explícitamente la extensión PHP mbstring. Esto se puede hacer escribiendo lo siguiente:

sudo phpenmod mbstring

Ahora solo reiniciamos por última vez apache

sudo systemctl restart apache2

phpMyAdmin ahora está instalado y configurado para funcionar con Apache. Podemos probarlo visitando

http://localhost/phpmyadmin/

y deberemos poder ver algo similar a esto

Atribuciones de Imágenes

Vector de programador creado por upklyak – www.freepik.es

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *