Muchos necesitamos contar con un servidor Lamp en nuestro computador, para realizar pruebas de formas locales en proyectos web que nos servirán para mostrar nuestro contenido o simplemente para entregar este cms a algún usuarios que lo desee.
INTRODUCCION
Debemos entender, que la mayoría de servidores están bajo el sistema Linux y Ubuntu es un derivado de el.
La seguridad que entrega es mayor que los servidores de la plataforma Windows, no quieres ser así, que no sea hackeable, pero al usarlo de forma local, no debemos de preocuparnos en usarlo e implementarlo.
¿QUE SIGNIFICA LAMP?
Se puede denominar de muchas formas, pero a mi me gusta indicar que Lamp es un conjunto de paquetes que forman servidor local, conteniendo 3 componentes principales para ello.
Local
Apache
Mysql
Php
Uno de los principales y el más importante, es Apache, aunque ya existen otros que hacen lo mismo, pero este es más fácil de manejar y configurar a gusto de nosotros.
Es el encargado de almacenar tu web y mostrarla al mundo, siendo el motor principal del servidor para ejecutar las webs.
MYSQL, es un gestor de base de datos, donde podemos almacenar, muchísima información que a posterior podemos realizar como consultas y hacer dinámica nuestra web, no depende de Apache para poder realizar operaciones.
PHP, que es un lenguaje de programación de código abierto que nos permite poder realizar interpretaciones dinámicas de nuestra web. PHP depende de Apache para poder trabajar.
MONTANDO NUESTRO LAMP LOCAL
Lo primero que debes tener en tu sistema, es actualizado tu S.O., para instalar los paquetes(Llamados así en Linux), más recientes que se encuentran en la librería de Ubuntu.
Si no sabes como hacerlo, abre una terminal con la combinación de teclas Control+Alt+T

Ya teniendo tu terminal en pantalla, debes ingresar lo siguiente para actualizar todo.
sudo apt update -y && sudo apt upgrade -y
Ya con todo al día, ingresa lo siguiente en la terminal para instalar el servicio Lamp.
sudo apt install curl unzip wget lsb-release ca-certificates apt-transport-https software-properties-common git sed apache2 mysql-server php8.3 php8.3-{cli,xml,curl,mbstring,mysql,zip} phpmyadmin vsftpd -y
Ahora solo debes ir a buscar algo para comer mientras se realiza el proceso de instalación de nuestros paquetes de Lamp.
Durante la instalación te consultará, que sistema quieres usar como motor de web, en este caso usaremos apache.

Con la barra de espacio elegimos apache2, luego con tabulador o enter procedemos con lo siguiente, que es la instalación de phpmyadmin y su configuración para guardar los datos en la base.

Te consulta si deseas configurar la base de datos para phpmyadmin, donde le indicamos que si, presionando enter.

Nos indica que debemos ingresar una password para el usuario phpmyadmin que se ingresará en la base, solo para este tutorial ingresaremos 12345, por consejo debes usar una password que contenga números, letras mayúsculas e minúsculas y algún signo.

Solo debes confirmar la password que anteriormente habíamos ingresado, que fue 12345.
Ahora validaremos si apache esta funcionando, para eso abrimos nuestro navegador que por defecto trae Mozilla Firefox y colocamos en la url lo siguiente http://localhost, si todo va bien deberás ver la siguiente imagen.

Si quieres ver la versión de Mysql instalada coloca en la terminal
mysql -V

Con PHP hay dos formas de poder ver, pero revisaremos la más fácil, para no complicarte tanto por temas de permiso en las carpetas.
Digita en la terminal
php -v

Ya con todos estos procesos, tenemos un servidor funcional, pero aún nos faltan algunos procesos, de permisos y password de root.
Si nosotros abrimos el navegador para ver phpmyadmin, digitamos en el navegador lo siguiente http://localhost/phpmyadmin y tendremos acceso al administrador de base de datos.

Si nosotros ingresamos con el usuario de phpmyadmin y la clave 12345, tendremos acceso parcial a la base de datos.

Como podemos apreciar, al estar como usuario phpmyadmin, no tenemos el poder de crear base de datos, para ello manejaremos el usuario root y manejar la base y creación de usuarios con control total, para ello debemos realizar cambios en mysql y agregar la clave nueva a root.
Abre la terminal nuevamente e ingresa lo siguiente para abrir la mysql.
sudo mysql

Al estar en mysql ingresa los siguientes comandos, en la primera instancia, nosotros alteramos el usuario root ingresando una clave nueva, puedes colocar la que quieras, donde está 12345 coloca tu propia password.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345';
luego indicamos que los cambios sean realizados en la base de datos con flush
flush privileges;
Al final damos un exit para terminar los procesos en la terminal de mysql.
Ingresa en el navegador nuevamente http://localhost/phpmyadmin e ingresa con el usuario root y la password creada.

Ahora puedes apreciar que al clic en la pestaña de base de datos, puedes crear las que tu quieras y ya tienes acceso a todo el panel completo.
PERMISOS A WWW
Ahora te preguntaras, donde se alojan los archivos de la carpeta para poder trabajar y ver los proyectos que crearemos.
En Linux a diferencia de Windows, no deja escribir en la carpeta que por defecto se encuentra en el sistema principal, en la carpeta /var/www/html, por lo tanto si te encuentras en tu pc trabajaras solo como local puedes dar acceso total, pero si el servidor es externo, solo debes permitir la lectura de esta.
Para servidor local permisos, lectura, escritura y ejecución (777), No hay restricciones en los permisos. Cualquier persona puede hacer cualquier cosa. Generalmente no es un escenario deseable.
sudo chmod 777 -R /var/www/html
Para servidor externo a tu pc, 755, el propietario del fichero puede leer, escribir y ejecutar el archivo. Todos los otros pueden leer y ejecutar el archivo. Este ajuste es común para los programas que son utilizados por todos los usuarios.
sudo chmod 755 -R /var/www/html
Por defecto, una vez instalado el servidor web apache, el dueño del grupo y el directorio por defecto pertenecen a root, Nosotros vamos a cambiar el dueño del directorio y el grupo, al usuario por defecto de apache, llamado: www-data.
sudo chown -R www-data:www-data /var/www/html
Para facilitar la administración del sitio web, añadimos nuestro usuario (por ejemplo: dogdark) al grupo de apache llamado: www-data.
sudo usermod -a -G www-data dogdark
Nota, cambia dogdark por el usuario de tu pc
CONFIGURACION SERVIDOR FTP LOCAL
Podremos configurar un ftp, pero recordemos que solo esta configuración es para usar de forma local y no externa, por temas de seguridad, más que nada para quienes quieren usar WordPress en el localhost en pruebas.
WordPress, para instalar plugin, te solicita tener un ftp en el servidor, por lo tanto configuraremos el local para las pruebas de este cms.
Aclaremos que todo paquete que se instalar por defecto tiene archivos de configuración, y este no es la excepción y se encuentra en la carpeta /etc, así que sacaremos una copia por si cometemos algún error, para volver a recuperar el original y le agregaremos .original para diferenciarlos.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
Ya obteniendo la copia, abriremos el que necesitamos con el editor nano, para modificar algunas cosas.
sudo nano /etc/vsftpd.conf
Nos aseguramos de lo siguiente, revisa las líneas y debe quedar como lo indicare a posterior
anonymous_enable=NO
local_enable=YES
write_enable=YES
Por defecto write_enable viene con el signo #antes, así que debes eliminarlo si esta, presiona luego control+x ,y, enter, con eso grabamos los cambios realizados.
Para que funcione el servidor, debemos habilitarlo en el arranque del sistema, como todo programa.
sudo systemctl enable vsftpd.service
Y ahora reiniciamos el servidor ftp, para que surjan los cambios realizados en el archivo de configuración que modificamos.
sudo systemctl restart vsftpd.service
Para el acceso a ftp, Puedes usar la siguiente configuración:
Servidor : localhost
Usuario : el de tu máquina,, en mi caso es dogdark
Password : tu clave que usas en Ubuntu.
Ya con eso tenemos todo listo para usar nuestro servidor web para proyectos, aunque deberías configurar más seguridad en tu server, para evitar ataques ddos como por ejemplo. Pero eso ya será para otro tutorial.