Cómo instalar 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 instala en conjunto 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 el contenido dinámico se procesa mediante PHP .
En esta guía, instalaremos una pila LAMP en un servidor Ubuntu 16.04. Ubuntu cumplirá con nuestro primer requisito: un sistema operativo Linux.
Prerrequisitos
Antes de comenzar con esta guía, debe tener una cuenta de usuario independiente, no rootsudo
, con privilegios configurados en su servidor. Puede aprender a hacerlo completando los pasos 1 a 4 de nuestro tutorial de configuración inicial del servidor para Ubuntu 16.04 .
Paso 1: Instalación de Apache y ajuste del firewall
El servidor web Apache es uno de 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. Puedes aprender más sobre cómo usarloapt
aquí.
Para nuestros propósitos, podemos comenzar escribiendo estos comandos:
- sudo apt-get update
- sudo apt-get install apache2
Dado que estamos usando un sudo
comando, estas operaciones se ejecutan con privilegios de root . Te pedirá la contraseña de tu usuario habitual para verificar tus intenciones.
Una vez que haya ingresado su contraseña, apt
le indicará qué paquetes planea instalar y cuánto espacio adicional en disco ocuparán. Presione y
y seleccione ENTER
Continuar y la instalación se realizará.
Configuración de Global ServerName para suprimir las advertencias de sintaxis
A continuación, agregaremos una sola línea al /etc/apache2/apache2.conf
archivo para suprimir un mensaje de advertencia. Si bien es inofensivo, si no lo configura ServerName
de manera global, recibirá la siguiente advertencia al verificar su configuración de Apache para detectar errores de sintaxis:
- sudo apache2ctl configtest
OutputAH00558: 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 messageSyntax OK
Abra el archivo de configuración principal con su edición de texto:
- sudo nano /etc/apache2/apache2.conf
Dentro, en la parte inferior del archivo, agregue una ServerName
directiva 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, salte a la sección sobre cómo encontrar la dirección IP pública de su servidor para encontrarla.
/etc/apache2/apache2.conf
. . .ServerName server_domain_or_IP
Guarde y cierre el archivo cuando haya terminado.
A continuación, compruebe si hay errores de sintaxis escribiendo lo siguiente:
- sudo apache2ctl configtest
Desde que agregamos la ServerName
directiva global, todo lo que debería ver es:
OutputSyntax OK
Reinicie Apache para implementar los cambios:
- sudo systemctl restart apache2
Ahora puedes comenzar a ajustar el firewall.
Cómo ajustar el firewall para permitir el tráfico web
A continuación, suponiendo que haya seguido las instrucciones de configuración inicial del servidor para habilitar el firewall de 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 de la siguiente manera:
- sudo ufw app list
OutputAvailable applications: Apache Apache Full Apache Secure OpenSSH
Si observa el Apache Full
perfil, debería mostrar que permite el tráfico a los puertos 80 y 443:
- sudo ufw app info "Apache Full"
OutputProfile: Apache FullTitle: Web Server (HTTP,HTTPS)Description: Apache v2 is the next generation of the omnipresent Apache webserver.Ports: 80,443/tcp
Permitir tráfico entrante para este perfil:
- sudo ufw allow in "Apache Full"
Puede hacer una verificació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 (vea la nota debajo del siguiente encabezado para averiguar cuál es su dirección IP pública si aún no tiene esta información):
http://your_server_IP_address
Verá la página web predeterminada de Apache en Ubuntu 16.04, que está ahí con fines informativos y de prueba. Debería verse así:
Si ve esta página, entonces su servidor web ahora está instalado correctamente y es accesible a través de su firewall.
Cómo 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, existen varias formas de averiguarla. Por lo general, esta es la dirección que utiliza para conectarse a su servidor a través de SSH.
Desde la línea de comandos, puedes encontrar esto de varias formas. Primero, puedes usar las iproute2
herramientas para obtener tu dirección escribiendo lo siguiente:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'
Esto te dará dos o tres líneas de retorno. Todas son direcciones correctas, pero es posible que tu computadora solo pueda usar una de ellas, así que prueba cada una.
Un método alternativo es utilizar la curl
utilidad para ponerse en contacto con un tercero que le diga cómo ve su servidor. Puede hacerlo preguntando a un servidor específico cuál es su dirección IP:
- sudo apt-get install curl
- 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: Instalación de 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, se encargará de organizar y proporcionar acceso a las bases de datos donde nuestro sitio puede almacenar información.
Nuevamente, podemos utilizar apt
para adquirir e instalar nuestro software. Esta vez, también instalaremos otros paquetes “auxiliares” que nos ayudarán a lograr que nuestros componentes se comuniquen entre sí:
- sudo apt-get install mysql-server
Nota : En este caso, no es necesario ejecutar sudo apt-get update
el comando antes. Esto se debe a que lo ejecutamos recientemente 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. Ingrese Y para continuar.
Durante la instalación, el servidor le solicitará que seleccione y confirme una contraseña para el usuario “root” de MySQL. Se trata de una cuenta administrativa de MySQL que tiene más privilegios. Piense en ella como si fuera similar a la cuenta root del servidor (sin embargo, la que está configurando ahora es una cuenta específica de MySQL). Asegúrese de que sea una contraseña segura 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:
- mysql_secure_installation
Se le solicitará que ingrese la contraseña que estableció para la cuenta raíz de MySQL. A continuación, se le preguntará si desea configurar el VALIDATE PASSWORD PLUGIN
.
Advertencia: habilitar esta función es una cuestión de criterio. Si se habilita, MySQL rechazará las contraseñas que no coincidan con los criterios especificados y generará un error. Esto causará problemas si utiliza 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 utilizar 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 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:
Se le solicitará que seleccione un nivel de validación de contraseña. Tenga en cuenta que si ingresa 2 , para el nivel más seguro, recibirá errores al intentar configurar una 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
Si habilitó la validación de contraseña, se le mostrará el nivel de seguridad de la contraseña raíz actual y se le preguntará si desea cambiarla. Si está conforme 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, deberá presionar Y y pulsar la tecla Enter en cada mensaje. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, deshabilitará los inicios de sesión remotos como root 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 su visualización.
Podemos volver a aprovechar el apt
sistema 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:
- sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Esto debería instalar PHP sin problemas. Lo probaremos 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 indicarle a nuestro servidor web que prefiera los archivos PHP, por lo que haremos que Apache busque un index.php
archivo primero.
Para ello, escriba este comando para abrir el dir.conf
archivo 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
Queremos mover el archivo de índice PHP resaltado arriba a la primera posición después de la DirectoryIndex
especificación, de esta manera:
/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 hayas terminado, guarda y cierra el archivo presionando Ctrl-X . Deberás confirmar el guardado escribiendo Y y luego presionar Enter para confirmar la ubicación de guardado del archivo.
Después de esto, debemos reiniciar el servidor web Apache para que se reconozcan nuestros cambios. Puedes hacerlo escribiendo lo siguiente:
- sudo systemctl restart apache2
También podemos comprobar el estado del apache2
servicio mediante systemctl
:
- 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 startApr 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 apache2Apr 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 'ServerNamApr 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, podemos instalar opcionalmente algunos módulos adicionales.
Para ver las opciones disponibles para los módulos y bibliotecas PHP, puede canalizar los resultados de apt-cache search
a less
, un paginador que le permite desplazarse por la salida de otros comandos:
- 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 componentes opcionales que puedes instalar. Te dará una breve descripción de cada uno:
libnet-libidn-perl - Perl bindings for GNU Libidnphp-all-dev - package depending on all supported PHP development packagesphp-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 packagesphp-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 consultar la descripción larga del paquete escribiendo:
- apt-cache show package_name
Habrá una gran cantidad de 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 saber qué php-cli
hace el módulo, podríamos escribir esto:
- 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 utilizando el apt-get install
comando como lo hemos estado haciendo con nuestro otro software.
Si decidimos que php-cli
es algo que necesitamos, podríamos escribir:
- sudo apt-get install php-cli
Si desea instalar más de un módulo, puede hacerlo enumerando cada uno, separado por un espacio, después del apt-get install
comando, de la siguiente manera:
- sudo apt-get install package1 package2 ...
En este punto, la pila LAMP está instalada y configurada. Sin embargo, todavía debemos probar nuestro PHP.
Paso 4: Prueba del procesamiento PHP en tu servidor web
Para probar que nuestro sistema está configurado correctamente para PHP, podemos crear un script PHP muy básico.
A este script lo llamaremos info.php
. Para que Apache pueda encontrar el archivo y entregarlo correctamente, debe estar guardado en un directorio muy específico, que se llama web root .
En Ubuntu 16.04, este directorio se encuentra en /var/www/html/
. Podemos crear el archivo en esa ubicación escribiendo:
- sudo nano /var/www/html/info.php
Esto abrirá un archivo en blanco. Queremos poner el siguiente texto, que es código PHP válido, dentro del archivo:
información.php
?phpphpinfo();?
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 comprobarlo, solo tenemos que visitar esta página en nuestro navegador web. Necesitaremos nuevamente la dirección IP pública de nuestro servidor.
La dirección que desea visitar será:
http://your_server_IP_address/info.php
La página a la que accedas debería verse así:
Esta página básicamente le brinda información sobre su servidor desde la perspectiva de PHP. Es útil para depurar y garantizar que sus configuraciones se apliquen correctamente.
Si esto tuvo éxito, entonces su PHP está funcionando como se esperaba.
Probablemente desees eliminar este archivo después de esta prueba porque podría brindar información sobre tu servidor a usuarios no autorizados. Para ello, puedes escribir lo siguiente:
- sudo rm /var/www/html/info.php
Siempre puedes volver a crear esta página si necesitas acceder a la información nuevamente más tarde.
Conclusión
Ahora que tiene una pila LAMP instalada, tiene muchas opciones para decidir 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 sean seguras, brindándolas mediante HTTPS. La opción más sencilla en este caso es utilizar Let’s Encrypt para proteger su sitio con un certificado TLS/SSL gratuito.
Algunas otras opciones populares son:
- Instale 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.
- Conozca más sobre MySQL para administrar sus bases de datos.
- Aprenda a utilizar SFTP para transferir archivos hacia y desde su servidor.
Deja una respuesta