Cómo instalar Linux, Apache, MySQL, PHP (LAMP) stack en Ubuntu 18.04

publicado en: Articles | 0

una versión anterior de este tutorial fue escrita por Brennan Bearnes.

Introducción

una pila «LAMP» es un grupo de software de código abierto que normalmente se instala junto para permitir que un servidor aloje sitios web dinámicos y aplicaciones web. Este término es en realidad un acrónimo que representa el sistema operativo Linux, con el servidor Web Apache. Los datos del sitio se almacenan en una base de datos MySQL, y el contenido dinámico es procesado por PHP.

en esta guía, instalaremos una pila LAMP en un servidor Ubuntu 18.04.,

requisitos previos

para completar este tutorial, deberá tener un servidor Ubuntu 18.04 con una cuenta de usuario habilitada para sudoy un firewall básico. Esto se puede configurar usando nuestra guía de configuración inicial del servidor para Ubuntu 18.04.

Paso 1 — Instalación de Apache y actualización del Firewall

El Servidor Web Apache se encuentra entre los servidores web más populares del mundo. Está bien documentado y ha sido ampliamente utilizado durante gran parte de la historia de la web, lo que lo convierte en una excelente opción predeterminada para alojar un sitio web.,

instale Apache usando el administrador de paquetes de Ubuntu,apt:

  • sudo apt update
  • sudo apt install apache2

dado que este es un comandosudo, estas operaciones se ejecutan con privilegios de root. Le pedirá la contraseña de su usuario habitual para verificar sus intenciones.

una vez que haya ingresado su contraseña, apt le dirá qué paquetes planea instalar y cuánto espacio adicional en disco ocupará. Pulse Y y presione ENTER para continuar, y la instalación continuará.,

Ajuste el Firewall para permitir el tráfico Web

a continuación, asumiendo que ha seguido las instrucciones iniciales de configuración del servidor y ha habilitado el firewall de UFW, asegúrese de que su firewall permite el tráfico HTTP y HTTPS.,LD muestra que habilita el tráfico a los puertos 80 y 443:

  • sudo ufw app info "Apache Full"
Output
Profile: Apache FullTitle: Web Server (HTTP,HTTPS)Description: Apache v2 is the next generation of the omnipresent Apache webserver.Ports: 80,443/tcp

permitir el tráfico HTTP y HTTPS entrante para este perfil:

  • sudo ufw allow in "Apache Full"

puede hacer una comprobación inmediata para verificar que todo salió según lo planeado visitando la dirección IP pública de su servidor en su navegador web (consulte la nota debajo del siguiente encabezado para averiguar cuál es su dirección IP Pública si no tiene esta información ya):

You will see the default Ubuntu 18.04 Apache web page, which is there for informational and testing purposes. It should look something like this:

If you see this page, then your web server is now correctly installed and accessible through your firewall.

How To Find your Server’s Public IP Address

If you do not know what your server’s public IP address is, there are a number of ways you can find it. Usually, this is the address you use to connect to your server through SSH.

There are a few different ways to do this from the command line. First, you could use the iproute2 tools to get your IP address by typing this:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

esto le dará dos o tres líneas de vuelta., Todas son direcciones correctas, pero su computadora solo puede usar una de ellas, así que siéntase libre de probar cada una.

un método alternativo es usar la utilidad curl para ponerse en contacto con una parte externa para decirle cómo ve su servidor. Esto se hace preguntando a un servidor específico Cuál es su dirección IP:

  • sudo apt install curl
  • curl http://icanhazip.com

independientemente del método que use para obtener su dirección IP, escríbala en la barra de direcciones de su navegador web para ver la página predeterminada de Apache.,

Paso 2-Instalación de MySQL

ahora que tiene su servidor web en funcionamiento, es hora de instalar MySQL. MySQL es un sistema de gestión de bases de datos. Básicamente, organizará y proporcionará acceso a bases de datos donde su sitio puede almacenar información.

de Nuevo, el uso de apt adquirir e instalar este software:

  • sudo apt install mysql-server

Nota: En este caso, usted no tiene que ejecutar sudo apt update antes del comando. Esto se debe a que recientemente lo ejecutó en los comandos anteriores para instalar Apache., El índice de paquetes en su computadora ya debe estar actualizado.

Este comando también le mostrará una lista de los paquetes que se instalarán, junto con la cantidad de espacio en disco que ocuparán. Introduzca Y para continuar.

cuando se complete la instalación, ejecute un script de seguridad simple que viene preinstalado con MySQL que eliminará algunos valores predeterminados peligrosos y bloqueará el acceso a su sistema de base de datos. Inicio interactiva de la secuencia de comandos ejecutando:

  • sudo mysql_secure_installation

Esto le preguntará si desea configurar el VALIDATE PASSWORD PLUGIN.,

Nota: habilitar esta función es algo así como una llamada de juicio. Si está habilitado, las contraseñas que no coinciden con los criterios especificados serán rechazadas por MySQL con un error. Esto causará problemas si usa una contraseña débil junto con un software que configura automáticamente las credenciales de usuario de MySQL, como los paquetes de Ubuntu para phpMyAdmin. Es Seguro dejar la validación deshabilitada, pero siempre debe usar contraseñas fuertes y únicas para las credenciales de la base de datos.

AnswerY for yes, or anything else to continue without enabling.,

VALIDATE PASSWORD PLUGIN can be used to test passwordsand improve security. It checks the strength of passwordand allows the users to set only those passwords which aresecure enough. Would you like to setup VALIDATE PASSWORD plugin?Press y|Y for Yes, any other key for No:

Si responde «sí», se le pedirá que seleccione un nivel de validación de contraseña. Tenga en cuenta que si introduce 2 para el nivel más fuerte, recibirá errores al intentar establecer cualquier contraseña que no contenga números, letras mayúsculas y minúsculas y caracteres especiales, o que se base en palabras comunes del diccionario.

There are three levels of password validation policy:LOW Length >= 8MEDIUM Length >= 8, numeric, mixed case, and special charactersSTRONG Length >= 8, numeric, mixed case, special characters and dictionary filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

independientemente de si eligió configurar el VALIDATE PASSWORD PLUGIN, su servidor le pedirá que seleccione y confirme una contraseña para el usuario root de MySQL., Esta es una cuenta administrativa en MySQL que ha aumentado los privilegios. Piense que es similar a la cuenta raíz del propio servidor (aunque la que está configurando ahora es una cuenta específica de MySQL). Asegúrese de que esta es una contraseña fuerte y única, y no la deje en blanco.

si habilitó la validación de contraseña, se le mostrará la fuerza de la contraseña para la contraseña raíz que acaba de ingresar y su servidor le preguntará si desea cambiar esa contraseña., Si está satisfecho con su contraseña actual, ingrese N para «no» en el mensaje:

Using existing password for root.Estimated strength of the password: 100Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

para el resto de las preguntas, presione Y y presione ENTER clave en cada mensaje. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, deshabilitará los inicios de sesión raíz remotos y cargará estas nuevas reglas para que MySQL respete inmediatamente los cambios que haya realizado.

tenga en cuenta que en sistemas Ubuntu se ejecuta MySQL 5.,7 (y versiones posteriores), el usuario raíz de MySQL está configurado para autenticarse usando el complemento auth_socket por defecto en lugar de con una contraseña. Esto permite una mayor seguridad y usabilidad en muchos casos, pero también puede complicar las cosas cuando necesita permitir que un programa externo (por ejemplo, phpMyAdmin) acceda al usuario.

si prefiere usar una contraseña al conectarse a MySQL como root, deberá cambiar su método de autenticación de auth_socket a mysql_native_password., Para hacer esto, abra el mensaje de MySQL desde su terminal:

  • sudo mysql

a continuación, verifique qué método de autenticación usa cada una de sus cuentas de usuario MySQL con el siguiente comando:

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

en este ejemplo, puede ver que el usuario root de hecho se autentica usando el auth_socket plugin. Para configurar la cuenta raíz para que se autentique con una contraseña, ejecute el siguiente comando ALTER USER., Asegúrese de cambiar password a una contraseña segura de su elección:

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

luego, ejecute FLUSH PRIVILEGES que le dice al servidor que vuelva a cargar las tablas de concesión y ponga en efecto sus nuevos cambios:

  • FLUSH PRIVILEGES;

compruebe de nuevo los métodos de autenticación empleados por cada uno de sus usuarios para confirmar que root ya no se autentica usando el auth_socket plugin:

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

puede ver en este ejemplo que el usuario root MySQL ahora se autentica usando una contraseña., Una vez que confirme esto en su propio servidor, puede salir del shell de MySQL:

  • exit

en este punto, su sistema de base de datos está configurado y puede pasar a instalar PHP, el componente final de la pila de LAMP.

Paso 3 — Instalación de PHP

PHP es el componente de su configuración que procesará el código para mostrar contenido dinámico. Puede ejecutar scripts, conectarse a sus bases de datos MySQL para obtener información y entregar el contenido procesado a su servidor web para mostrarlo.

Una vez más, aproveche el sistema apt para instalar PHP., Además, incluya algunos paquetes de Ayuda Esta vez para que el código PHP pueda ejecutarse bajo el servidor Apache y hablar con su base de datos MySQL:

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

esto debería instalar PHP sin ningún problema. Probaremos esto en un momento.

en la mayoría de los casos, querrá modificar la forma en que Apache sirve los archivos cuando se solicita un directorio. Actualmente, si un usuario solicita un directorio del servidor, Apache buscará primero un archivo llamado index.html., Queremos decirle al servidor web que prefiera archivos PHP sobre otros, así que haga que Apache busque primero un archivo index.php.

para hacer esto, escriba este comando para abrir el archivo dir.conf en un editor de texto con privilegios de root:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

se verá así:

/etc/apache2/mods-enabled / dir.conf
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</IfModule>

mueva el archivo de índice PHP (resaltado arriba) a la primera posición después de la especificaciónDirectoryIndex, como esto:

/etc/apache2/mods-enabled / dir.,conf
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm</IfModule>

Cuando haya terminado, guarde y cierre el archivo presionando el CTRL+X. Confirme el guardado escribiendo Yy luego presione ENTER para verificar la ubicación de guardado del archivo.

después de esto, reinicie el servidor Web Apache para que sus cambios sean reconocidos., Hacer esto escribiendo esto:

  • sudo systemctl restart apache2

también puede comprobar el estado de la etiqueta apache2 servicio de uso de systemctl:

  • sudo systemctl status apache2

Presione Q para salir de este estado de la salida.

para mejorar la funcionalidad de PHP, tiene la opción de instalar algunos módulos adicionales., Para ver las opciones disponibles para los módulos y bibliotecas PHP, canalice los resultados de apt search a less, un buscapersonas que le permite desplazarse por la salida de otros comandos:

  • apt search php- | less

Use las teclas de flecha para desplazarse hacia arriba y hacia abajo, y presione Q para salir.

los resultados son todos Componentes opcionales que puede instalar. Le dará una breve descripción de cada uno:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64 Tracks usage of TCP/IP and builds html files with graphsbluefish/bionic 2.2.10-1 amd64 advanced Gtk+ text editor for web and software developmentcacti/bionic 1.1.38+ds1-1 all web interface for graphing of monitoring systemsganglia-webfrontend/bionic 3.6.1-3 all cluster monitoring toolkit - web front-endgolang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all PHP-like Compression and Archive Extensions in Gohaserl/bionic 0.9.35-2 amd64 CGI scripting program for embedded environmentskdevelop-php-docs/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-phpkdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-php-l10n…:

para obtener más información sobre lo que hace cada módulo, puede buscar en internet para obtener más información sobre ellos., Alternativamente, mira la descripción larga del paquete escribiendo:

  • apt show package_name

habrá una gran cantidad de salida, con un campo llamado Description que tendrá una explicación más larga de la funcionalidad que proporciona el módulo.,

por ejemplo, para averiguar qué hace el módulo php-cli, puede escribir esto:

  • apt show php-cli

junto con una gran cantidad de otra información, encontrará algo que se parece a esto:

Output
…Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Ubuntu's default PHP version (currently 7.2).…

Si, después de investigar, usted decide que desea instalar un paquete, puede hacerlo utilizando el comando apt install como lo ha estado haciendo para el otro software.,

si ha decidido que php-cli es algo que necesita, puede escribir:

  • sudo apt install php-cli

Si desea instalar más de un módulo, puede hacerlo listando cada uno, separado por un espacio, siguiendo el comando apt install, así:

  • sudo apt install package1 package2 ...

en este punto, su pila de lámparas está instalada y configurada. Antes de hacer cualquier otra cosa, le recomendamos que configure un host virtual Apache donde pueda almacenar los detalles de configuración de su servidor.,

Paso 4-Configuración de Hosts virtuales (recomendado)

al usar el servidor Web Apache, puede usar hosts virtuales (similares a los bloques de servidor en Nginx) para encapsular detalles de configuración y alojar más de un dominio desde un solo servidor. Configuraremos un dominio llamado your_domain, pero debes reemplazarlo con tu propio nombre de dominio. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulte nuestra introducción a DigitalOcean DNS.

Apache en Ubuntu 18.,04 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para servir documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede volverse difícil de manejar si está alojando varios sitios. En lugar de modificar /var/www/html, vamos a crear una estructura de directorios dentro de /var/www para nuestro sitio your_domain, dejando /var/www/html en su lugar como el directorio predeterminado para ser servido si una solicitud de cliente no coincide con ningún otro sitio.,su_dominio de la siguiente manera:

sudo mkdir /var/www/your_domain

a continuación, asigne la propiedad del directorio con la variable de entorno $USER:

  • sudo chown -R $USER:$USER /var/www/your_domain

los permisos de sus raíces web deben ser correctos si no ha modificado su unmask valor, pero puede asegurarse escribiendo:

  • sudo chmod -R 755 /var/www/your_domain

a continuación, cree una página de muestra index.html usando nano o su editor favorito:

  • nano /var/www/your_domain/index.html

dentro, agregue el siguiente HTML de ejemplo:

/var/www/your_domain/index.,html
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain server block is working!</h1> </body></html>

Guarde y cierre el archivo cuando haya terminado.

para que Apache sirva este contenido, es necesario crear un archivo de host virtual con las directivas correctas. En lugar de modificar el archivo de configuración predeterminado ubicado en /etc/apache2/sites-available/000-default.conf directamente, hagamos uno nuevo en /etc/apache2/sites-available/your_domain.conf:

  • sudo nano /etc/apache2/sites-available/your_domain.conf

pegue en el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para nuestro nuevo directorio y nombre de dominio:

/etc/apache2/sites-disponible/su_dominio.,conf

observe que hemos actualizado DocumentRoot a nuestro nuevo directorio y ServerAdmin a un correo electrónico al que el administrador del sitio your_domain puede acceder. También hemos añadido dos directivas: ServerName, que establece el dominio base que debe coincidir con esta definición de host virtual, y ServerAlias, que define otros nombres que deben coincidir como si fueran el nombre base.

Guarde y cierre el archivo cuando haya terminado.,

Vamos a habilitar el archivo con el a2ensite herramienta:

  • sudo a2ensite your_domain.conf

Deshabilitar la página por defecto definida en 000-default.conf:

  • sudo a2dissite 000-default.conf

a continuación, vamos a probar por errores de configuración:

  • sudo apache2ctl configtest

Usted debe ver la siguiente salida:

Output
Syntax OK

Reiniciar Apache para implementar los cambios:

  • sudo systemctl restart apache2

Apache ahora atiende a su nombre de dominio., Usted puede probar esto yendo a , donde se debería ver algo como esto:

Con eso, host virtual es completamente. Sin embargo, antes de hacer más cambios o desplegar una aplicación, sería útil probar proactivamente su configuración de PHP en caso de que haya algún problema que deba abordarse.

Paso 5-probando el procesamiento de PHP en su servidor web

para probar que su sistema está configurado correctamente para PHP, cree un script PHP muy básico llamado info.php., Para que Apache encuentre este archivo y lo sirva correctamente, debe guardarse en su directorio raíz web.

cree el archivo en la raíz web que creó en el paso anterior ejecutando:

  • sudo nano /var/www/your_domain/info.php

esto abrirá un archivo en blanco. Agregue el siguiente texto, que es código PHP válido, dentro del archivo:

info.php
<?phpphpinfo();?>

Cuando haya terminado, guarde y cierre el archivo.

ahora puede probar si su servidor web es capaz de mostrar correctamente el contenido generado por este script PHP. Para probar esto, visite esta página en su navegador web., Necesitará la dirección IP pública de su servidor de nuevo.

la dirección que querrá visitar es:

The page that you come to should look something like this:

This page provides some basic information about your server from the perspective of PHP. It is useful for debugging and to ensure that your settings are being applied correctly.

If you can see this page in your browser, then your PHP is working as expected.

You probably want to remove this file after this test because it could actually give information about your server to unauthorized users. To do this, run the following command:

  • sudo rm /var/www/your_domain/info.php

siempre puede volver a crear esta página si necesita acceder a la información de nuevo más tarde.

conclusión

ahora que tiene una pila de lámparas instalada, tiene muchas opciones para qué hacer a continuación. Básicamente, ha instalado una plataforma que le permitirá instalar la mayoría de los tipos de sitios web y software web en su servidor.

como siguiente paso inmediato, debe asegurarse de que las conexiones a su servidor web estén protegidas, al servirlas a través de HTTPS., La opción más fácil aquí es usar Let’s Encrypt para proteger su sitio con un certificado TLS/SSL gratuito.

algunas otras opciones populares son:

  • instalar WordPress el sistema de gestión de contenidos más popular en internet.
  • configure PHPMyAdmin para ayudar a administrar sus bases de datos MySQL desde el navegador web.
  • Aprenda a usar SFTP para transferir archivos desde y hacia su servidor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *