Servidor LAMP · 13 min read · Dec 28, 2025
Tutorial de servidor LAMP en Ubuntu 16.04 (LTS) con Apache, PHP 7 y MySQL
LAMP es la abreviatura de Linux, Apache, MySQL, PHP. Este tutorial muestra cómo puedes instalar un servidor web Apache en un servidor Ubuntu 16.04 LTS (Xenial Xerus) con PHP 7 (mod_php) y soporte para MySQL / MariaDB y cómo configurar un certificado SSL con Let’s Encrypt. Además, instalaré PHPMyAdmin para facilitar la administración de MySQL. Una configuración LAMP es una base perfecta para sistemas CMS populares como Joomla, Wordpress o Drupal.
Nota Preliminar
En este tutorial, usaré el nombre de host server1.example.com con la dirección IP 192.168.1.100. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.
Recomiendo usar una configuración de servidor Ubuntu mínima como base para el tutorial, que puede ser una imagen de servidor virtual o raíz con una instalación mínima de Ubuntu 16.04 de una empresa de alojamiento web o puedes usar nuestro tutorial de servidor mínimo para instalar un servidor desde cero.
Estoy ejecutando todos los pasos de este tutorial con privilegios de root, así que asegúrate de haber iniciado sesión como root:
sudo su1. Instalando la base de datos MySQL o MariaDB
Actualmente hay dos sistemas de bases de datos MySQL ampliamente utilizados, el clásico servidor “MySQL” que es desarrollado por Oracle y está disponible en la versión 5.7 ahora y el fork de MySQL llamado MariaDB que es desarrollado por el desarrollador original de MySQL, Monty Widenius.
Te mostraré cómo instalar ambas alternativas a continuación. Solo sigue el capítulo 1.1 o 1.2 pero no ambos. Usaré MySQL 5.7 para la imagen de máquina virtual que se puede descargar de Howtoforge.
1.1 Instalar MySQL 5.7
Para instalar MySQL 5.7, ejecuta este comando:
apt-get -y install mysql-server mysql-clientLos paquetes mysql-server y mysql-client son llamados ‘meta-paquetes’, siempre instalan la última versión de MySQL que está disponible desde Ubuntu. La última versión es actualmente MySQL 5.7.
Ya hemos establecido la contraseña de root para MySQL durante la instalación, pero me gustaría eliminar el usuario anónimo y la base de datos de prueba por razones de seguridad. Ejecuta el comando mysql_secure_installation a continuación para lograr eso.
mysql_secure_installationSe te harán estas preguntas:
Asegurando la implementación del servidor MySQL.Ingresa la contraseña para el usuario root: <-- Ingresa la contraseña de root de MySQLEl PLUGIN DE VALIDACIÓN DE CONTRASEÑA se puede usar para probar contraseñas
y mejorar la seguridad. Verifica la fuerza de la contraseña
y permite a los usuarios establecer solo aquellas contraseñas que son
suficientemente seguras. ¿Te gustaría configurar el plugin de VALIDACIÓN DE CONTRASEÑA?Presiona y|Y para Sí, cualquier otra tecla para No:
Usando la contraseña existente para root.
¿Cambiar la contraseña para root? ((Presiona y|Y para Sí, cualquier otra tecla para No): <-- Elige 'y' aquí si deseas habilitar la validación de contraseña, no necesito esa función, así que elijo 'n' aquí.... omitiendo.
Por defecto, una instalación de MySQL tiene un usuario anónimo,
permitiendo que cualquiera inicie sesión en MySQL sin tener que tener
una cuenta de usuario creada para ellos. Esto está destinado solo para
testing, y para hacer que la instalación sea un poco más fluida.
Deberías eliminarlos antes de pasar a un entorno de producción.¿Eliminar usuarios anónimos? (Presiona y|Y para Sí, cualquier otra tecla para No): <-- y
Éxito.Normalmente, solo se debería permitir que root se conecte desde
'localhost'. Esto asegura que alguien no pueda adivinar la
contraseña de root desde la red.¿Deshabilitar el inicio de sesión remoto de root? (Presiona y|Y para Sí, cualquier otra tecla para No): <-- y
Éxito.Por defecto, MySQL viene con una base de datos llamada 'test' que
cualquiera puede acceder. Esto también está destinado solo para testing,
y debería ser eliminado antes de pasar a un entorno de producción.¿Eliminar la base de datos de prueba y el acceso a ella? (Presiona y|Y para Sí, cualquier otra tecla para No): <-- y
- Eliminando base de datos de prueba...
Éxito.- Eliminando privilegios en la base de datos de prueba...
Éxito.Recargar las tablas de privilegios asegurará que todos los cambios
realizados hasta ahora surtan efecto de inmediato.¿Recargar tablas de privilegios ahora? (Presiona y|Y para Sí, cualquier otra tecla para No): <-- y
Éxito.¡Todo listo!La configuración de MySQL ahora ha sido asegurada.
1.2 Instalar MariaDB 10
Ejecuta el siguiente comando para instalar el servidor y cliente de MariaDB:
apt-get -y install mariadb-server mariadb-clientAhora establecemos una contraseña de root para MariaDB.
mysql_secure_installationSe te harán estas preguntas:
Ingresa la contraseña actual para root (presiona enter para ninguno): <-- presiona enter
¿Establecer contraseña de root? [Y/n] <-- y
Nueva contraseña: <-- Ingresa la nueva contraseña de root de MariaDB aquí
Reingresa nueva contraseña: <-- Repite la contraseña
¿Eliminar usuarios anónimos? [Y/n] <-- y
¿Deshabilitar el inicio de sesión remoto de root? [Y/n] <-- y
¿Recargar tablas de privilegios ahora? [Y/n] <-- yPrueba el inicio de sesión en MariaDB con el “comando mysql”
mysql -u root -py ingresa la contraseña de root de MariaDB que has establecido arriba. El resultado debería ser similar a la captura de pantalla a continuación:

Para salir de la consola de MariaDB, ingresa el comando “quit” y presiona enter.
2. Instalar el servidor web Apache
Apache 2 está disponible como un paquete de Ubuntu, por lo tanto, podemos instalarlo así:
apt-get -y install apache2Ahora dirígete a tu navegador a http://192.168.1.100, y deberías ver la página predeterminada de Apache2 (¡Funciona!):

La raíz del documento del vhost predeterminado de Apache es /var/www/html en Ubuntu y el archivo de configuración principal es /etc/apache2/apache2.conf. El sistema de configuración está completamente documentado en /usr/share/doc/apache2/README.Debian.gz.
3. Instalar PHP 7
Podemos instalar PHP 7 y el módulo PHP de Apache de la siguiente manera:
apt-get -y install php7.0 libapache2-mod-php7.0Luego reinicia Apache:
systemctl restart apache24. Probar PHP y obtener detalles sobre tu instalación de PHP
La raíz del documento del sitio web predeterminado es /var/www/html. Ahora crearemos un pequeño archivo PHP (info.php) en ese directorio y lo llamaremos en un navegador. El archivo mostrará muchos detalles útiles sobre nuestra instalación de PHP, como la versión de PHP instalada.
nano /var/www/html/info.phpLuego cambia el propietario del archivo info.php al usuario y grupo www-data.
chown www-data:www-data /var/www/html/info.phpAhora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.1.100/info.php):

Como ves, PHP 7.0 está funcionando, y está funcionando a través del controlador Apache 2.0, como se muestra en la línea de API del servidor. Si desplazas hacia abajo, verás todos los módulos que ya están habilitados en PHP5. MySQL no está listado allí lo que significa que aún no tenemos soporte para MySQL / MariaDB en PHP.
5. Obtener soporte para MySQL / MariaDB en PHP
Para obtener soporte para MySQL en PHP, podemos instalar el paquete php7.0-mysql. Es una buena idea instalar algunos otros módulos de PHP también, ya que podrías necesitarlos para tus aplicaciones. Puedes buscar módulos de PHP disponibles así:
apt-cache search php7.0Elige los que necesites e instálalos así:
apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettextAhora reinicia Apache2:
systemctl restart apache2
PHP 7 ahora tiene soporte para MySQL / MariaDB como se muestra en phpinfo() arriba.
6. Instalar el caché Opcache + APCu PHP para acelerar PHP
PHP 7 incluye un caché de opcode incorporado para almacenar en caché y optimizar el código intermedio de PHP, se llama ‘opcache’ y está disponible en el paquete php7.0-opcache. Se recomienda encarecidamente tener un Opcache instalado para acelerar tu página PHP. Además de opcache, instalaré APCu que es un envoltorio de compatibilidad para opcache para proporcionar las funciones del caché APC, un sistema de caché utilizado a menudo en versiones de PHP 5.x y muchos sistemas CMS aún lo utilizan.
Opcache y APCu se pueden instalar de la siguiente manera:
apt-get -y install php7.0-opcache php-apcuNo te preocupes si muestra que Opcache ya está instalado.
Ahora reinicia Apache:
systemctl restart apache2Ahora recarga http://192.168.1.100/info.php en tu navegador y desplázate hacia abajo a la sección de módulos nuevamente. Ahora deberías encontrar muchos nuevos módulos allí:

Por favor, no olvides eliminar el archivo info.php cuando ya no lo necesites, ya que proporciona detalles sensibles de tu servidor. Ejecuta el siguiente comando para eliminar el archivo.
rm -f /var/www/html/info.php7. Habilitar el sitio web SSL en Apache
SSL/TLS es una capa de seguridad para cifrar la conexión entre el navegador web y tu servidor. La mayoría de los navegadores web comienzan a mostrar sitios como inseguros hoy en día cuando la conexión entre el servidor y el navegador web no está cifrada con SSL. En este capítulo, te mostraré cómo asegurar tu sitio web con SSL.
Ejecuta los siguientes comandos en tu servidor para habilitar el soporte SSL (https://). Ejecuta:
a2enmod ssl
a2ensite default-sslque habilita el módulo SSL y agrega un enlace simbólico en la carpeta /etc/apache2/sites-enabled al archivo /etc/apache2/sites-available/default-ssl.conf para incluirlo en la configuración activa de Apache. Luego reinicia Apache para habilitar la nueva configuración:
systemctl restart apache2Ahora prueba la conexión SSL abriendo https://192.168.1.100 en un navegador.

Recibirás una advertencia SSL ya que el certificado SSL del servidor es un certificado SSL “autofirmado”, esto significa que el navegador no confía en este certificado por defecto y primero debes aceptar la advertencia de seguridad. Después de aceptar la advertencia, verás la página predeterminada de Apache.

El “Candado Verde” cerrado frente a la URL en el navegador muestra que la conexión está cifrada.
Hay dos formas de deshacerse de la advertencia SSL, ya sea reemplazando el certificado SSL autofirmado /etc/ssl/certs/ssl-cert-snakeoil.pem con un certificado SSL firmado oficialmente que compres de una autoridad SSL o obtienes un certificado SSL gratuito de Let’s Encrypt, que describiré en el capítulo 8.
8. Obtener un certificado SSL gratuito de Let’s Encrypt
El primer paso para asegurar el sitio web con un certificado SSL de Let’s Encrypt es instalar el paquete python-letsencrypt-apache. Ejecuta el siguiente comando:
apt-get -y install python-letsencrypt-apacheEn el siguiente paso, solicitaremos un certificado SSL de Let’s Encrypt, durante este proceso, el servidor de Let’s Encrypt intenta conectarse a tu servidor a través del nombre de dominio que proporcionas al comando letsencrypt. Es importante que este nombre de dominio apunte a tu servidor en DNS ya para que el sitio web sea accesible por su nombre de dominio en el puerto 80 (http) ya. Si el sitio web no es accesible desde Internet, entonces la creación del certificado SSL de Let’s Encrypt fallará.
Antes de que podamos comenzar a crear el certificado SSL, establece el nombre de dominio en el archivo de configuración del vhost. Abre el archivo vhost predeterminado con un editor:
nano /etc/apache2/sites-available/000-default.confy agrega la línea:
ServerName example.comJusto debajo de la línea ‘DocumentRoot’. Reemplaza example.com con el nombre de dominio de tu propio sitio web.
Luego crea el certificado SSL con este comando:
letsencrypt --apache -d example.comReemplaza example.com con tu nombre de dominio aquí nuevamente. El comando iniciará un asistente que te hará varias preguntas.
Ingresa la dirección de correo electrónico donde se puede contactar al administrador responsable de este sitio web.

Acepta los términos y condiciones de la autoridad SSL de Let’s Encrypt.

Elige si deseas redirigir automáticamente las solicitudes no SSL a https://. Seleccionaré sí aquí para evitar problemas de contenido duplicado cuando el sitio web esté disponible como versión http:// y https://.

El certificado SSL ha sido emitido con éxito.

Cuando accedas al sitio web ahora con un navegador, serás redirigido automáticamente a SSL y el candado verde frente a la barra de URL en el navegador muestra que ahora estamos utilizando un certificado SSL de confianza.

8.1 Renovación automática de Let’s Encrypt
Los certificados SSL de Let’s Encrypt son válidos por un corto período de solo 80 días. Por lo tanto, configuraremos un cronjob ahora para renovar automáticamente el certificado SSL cuando sea necesario. El comando es ‘letsencrypt renew’.
Configura un cronjob para la renovación automática de LE. Ejecuta:
crontab -epara abrir el crontab de root en un editor. Inserta la siguiente línea al final del archivo:
0 1 * * * /usr/bin/letsencrypt renew &> /dev/nullguarda el archivo, esto activará el cronjob. Este cronjob llamará al comando de renovación de Let’s Encrypt cada noche a la 1 am. El comando renovará el certificado SSL solo cuando sea necesario (30 días antes de que expire), no hay problema en ejecutarlo cada noche.
9. Instalar phpMyAdmin
phpMyAdmin es una interfaz web a través de la cual puedes administrar tus bases de datos MySQL. Es una buena idea instalarlo:
apt-get -y install phpmyadminIMPORTANTE: El instalador apt te hará varias preguntas ahora, una de ellas es seleccionar el tipo de servidor web. Un error común es que el tipo de servidor web solo está resaltado pero no seleccionado. Para seleccionar un elemento en un menú apt, debes presionar la barra espaciadora en el teclado después de navegar al elemento con las teclas tab o cursor. ¡Simplemente resaltarlo no es suficiente!
Verás las siguientes preguntas:
Servidor web para configurar automáticamente: <-- Selecciona la opción: apache2
¿Configurar base de datos para phpmyadmin con dbconfig-common? <-- Sí
Contraseña de aplicación MySQL para phpmyadmin: <-- Presiona enter, apt creará una contraseña aleatoria automáticamente.9.1 Acceso root a PHPMyAdmin con MariaDB
El siguiente paso es necesario solo para instalaciones de MariaDB, si usas MySQL 5.7, entonces omite este paso.
MariaDB habilita un plugin llamado “unix_socket” para el usuario root por defecto, este plugin impide que el usuario root pueda iniciar sesión en PHPMyAdmin y que las conexiones TCP a MySQL funcionen para el usuario root. Para obtener un usuario con privilegios para crear otros usuarios y bases de datos en PHPMyAdmin, crearé un nuevo usuario de MySQL con el nombre “admin” con los mismos privilegios que el usuario root.
Inicia sesión en la base de datos MySQL como usuario root en la consola:
mysql -u rootCrea un nuevo usuario con el nombre “admin” y la contraseña “howtoforge”. ¡Reemplaza la contraseña “howtoforge” con una contraseña segura en los comandos a continuación!
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exitDespués, puedes acceder a phpMyAdmin en http://192.168.1.100/phpmyadmin/:


10 Descarga de imagen de máquina virtual de este tutorial
Este tutorial está disponible como una imagen de máquina virtual lista para usar en formato ovf/ova que es compatible con VMWare y Virtualbox. La imagen de la máquina virtual utiliza los siguientes detalles de inicio de sesión:
Inicio de sesión SSH / Shell
Nombre de usuario: administrator
Contraseña: howtoforge
Este usuario tiene derechos sudo.
Inicio de sesión MySQL
Nombre de usuario: root
Contraseña: howtoforge
La IP de la VM es 192.168.1.100, se puede cambiar en el archivo /etc/network/interfaces. Por favor, cambia todas las contraseñas anteriores para asegurar la máquina virtual.
11 Enlaces
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- MySQL: http://www.mysql.com/
- MariaDB: https://mariadb.com/
- Ubuntu: http://www.ubuntu.com/
- phpMyAdmin: http://www.phpmyadmin.net/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.