Búsqueda de sitios web

Instale la pila Apache, MySQL, PHP (LAMP) en Ubuntu 18.04 LTS


La pila LAMP 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 web. Normalmente, la pila LAMP consta de un servidor web Apache, bases de datos MariaDB/MySQL y lenguajes de programación PHP/Python/Perl. LAMP es el acrónimo de Linux, MariaDB/MYSQL, PHP/P<ython/Pperl. Este tutorial describe cómo instalar Apache, MySQL, PHP (pila LAMP) en el servidor Ubuntu 18.04 LTS.

Instale la pila Apache, MySQL, PHP (LAMP) en Ubuntu 18.04 LTS

A los efectos de este tutorial, utilizaremos el siguiente cuadro de prueba de Ubuntu.

  • Sistema operativo: Ubuntu 18.04.1 LTS Server Edition
  • Dirección IP: 192.168.225.22/24

1. Instale el servidor web Apache

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:

sudo systemctl status apache2

El resultado de muestra sería:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: en
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago
 Main PID: 2025 (apache2)
    Tasks: 55 (limit: 2320)
   CGroup: /system.slice/apache2.service
           ├─2025 /usr/sbin/apache2 -k start
           ├─2027 /usr/sbin/apache2 -k start
           └─2028 /usr/sbin/apache2 -k start

Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably
Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

¡Felicidades! ¡El servicio Apache está en funcionamiento!

1.1 Ajustar el firewall para permitir el servidor web Apache

De forma predeterminada, no se puede acceder al navegador web Apache desde sistemas remotos si ha habilitado el firewall UFW en Ubuntu 18.04 LTS. Debe permitir los puertos http y https siguiendo los pasos a continuación.

Primero, enumere los perfiles de aplicaciones 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 el comando "ufw app info "Profile Name" .

Echemos un vistazo al perfil “Apache Full”. Para hacerlo, ejecute:

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 puede ver, el perfil "Apache Full" ha incluido las reglas para habilitar el tráfico a los puertos 80 y 443:

Ahora, ejecute el siguiente comando para permitir el tráfico HTTP y HTTPS entrante para este perfil:

$ sudo ufw allow in "Apache Full"
Rules updated
Rules updated (v6)

Si no desea permitir el tráfico https, sino sólo el tráfico http (80), ejecute:

sudo ufw app info "Apache"
1.2 Probar 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/.

página de prueba de apache

Si ve una pantalla similar a la anterior, está listo para comenzar. ¡El servidor Apache está funcionando!

2. Instalar MySQL

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: enab
Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago
Main PID: 3423 (mysqld)
Tasks: 27 (limit: 2320)
CGroup: /system.slice/mysql.service
└─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server...
Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.

¡Mysql se está ejecutando!

2.1 Configurar la contraseña del usuario administrativo (root) de la base de datos

De forma predeterminada, la contraseña del usuario root de MySQL está en blanco. Debe proteger su servidor MySQL ejecutando el siguiente script:

sudo mysql_secure_installation

Se le preguntará si desea configurar el complemento VALIDAR CONTRASEÑA o no. Este complemento permite a los usuarios configurar una contraseña segura para las credenciales de la base de datos. Si está habilitado, verificará automáticamente la seguridad de la contraseña y obligará a los usuarios a establecer solo aquellas contraseñas que sean lo suficientemente seguras. Es seguro dejar este complemento deshabilitado. Sin embargo, debe utilizar una contraseña segura y única para las credenciales de la base de datos. Si no desea habilitar este complemento, simplemente presione cualquier tecla para omitir la parte de validación de contraseña y continuar con el resto de los pasos.

Si su respuesta es , se le pedirá que elija el nivel de validación de contraseña.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN 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 plugin?

Press y|Y for Yes, any other key for No y

Las validaciones de contraseña disponibles son baja, media y fuerte. Simplemente ingrese el número apropiado (0 para contraseña baja, 1 para 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:

Ahora, ingrese la contraseña del usuario root de MySQL. Tenga en cuenta que debe utilizar una contraseña para el usuario raíz de MySQL según la política de contraseña que elija en el paso anterior. Si no habilitó el complemento, simplemente use cualquier contraseña segura y única de su elección.

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50 
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 50). Si le parece bien, 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 presione ENTER. Esto eliminará al usuario anónimo, no permitirá el inicio de sesión del usuario raíz 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!

Eso es todo. Se ha establecido la contraseña para el usuario raíz de MySQL.

2.2 Cambiar el método de autenticación para el usuario root de MySQL

De forma predeterminada, el usuario raíz de MySQL está configurado para autenticarse utilizando el complemento auth_socket en 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 cualquier programa externo, por ejemplo phpMyAdmin. Para solucionar este problema, debe cambiar el método de autenticación de auth_socket a mysql_native_password. Para hacerlo, inicie sesión en su indicador de MySQL usando el comando:

sudo mysql

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:

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

Salida de muestra:

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Como puede ver, el usuario root de MySQL utiliza el complemento auth_socket para la autenticación.

Para cambiar esta autenticación al método mysql_native_password, ejecute el siguiente comando en el símbolo del sistema mysql. No olvide reemplazar "contraseña" con una contraseña segura y única de su elección. Si ha habilitado el complemento VALIDACIÓN, asegúrese de haber utilizado una contraseña segura según los requisitos de la política actual.

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

Actualice los cambios usando el comando:

FLUSH PRIVILEGES;

Ahora verifique nuevamente si el método de autenticación se cambió o no se usa el comando:

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

Salida de muestra:

¡Bien! Ahora el usuario root de myql puede autenticarse usando una contraseña para acceder al shell de mysql.

Salga del indicador de MySQL:

exit

3. Instalar PHP

Para instalar PHP, ejecute:

sudo apt install php libapache2-mod-php php-mysql

Después de instalar PHP, cree el archivo info.php en la carpeta de documentos raíz de Apache. Normalmente, la carpeta de documentos raíz de Apache será /var/www/html//var/www/ en la mayoría de las distribuciones de Linux basadas en Debian. En Ubuntu 18.04 LTS, es /var/www/html/.

Creemos el archivo info.php en la carpeta raíz de Apache:

sudo vi /var/www/html/info.php

Agregue las siguientes líneas:

<?php
phpinfo();
?>

Presione la tecla ESC y escriba :wq para guardar y salir del archivo. Reinicie el servicio Apache para que los cambios surtan efecto.

sudo systemctl restart apache2
3.1 Probar PHP

Abra su navegador web y navegue hasta la URL http://IP-address/info.php.

Verá la página de prueba de php ahora.

pagina de prueba php

Normalmente, cuando un usuario solicita un directorio del servidor web, Apache primero buscará un archivo llamado index.html. Si desea cambiar Apache para que proporcione archivos php en lugar de otros, mueva index.php a la primera posición en el archivo dir.conf 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

Mueva el archivo "index.php" al primero. Una vez que haya realizado los cambios, su archivo dir.conf se verá como se muestra 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 la tecla ESC y escriba :wq para guardar y cerrar el archivo. Reinicie el servicio Apache para que los cambios surtan efecto.

sudo systemctl restart apache2
3.2 Instalar módulos PHP

Para mejorar la funcionalidad de PHP, puede instalar algunos módulos PHP adicionales.

Para enumerar 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 y presione la tecla ENTER.

Para encontrar los detalles de cualquier módulo php en particular, por ejemplo php-gd, ejecute:

sudo apt-cache show php-gd

Para instalar un módulo php ejecute:

sudo apt install php-gd

Para instalar todos los módulos (aunque no es necesario), ejecute:

sudo apt-get install php*

No olvide reiniciar el servicio Apache después de instalar cualquier 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.

A continuación, es posible que desee instalar cualquier herramienta de administración de bases de datos para administrar fácilmente las bases de datos a través de un navegador web. Si es así, instale phpMyAdmin como se describe en el siguiente enlace.

  • Instalar phpMyAdmin con LAMP Stack en Ubuntu 18.04 LTS

¡Felicidades! Hemos configurado con éxito la pila LAMP en el servidor Ubuntu 18.04 LTS.

Lea también:

  • Instalar la pila Nginx, MariaDB, PHP (LEMP) en Ubuntu 18.04 LTS
  • Instalar la pila Apache, MariaDB, PHP (LAMP) en Arch Linux
  • Instalar la pila Nginx, MariaDB, PHP (LEMP) en Arch Linux

Y eso es todo por ahora. Como puede ver, configurar la pila LAMP en Ubuntu es absolutamente fácil y directo.

Referencia:

  • Océano digital

Artículos relacionados