LAMP stack es una popular plataforma de desarrollo web de código abierto que se puede utilizar para ejecutar e implementar sitios web dinámicos y aplicaciones basadas en la web. Por lo general, una pila LAMP consta de un servidor web Apache, bases de datos MariaDB/MySQL, lenguajes de programación PHP/Python/Perl. LAMP es el acrónimo de Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. Este tutorial paso a paso describe cómo instalar Apache, MySQL, PHP (pila LAMP) en la edición del servidor Ubuntu 20.04 LTS.
Instalar Apache, MySQL, PHP (pila LAMP) en Ubuntu 20.04 LTS
A los efectos de este tutorial, utilizaremos el siguiente sistema Ubuntu.
- Sistema operativo :Edición de servidor Ubuntu 20.04 LTS
- dirección IP :192.168.225.52/24
Primero, instalemos el servidor Apache.
1. Instale el servidor web Apache en Ubuntu
En primer lugar, actualice el servidor Ubuntu usando los comandos:
$ sudo apt update
$ sudo apt upgrade
A continuación, instale el servidor web Apache:
$ sudo apt install apache2
Compruebe si el servidor web Apache se está ejecutando o no con el comando:
$ sudo systemctl status apache2
La salida de muestra sería:
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl> Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 23996 (apache2) Tasks: 55 (limit: 2283) Memory: 5.1M CGroup: /system.slice/apache2.service ├─23996 /usr/sbin/apache2 -k start ├─23998 /usr/sbin/apache2 -k start └─23999 /usr/sbin/apache2 -k start May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server... May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det> May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
¡Felicidades! ¡¡El servicio de Apache está funcionando!!
1.1. Permitir el servidor web Apache a través del cortafuegos UFW
UFW , significa U ncomplicado F irw all, es un programa para administrar un firewall netfilter diseñado para ser fácil de usar. UFW está disponible por defecto en todas las versiones de Ubuntu.
De manera predeterminada, no se puede acceder al navegador web Apache desde sistemas remotos si ha habilitado el firewall UFW en Ubuntu 20.04 LTS. Debe permitir el http
y https
puertos siguiendo los pasos que se indican a continuación.
Primero, enumere los perfiles de aplicación disponibles en su sistema Ubuntu usando el comando:
$ sudo ufw app list
Salida de muestra:
Available applications: Apache Apache Full Apache Secure OpenSSH
Como puede ver, las aplicaciones Apache y OpenSSH tienen perfiles UFW instalados. Puede enumerar información sobre cada perfil y sus reglas incluidas usando ufw app info "Profile Name"
comando.
Veamos el “Apache Full”
perfil usando el comando:
$ sudo ufw app info "Apache Full"
Salida de muestra:
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp
Como ves, "Apache Full"
el perfil ha incluido las reglas para habilitar el tráfico a los puertos 80
y 443
.
Ahora, ejecute el siguiente comando para permitir el HTTP
entrante y HTTPS
tráfico para este perfil:
$ sudo ufw allow in "Apache Full"
Verá una salida como la siguiente:
Rules updated Rules updated (v6)
Si no desea permitir https
tráfico, pero solo http
(80) tráfico, ejecutar:
$ sudo ufw app info "Apache"
1.2. Pruebe el servidor web Apache
Ahora, abra su navegador web y acceda a la página de prueba de Apache navegando a http://localhost/
o http://IP-Address/
.
Si ve la "página predeterminada de Apache 2 Ubuntu" como se muestra a continuación, está listo para continuar. ¡El servidor Apache está funcionando!
2. Instalar MySQL en Ubuntu
Para instalar MySQL en Ubuntu, ejecute:
$ sudo apt install mysql-server
Verifique si el servicio MySQL se está ejecutando o no usando el comando:
$ sudo systemctl status mysql
Salida de muestra:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago Main PID: 25242 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 2283) Memory: 323.7M CGroup: /system.slice/mysql.service └─25242 /usr/sbin/mysqld May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server... May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
Como puede ver en el resultado anterior, ¡MySQL se está ejecutando!
2.1. Configurar la contraseña del usuario administrativo (raíz) de la base de datos para Mysql
De forma predeterminada, MySQL root
la contraseña de usuario está en blanco. No se recomienda utilizar una contraseña vacía para la cuenta administrativa de la base de datos. Debe proteger su servidor MySQL ejecutando el siguiente script:
$ sudo mysql_secure_installation
Se le preguntará si desea configurar "VALIDATE PASSWORD"
Introduce y
si desea configurar VALIDATE PASSWORD
componente:
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
Si su respuesta es Sí , se le pedirá que elija el nivel de validación de la contraseña. Las validaciones de contraseña disponibles son bajas , medio y fuerte . Simplemente ingrese el número apropiado (0 para contraseña baja, 1 para contraseña media y 2 para contraseña segura) y presione la tecla ENTER.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Ahora, ingrese la contraseña para MySQL root
usuario. Tenga en cuenta que debe usar una contraseña para MySQL root
usuario dependiendo de la política de contraseñas que elija en el paso anterior. Si no habilitó el complemento, simplemente use cualquier contraseña fuerte y única de su elección.
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Una vez que haya ingresado la contraseña dos veces, verá la seguridad de la contraseña (en nuestro caso, es 100 ). Si está bien para usted, presione Y para continuar con la contraseña proporcionada. Si no está satisfecho con la longitud de la contraseña, presione cualquier otra tecla y establezca una contraseña segura. Estoy de acuerdo con mi contraseña actual, así que elegí y
.
Para el resto de preguntas, simplemente escriba y
y presiona ENTER
. Esto eliminará al usuario anónimo, no permitirá que el usuario raíz inicie sesión de forma remota y eliminará la base de datos de prueba.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y Success. All done!
¡Hecho! Hemos configurado MySQL root
contraseña del usuario.
2.2. Cambiar el método de autenticación para el usuario root de MySQL
De forma predeterminada, el usuario root de MySQL está configurado para autenticarse mediante auth_socket
complemento a partir de MySQL 5.7 y versiones más recientes en Ubuntu. Aunque mejora la seguridad, también complicará las cosas cuando acceda a su servidor de base de datos utilizando programas externos, por ejemplo, phpMyAdmin. Para solucionar este problema, debe cambiar el método de autenticación de auth_socket a caching_sha2_password
o mysql_native_password
.
A partir de la versión MySQL 8.0, el complemento de autenticación preferido y predeterminado es caching_sha2_password
. El caching_sha2_password
El complemento de autenticación proporciona un cifrado de contraseña más seguro que mysql_native_password
complemento.
Para cambiar el complemento de autenticación, inicie sesión en su solicitud de MySQL usando el comando:
$ sudo mysql
O,
$ mysql -u root -p
Ingrese la root
de MySQL contraseña que configuramos en el paso anterior.
Ejecute el siguiente comando en el indicador de mysql para encontrar el método de autenticación actual para todas las cuentas de usuario de MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Salida de muestra:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$=s%UO"�[email protected]>[email protected] | 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 | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Como puede ver, el usuario root de mysql usa auth_socket
complemento para autenticación.
Para cambiar auth_socket
complemento para caching_sha2_password
, ejecute el siguiente comando en el indicador de MySQL. Si ha habilitado VALIDATE PASSWORD
complemento, asegúrese de haber utilizado una contraseña segura según los requisitos de la política actual. Un fuerte debería consta de al menos 8 caracteres, incluida una letra mayúscula, una letra minúscula, un número y un carácter especial.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Reemplace Password123#@!
con una contraseña segura y única de su elección en el comando anterior.
Actualice los cambios usando el comando:
mysql> FLUSH PRIVILEGES;
Ahora verifique si el complemento de autenticación actual se cambió o no usando el comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Salida de muestra:
¡Bueno! Ahora la root
de MySQL el usuario puede autenticarse usando una contraseña para acceder al shell de MySQL.
Salga del indicador de MySQL:
mysql> exit
Aunque caching_sha2_password
El complemento proporciona un cifrado seguro mejorado, tiene algunos problemas de compatibilidad con las instalaciones existentes de MySQL. Para más detalles, consulte este enlace . Si se encontró con algún problema de compatibilidad, debe configurar mysql_native_password
complemento como complemento de autenticación predeterminado.
Para cambiar a mysql_native_password
complemento, ejecute el siguiente comando en el indicador de MySQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Actualice los cambios usando el comando:
mysql> FLUSH PRIVILEGES;
Ahora verifique nuevamente si el método de autenticación ha cambiado o no usando el comando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Salida de muestra:
Salga del indicador de mysql:
mysql> exit
3. Instalar PHP en Ubuntu
Para instalar PHP, ejecute:
$ sudo apt install php libapache2-mod-php php-mysql
Después de instalar PHP, cree info.php
archivo en la carpeta de documentos raíz de Apache. Por lo general, la carpeta de documentos raíz de Apache será /var/www/html/
o /var/www/
en la mayoría de las distribuciones de Linux basadas en Debian. En Ubuntu 20.04 LTS, es /var/www/html/
.
Vamos a crear info.php
archivo en la carpeta raíz de apache:
$ sudo vi /var/www/html/info.php
Agregue las siguientes líneas:
<?php phpinfo(); ?>
Presione ESC
clave y escriba :wq
para guardar y salir del archivo. Reinicie el servicio de apache para aplicar los cambios.
$ sudo systemctl restart apache2
3.1. Prueba PHP
Abra su navegador web y vaya a http://IP-address/info.php
URL.
Verá la información de php, como la versión, la API del servidor y los detalles de todos los complementos de php habilitados.
Por lo general, cuando un usuario solicita un directorio del servidor web, Apache primero busca un archivo llamado index.html
. Si desea cambiar Apache para servir archivos php en lugar de otros, mueva index.php
a la primera posición en dir.conf
archivo como se muestra a continuación
$ sudo vi /etc/apache2/mods-enabled/dir.conf
Aquí está el contenido del archivo anterior.
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Mueve el index.php
archivo a primero . Una vez que haya realizado los cambios, su dir.conf
el archivo se verá como a continuación.
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Presione ESC
clave y escriba :wq
para guardar y cerrar el archivo. Reinicie el servicio Apache para aplicar los cambios.
$ sudo systemctl restart apache2
3.2. Instalar módulos PHP
Para mejorar la funcionalidad de PHP, puede instalar algunos módulos PHP adicionales.
Para listar los módulos PHP disponibles, ejecute:
$ sudo apt-cache search php- | less
Salida de muestra:
Utilice las teclas de flecha para recorrer el resultado. Para salir, escriba q
.
Para encontrar los detalles de cualquier módulo php en particular, por ejemplo php-gd , ejecuta:
$ sudo apt-cache show php-gd
Para instalar un módulo php ejecute:
$ sudo apt install php-gd
No olvide reiniciar el servicio Apache después de instalar un módulo php. Para verificar si el módulo está cargado o no, abra el archivo info.php en su navegador y verifique si está presente.
¡Felicidades! Como puede ver, es muy fácil instalar apache, mysql, php (LAMP stack) en Ubuntu 20.04 LTS. Ahora puede comenzar a alojar sus sitios web utilizando la pila LAMP.
Leer a continuación:
- Instalar phpMyAdmin con LAMP Stack en Ubuntu 20.04 LTS
Lectura relacionada:
- Instalar Nginx, MySQL, PHP (LEMP Stack) en Ubuntu 20.04 LTS
- Instalar Apache, MariaDB, PHP (LAMP Stack) en CentOS 8