Búsqueda de sitios web

Cómo instalar la pila Linux, Apache, MySQL, PHP (LAMP) en Ubuntu 16.04


Introducción

La pila LAMP es un conjunto de software de código abierto que normalmente se instalan juntos para permitir que un servidor aloje sitios web y aplicaciones web dinámicos. Este término es 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 PHP procesa el contenido dinámico.

En esta guía, instalaremos una pila LAMP en un servidor Ubuntu 16.04. Ubuntu cumplirá con nuestro primer requisito: un sistema operativo Linux.

requisitos previos

Antes de comenzar con esta guía, debe tener una cuenta de usuario no root separada con privilegios de sudo configurada en su servidor. Puede aprender cómo hacer esto completando los pasos 1 a 4 en nuestro tutorial de configuración inicial del servidor para Ubuntu 16.04.

Paso 1: Instalar Apache y ajustar el cortafuegos

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

Podemos instalar Apache fácilmente usando el administrador de paquetes de Ubuntu, apt. Un administrador de paquetes nos permite instalar la mayoría del software sin problemas desde un repositorio mantenido por Ubuntu. Puede obtener más información sobre cómo usar apt aquí.

Para nuestros propósitos, podemos comenzar escribiendo estos comandos:

  1. sudo apt-get update
  2. sudo apt-get install apache2

Dado que estamos usando un comando sudo, 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án. Presione y y presione ENTER para continuar, y la instalación continuará.

Configuración de Global ServerName para suprimir advertencias de sintaxis

A continuación, agregaremos una sola línea al archivo /etc/apache2/apache2.conf para suprimir un mensaje de advertencia. Si bien es inofensivo, si no configura ServerName globalmente, recibirá la siguiente advertencia cuando verifique si hay errores de sintaxis en su configuración de Apache:

  1. sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Abra el archivo de configuración principal con su edición de texto:

  1. sudo nano /etc/apache2/apache2.conf

Dentro, en la parte inferior del archivo, agregue una directiva ServerName, que apunte a su nombre de dominio principal. Si no tiene un nombre de dominio asociado con su servidor, puede usar la dirección IP pública de su servidor:

Nota: Si no conoce la dirección IP de su servidor, pase a la sección sobre cómo encontrar la dirección IP pública de su servidor para encontrarla.

. . .
ServerName server_domain_or_IP

Guarde y cierre el archivo cuando haya terminado.

A continuación, compruebe si hay errores de sintaxis escribiendo:

  1. sudo apache2ctl configtest

Dado que agregamos la directiva global ServerName, todo lo que debería ver es:

Output
Syntax OK

Reinicie Apache para implementar sus cambios:

  1. sudo systemctl restart apache2

Ahora puede comenzar a ajustar el firewall.

Ajuste del cortafuegos para permitir el tráfico web

Luego, suponiendo que haya seguido las instrucciones de configuración inicial del servidor para habilitar el firewall UFW, asegúrese de que su firewall permita el tráfico HTTP y HTTPS. Puede asegurarse de que UFW tenga un perfil de aplicación para Apache así:

  1. sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Si observa el perfil de Apache Full, debería mostrar que habilita el tráfico a los puertos 80 y 443:

  1. sudo ufw app info "Apache Full"
Output
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

Permitir tráfico entrante para este perfil:

  1. sudo ufw allow in "Apache Full"

Puede hacer una verificación al azar de inmediato 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):

http://your_server_IP_address

Verá la página web predeterminada de Ubuntu 16.04 Apache, que está allí para fines informativos y de prueba. Debería verse algo como esto:

Si ve esta página, su servidor web ahora está correctamente instalado y accesible a través de su firewall.

Encontrar la dirección IP pública de su servidor

Si no sabe cuál es la dirección IP pública de su servidor, puede encontrarla de varias maneras. Por lo general, esta es la dirección que usa para conectarse a su servidor a través de SSH.

Desde la línea de comandos, puede encontrar esto de varias maneras. Primero, puede usar las herramientas iproute2 para obtener su dirección escribiendo esto:

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

Esto le devolverá dos o tres líneas. Todas son direcciones correctas, pero es posible que su computadora solo pueda usar una de ellas, así que siéntase libre de probar cada una.

Un método alternativo es usar la utilidad curl para contactar a una parte externa para decirle cómo esta ve su servidor. Puede hacer esto preguntando a un servidor específico cuál es su dirección IP:

  1. sudo apt-get install curl
  2. curl http://icanhazip.com

Independientemente del método que utilice para obtener su dirección IP, puede escribirla en la barra de direcciones de su navegador web para acceder a su servidor.

Paso 2: Instalar MySQL

Ahora que tenemos nuestro servidor web en funcionamiento, es hora de instalar MySQL. MySQL es un sistema de gestión de bases de datos. Básicamente, organizará y brindará acceso a bases de datos donde nuestro sitio puede almacenar información.

Nuevamente, podemos usar apt para adquirir e instalar nuestro software. Esta vez, también instalaremos otros paquetes \ayudantes que nos ayudarán a lograr que nuestros componentes se comuniquen entre sí:

  1. sudo apt-get install mysql-server

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

Nuevamente, se 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.

Durante la instalación, su servidor le pedirá que seleccione y confirme una contraseña para el usuario raíz de MySQL. Esta es una cuenta administrativa en MySQL que tiene mayores privilegios. Piense en ella como si fuera similar a la cuenta raíz del servidor mismo. (Sin embargo, la que está configurando ahora es una cuenta específica de MySQL.) Asegúrese de que sea una contraseña fuerte y única, y no la deje en blanco.

Cuando se complete la instalación, queremos ejecutar un script de seguridad simple que eliminará algunos valores predeterminados peligrosos y bloqueará un poco el acceso a nuestro sistema de base de datos. Inicie el script interactivo ejecutando:

  1. mysql_secure_installation

Se le pedirá que ingrese la contraseña que configuró para la cuenta raíz de MySQL. A continuación, se le preguntará si desea configurar el VALIDAR PASSWORD PLUGIN.

Advertencia: Habilitar esta función es algo así como una decisión de juicio. Si está habilitado, MySQL rechazará las contraseñas que no coincidan con los criterios especificados 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 seguras y únicas para las credenciales de la base de datos.

Responda y para sí, o cualquier otra cosa para continuar sin habilitar.

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:

Se le pedirá que seleccione un nivel de validación de contraseña. Tenga en cuenta que si ingresa 2, para el nivel más fuerte, recibirá errores cuando intente configurar 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 >= 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: 1

Si habilitó la validación de contraseña, se le mostrará la seguridad de la contraseña para la contraseña raíz existente y se le preguntará si desea cambiar esa contraseña. Si está satisfecho con su contraseña actual, ingrese n para \no” en el indicador:

Using existing password for root.

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

Para el resto de las preguntas, debe presionar Y y presionar la tecla Intro en cada indicación. 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 hemos realizado.

En este punto, su sistema de base de datos ya está configurado y podemos continuar.

Paso 3: Instalación de PHP

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

Una vez más podemos aprovechar el sistema apt para instalar nuestros componentes. También vamos a incluir algunos paquetes de ayuda, para que el código PHP pueda ejecutarse en el servidor Apache y comunicarse con nuestra base de datos MySQL:

  1. sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

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

En la mayoría de los casos, querremos modificar la forma en que Apache sirve los archivos cuando se solicita un directorio. Actualmente, si un usuario solicita un directorio del servidor, Apache primero buscará un archivo llamado index.html. Queremos decirle a nuestro servidor web que prefiera los archivos PHP, por lo que primero haremos que Apache busque 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:

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

Se verá así:

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Queremos mover el archivo de índice PHP resaltado arriba a la primera posición después de la especificación DirectoryIndex, así:

<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 Ctrl-X. Deberá confirmar el guardado escribiendo Y y luego presionar Enter para confirmar la ubicación para guardar el archivo.

Después de esto, debemos reiniciar el servidor web Apache para que se reconozcan nuestros cambios. Puedes hacer esto escribiendo esto:

  1. sudo systemctl restart apache2

También podemos verificar el estado del servicio apache2 usando systemctl:

  1. sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server. Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server... Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2 Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: * Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Instalar módulos PHP

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

Para ver las opciones disponibles para módulos y bibliotecas de PHP, puede canalizar los resultados de apt-cache search a less, un buscapersonas que le permite desplazarse por la salida de otros comandos. :

  1. apt-cache search php- | less

Utilice las teclas de flecha para desplazarse hacia arriba y hacia abajo y q para salir.

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

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Para obtener más información sobre lo que hace cada módulo, puede buscar en Internet o puede ver la descripción larga del paquete escribiendo:

  1. apt-cache show package_name

Habrá muchos resultados, con un campo llamado Description-en 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, podríamos escribir esto:

  1. apt-cache show php-cli

Junto con una gran cantidad de otra información, encontrará algo parecido a esto:

Output
… Description-en: 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 Debian's default PHP version (currently 7.0). …

Si, después de investigar, decide que desea instalar un paquete, puede hacerlo usando el comando apt-get install como lo hemos estado haciendo con nuestro otro software.

Si decidimos que php-cli es algo que necesitamos, podríamos escribir:

  1. sudo apt-get install php-cli

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

  1. sudo apt-get install package1 package2 ...

En este punto, su pila LAMP está instalada y configurada. Sin embargo, aún deberíamos probar nuestro PHP.

Paso 4: Probar el procesamiento de PHP en su servidor web

Para probar que nuestro sistema está configurado correctamente para PHP, podemos crear un script PHP muy básico.

Llamaremos a este script info.php. Para que Apache encuentre el archivo y lo sirva correctamente, debe guardarse en un directorio muy específico, que se denomina raíz web.

En Ubuntu 16.04, este directorio se encuentra en /var/www/html/. Podemos crear el archivo en esa ubicación escribiendo:

  1. sudo nano /var/www/html/info.php

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

<?php
phpinfo();
?>

Cuando haya terminado, guarde y cierre el archivo.

Ahora podemos probar si nuestro servidor web puede mostrar correctamente el contenido generado por un script PHP. Para probar esto, solo tenemos que visitar esta página en nuestro navegador web. Necesitará la dirección IP pública de su servidor nuevamente.

La dirección que desea visitar será:

http://your_server_IP_address/info.php

La página a la que llegas debería ser algo como esto:

Esta página básicamente le brinda información sobre su servidor desde la perspectiva de PHP. Es útil para la depuración y para garantizar que la configuración se aplique correctamente.

Si esto fue exitoso, entonces su PHP está funcionando como se esperaba.

Probablemente desee eliminar este archivo después de esta prueba porque en realidad podría brindar información sobre su servidor a usuarios no autorizados. Para hacer esto, puede escribir esto:

  1. sudo rm /var/www/html/info.php

Siempre puede volver a crear esta página si necesita acceder a la información nuevamente más adelante.

Conclusión

Ahora que tiene una pila LAMP instalada, tiene muchas opciones sobre 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 seguras, sirviéndolas 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:

  • Instala Wordpress, el sistema de administración de contenido más popular en Internet.
  • Configure PHPMyAdmin para ayudar a administrar sus bases de datos MySQL desde el navegador web.
  • Obtenga más información sobre MySQL para administrar sus bases de datos.
  • Aprenda a usar SFTP para transferir archivos hacia y desde su servidor.