El sistema de infraestructura LAMP es un grupo de software de código abierto que utiliza las tecnologías Linux, Apache, MySQL y PHP, éstas forman el acrónimo LAMP. La combinación de estas tecnologías se utiliza para levantar y mantener en ejecución un servidor Web. Esta guía explica cómo instalar y probar LAMP en un equipo con Ubuntu 16.04
Nota:
Esta guía está escrita para un usuario no root. Los comando que requieren privilegios elevados están precedidos por sudo
. También tenga en cuenta que debe remplazar las ocurrencias de www.ejemplo.com
y de ejemplo.com
con su nombre de dominio real.
Instale Apache 2.4 desde el repositorio de Ubuntu:
sudo apt-get install apache2
Edite el archivo de configuración de Apache: apache2.conf
para cambiar el parámetro de configuración KeepAlive
:
KeepAlive Off
El módulo de multiprocesamiento (MPM) predeterminado de Apache es el módulo de eventos, pero por defecto PHP usa el módulo prefork. Abra el archivo mpm_prefork.conf
, ubicado en la ruta /etc/apache2/mods-
y edite la configuración. A continuación están los valores sugeridos para un servidor con 2GB de memoria RAM:
Archivo: /etc/apache2/mods-available/mpm_prefork.conf
<IfModule mpmpreforkmodule>
StartServers 4
MinSpareServers 20
MaxSpareServers 40
MaxRequestWorkers 200
MaxConnectionsPerChild 4500
</IfModule>
Habilite el módulo de evento y habilite el módulo prefork:
sudo a2dismod mpmevent
sudo a2enmod mpmprefork
Reinicie Apache:
sudo systemctl restart apache2
Puede configurar hosts virtuales de distintas formas; sin embargo, el siguiente método es el más recomendado. Por defecto, Apache escucha en todas las direcciones IP disponibles. Para todos los pasos siguientes, remplace ejemplo.com
con su nombre de dominio real.
Cree una copia del archivo de configuración predeterminado de Apache para su sitio:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ejemplo.com.conf
Edite el nuevo archivo de configuración ejemplo.com.conf
quitando el comentario de ServerName
y remplazando ejemplo.com
con la dirección IP o nombre de dominio completamente calificado (FQDN). Ingrese la ruta del documento raíz y los directorios de logs como se muestra a continuación y agregue un bloque Directory
antes de la etiqueta <VirtualHost>
:
Archivo: /etc/apache2/sites-available/ejemplo.com.conf
<Directory /var/www/html/ejemplo.com/publichtml>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName ejemplo.com
ServerAlias www.ejemplo.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/ejemplo.com/publichtml
ErrorLog /var/www/html/ejemplo.com/logs/error.log
CustomLog /var/www/html/ejemplo.com/logs/access.log combined
</VirtualHost>
Nota:
Por motivos de brevedad, el archivo de ejemplo de arriba omite todas las secciones comentadas; puede mantener o eliminar las secciones comentadas según su consideración.
La directiva ServerAlias
le permite incluir varios nombres de dominio o subdominios para un único host. El ejemplo arriba les permite a los visitantes usar ejemplo.com
o www.ejemplo.com
para navegar a este host virtual.
Ahora cree los directorios a los cuales se hace referencia arriba:
sudo mkdir -p /var/www/html/ejemplo.com/{public_html,logs}
Enlace el archivo del host virtual desde el directorio sites-available
hacia el directorio sites-enabled
:
sudo a2ensite ejemplo.com.conf
Nota:
Si necesita desactivar su sitio web, ejecute:
a2dissite ejemplo.com.conf
Deshabilite el host virtual predeterminado para minimizar los riesgos de seguridad:
sudo a2dissite 000-default.conf
Vuelva a cargar Apache:
sudo systemctl reload apache2
El hosting virtual debería estar activado. Para permitir que el host virtual use su nombre de dominio, asegúrese de que tiene configurados los servicios DNS para que su dominio apunte a la dirección IP de su {{hosting_name}}.
Si hay sitios web adicionales que le gustaría alojar en su {{hosting_name}}, repita los pasos anteriores para agregar una carpeta y un archivo de configuración para cada uno de estos sitios.
Instale el paquete mysql-server
y selecciona una contraseña segura cuando se le pida:
sudo apt-get install mysql-server
Inicie sesión en su MySQL
mysql -u root -p
Ingrese la contraseña root de MySQL que creó al momento de la instalación, luego ingresará a la línea de comandos MySQL.
Si no se coloca ninguna contraseña en la sección anterior, o si usted quiere cambiar la contraseña para el usuario root, ejecute el siguiente comando. Remplace contraseña
con una nueva contraseña root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysqlnativepassword' BY 'contraseña';
Cree una base de datos y un usuario con los permisos correspondientes. En este ejemplo, la base de datos se llama datosweb
, el usuario usuarioweb
y la contraseña está indicada como SuContraseña
:
CREATE DATABASE datosweb;
GRANT ALL ON datosweb.* TO 'usuarioweb' IDENTIFIED BY 'SuContraseña';
Salga de MySQL:
quit
Instale PHP, la extensión de PHP y el repositorio de aplicación, el soporte para Apache y el soporte para MySQL:
sudo apt-get install php7.0 php-pear libapache2-mod-php7.0 php7.0-mysql
De forma opcional, instale el soporte adicional para cURL, JSON y CGI:
sudo apt-get install php7.0-curl php7.0-json php7.0-cgi
Una vez que PHP 7.0 esté instalado, edite el archivo de configuración ubicado en /etc/php/7.0/apache2/php.ini
para habilitar errores más descriptivos, mejorar los registros de errores y el desempeño. Las siguientes modificaciones proveen un buen punto de partido:
Extracto del archivo: /etc/php/7.0/apache2/php.ini
maxinputtime = 30
errorreporting = ECOMPILEERROR | ERECOVERABLEERROR | EERROR | ECOREERROR
error_log = /var/log/php/error.log
Nota:
El inicio del archivo php.ini
contiene ejemplos comentados (incluyen un punto y coma al inicio ;
), los cuales desactivan estas directivas. Asegúrese de que las líneas que modifique en este paso estén después de la sección de ejemplos. También recuerde no comentar estas líneas.
Cree el directorio de registro de errores para PHP y otorgue la propiedad correspondiente al usuario Apache en el sistema:
sudo mkdir /var/log/php
sudo chown www-data /var/log/php
Reinicie Apache:
sudo systemctl restart apache2
En esta sección, crearemos una página de prueba que sirve para demostrar si Apache puede interpretar los comandos PHP y conectarse a una base de datos MySQL. Esto puede ser útil para ubicar la fuente de errores si alguno de los elementos de su infraestructura LAMP no se está comunicando con los otros.
Pegue el siguiente código en un archivo nuevo llamado phptest.php
en el directorio public_html
. Modifique los valores de usuarioweb
y SuContraseña
para que coincidan con la información real ingresada en la sección de creación de la base de datos MySQL (vista anteriormente):
Extracto del archivo: /var/www/html/ejemplo.com/public_html/phptest.php:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>';
// En la sección de variables a continuación, remplace el usuario y contraseña con los valores reales de las credenciales MySQL en su servidor
$servername = "localhost";
$username = "usuarioweb";
$password = "SuContraseña";
// Se crea una conexión MySQL
$conn = mysqliconnect($servername, $username, $password);
// Se comprueba la conexión - si falla, la salida incluirá un mensaje de eror
if (!$conn) {
die('<p>La conexión fue incorrecta: <p>' . mysqliconnect_error());
}
echo '<p>¡Se ha conectado con éxito!</p>';
?>
</body>
</html>
Navegue a la ubicación ejemplo.com/phptest.php
de su máquina local. Si los componentes de su infraestructura LAMP están funcionando correctamente, el navegador mostrará un mensaje que indica: "¡Se ha conectado con éxito!". Si no, la salida será un mensaje de error ("La conexión fue incorrecta").
Si el sitio no carga en lo absoluto, verifique si Apache está en ejecución y reinícielo si es necesario:
systemctl status apache2
sudo systemctl restart apache2
Si el sitio carga, pero muestra la página predeterminada de Apache, vuelva a la sección de configuración de hosts virtuales de arriba y verifique que el DocumentRoot
coincida con su carpeta ejemplo.com/public_html
.
Si la página devuelve una página con un mensaje Index of /
y una lista de los archivos y carpetas en el directorio, cree un archivo index.html
o un archivo de prueba como se muestra arriba.
¡Felicidades! Ha creado y configurado una infraestructura LAMP en Ubuntu 16.04 (LTS).
Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos certificar su actualidad o precisión.