Instalación de servidor web LAMP en Debian 12

Instalación de servidor web LAMP en Debian 12

A continuación vamos a instalar un servidor LAMP completo en Debian GNU/Linux 12 “Bookworm” (Stable). Hay algunas cosas que han cambiado respecto a otras versiones de Debian, y es que por ejemplo Debian 12 trae en sus repositorios PHP 8.2.

Instalación servidor web

Como todo servidor LAMP, lo principal es la A de Apache, para instalar Apache únicamente debemos de ejecutar:

# apt install apache2


Iniciamos el servicio al arranque y lo iniciamos:

# systemctl enable apache2
# systemctl start apache2

Y listo, ya tenemos servidor web instalado. Ahora desde nuestro navegador favorito escribimos la IP del servidor y nos debería de salir el index de Apache por defecto.

Instalación de PHP para Apache2

Por lo general hay que instalar unos paquetes específicos para luego usar conjuntamente con MariaDB y phpMyAdmin, son estos:

# apt install php8.2 libapache2-mod-php8.2 php8.2-mysql

Por lo general, cuando instalamos alguna aplicación en nuestro servidor, tipo NextCloud, Moodle o Prestashop, éstas nos pedirán algunos paquetes extra para que su funcionamiento sea el correcto. No os preocupéis por esto, por lo general estas aplicaciones avisan de manera muy clara que paquetes instalar.

Para que Apache aplique los cambios, es necesario reiniciar el servicio para que PHP esté activo.

# systemctl restart apache2

Instalación y configuración de MariaDB

Ahora vamos a instalar un servidor de bases de datos para las aplicaciones que podamos instalar en nuestro servidor web, para ello instalaremos MariaDB que está basado en MySQL.

# apt install mariadb-server

Durante la instalación, nos pedirá la contraseña de root para MySQL. Como antes, iniciamos servicio al arranque y lo iniciamos:

# systemctl enable mysql 
# systemctl start mysql

Una vez iniciado, no podremos iniciar sesión con MariaDB porque no hemos configurado aún el servidor para ello:

# mysql_secure_installation

Y esta es la salida:

root@debian:/home/zagur# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ya hemos configurado MariaDB, ahora podemos conectarnos mediante terminal:

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 37
Server version: 10.11.3-MariaDB-1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Instalación y configuración de phpMyAdmin

Como que phpMyAdmin ya no se encuentra en repositorios, si necesitamos esta aplicación web para gestionar las bases de datos, tendremos que hacerlo de forma manual.

MySQL – algunos comandos para utilizar en consola

MySQL – algunos comandos para utilizar en consola

MySQL

Ya hace rato que no había escrito nada en el blog, creo que ahora si me daré mas tiempo para agregar información (jeje eso espero ^^’)

Hoy necesitaba tirar unos comandos por consola mysql y como hace rato no lo hacía simplemente no me acorda bien de todos, así que decidí recopilar un poco de información y compartirla para hacernos una ayuda de memoria.

CONEXION

a. Conectarse al servidor MySQL con el usuario que corresponda “usuario”

]# mysql -u usuario -p

b. Ver o listar las bases de datos existentes en nuestro MySQL

mysql> show databases;

c. Ver o listar los usuarios que se encuentran actualmente en nuestro MySQL

mysql> select * from mysql.user;

d. Seleccionar una base de datos en donde trabajaremos o revisaremos la información

mysql> use nombre_bd;

USUARIOS

Ahora con respecto a lo que es usuarios, ya sea crear, modificar y eliminar, están los siguientes comandos.

a. Crear usuarios con todos los privilegios, ya sera de todas las bases de datos del servidor o de alguna en específico, referente al host puede ser:

  • IP (192.168.1.120) específica para el usuario (recomiendo que sea así),
  • % que indica que puede conectarse desde cualquier ip al servidor o puede ser
  • localhost (127.0.0.1) indicando que el usuario solo puede conectarse al servidor estando dentro de este, o si se encuentra fuera a través de un tunel ssh.
mysql> grant all privileges on nombre_bd.* to 'usuario'@'host' identified by 'contraseña' with grant option;
mysql> grant all privileges on *.* to 'usuario'@'host' identified by 'contraseña' with grant option;

b. Cambiar la contraseña de un usuario creado.

mysql> set pasword for 'usuario'@'host' = password('contraseña');

c. Crear usuarios solo con algunos privilegios.

mysql> grant privilegio ON nombre_bd.* TO 'usuario’@'host’ identified by 'contraseña';

Los privilegios que se usan son:

  • ALTER: Modificar tablas con ALTER TABLE
  • CREATE: Crear una nueva base de datos o tabla
  • DELETE: Eliminar registros de las tablas
  • DROP: Eliminar bases de datos o tablas
  • INDEX: Crear o eliminar índices de tablas
  • INSERT: Crear registros en las tablas
  • SELECT: Listar registros de las tablas
  • UPDATE: Modificar registros de las tablas

d. Ver o listar los privilegios que tiene un usuario.

mysql> show grants for 'usuario'@'host';

e. Eliminar los privilegios de un usuario.

mysql> revoke privilegio ON nombre_bd.* TO 'usuario’@'host';

f. Eliminar un usuario con su respectivo host.

mysql> drop user 'usuario'@'host';

RESPALDOS

Realizar respaldo de una base de datos de nuestro servidor.

]# mysqldump --user=usuario --password=contraseña nombre_bd > nombre_repaldo_BD.sql

Ahora si desean migrar la base de datos de un servidor a otro, tienen el siguiente comando:

]# mysqldump -u usuario -p contraseña nombre_bd | mysql -h host_destino -u usuario -p conrtaseña nombre_bd;

Exportar todas las bases de datos de nuestro servidor MySQL a un archivo.

# mysqldump –password=CLAVE –single-transaction –all-databases | gzip -9 >RUTA_DESTINONOMBRE_`date +%Y-%m-%d`.sql.gz

 

Espero les sirva, ya sea para aprender o como ayuda de memoria. 😀

 

Saludos!