Cómo instalar LAMP en Ubuntu 18.04

En este tutorial, explicaré cómo instalar la pila LAMP con WordPress en nuestro último servidor Ubuntu 18.04. LAMP son las siglas de Linux-Apache-MySQL-PHP. Es un grupo de software gratuito que se puede instalar en conjunto para construir un servidor para alojar sitios web y aplicaciones web dinámicos y basados ​​en bases de datos. Utiliza Linux como sistema operativo, Apache como servidor web, MySQL como sistema de gestión de bases de datos relacionales para almacenar datos del sitio y PHP para procesar los contenidos dinámicos.

Existe una forma alternativa fácil de instalar el servidor LAMP usando la herramienta “tasksel” desarrollada por Ubuntu / Debian. Pero en este tutorial, instalaré cada paquete manualmente.

Instalar en pc Apache

Toda la última versión de Apache, Mysql y PHP están presentes en el repositorio del servidor. Entonces podemos usar nuestro administrador de paquetes apto para instalar todos los paquetes sin ningún repositorio de terceros. Puede instalar el Apache ejecutando este comando a continuación:

#apt-get update
#apt install apache2

Necesitamos asegurarnos de habilitar e iniciar este servicio usando el comando systemctl:

#systemctl enable apache2
#systemctl start apache2

Hemos instalado con la última Apache Versión 2.4.29 en nuestro servidor. A continuación, podemos verificar el Apache versión instalada y prueba que funciona accediendo a la IP del servidor en el navegador, así >> https://Server-IP/

Optimización del rendimiento del servidor web

Siga estos pasos para optimizar el rendimiento de su servidor web.

1. Optimización de Apache directivas

Siempre es importante garantizar el rendimiento del servidor con los recursos mínimos disponibles. KeepAlive es una directiva de Apache, permite Apache para utilizar la memoria del lado del servidor, reduciendo la latencia para los usuarios en el sitio alojado. Proporciona sesiones HTTP de larga duración que permiten enviar varias solicitudes a través de la misma conexión TCP. KeepAlive hará que un sitio web sea más rápido si el host tiene suficiente memoria para admitirlo. Complementando esta directiva vienen MaxKeepAliveRequests y KeepAliveTimeout.

La configuración MaxKeepAliveRequests controla el número máximo de solicitudes durante una conexión persistente. 50 es una cantidad conservadora; podemos establecer este número más alto dependiendo de nuestro tráfico web. KeepAliveTimeout controla cuánto tiempo espera el servidor por nuevas solicitudes de clientes ya conectados; si configura esta opción en 5, evitará el desperdicio de RAM. Cuanto mayor sea su valor, más posibilidades de causar problemas de rendimiento en servidores muy cargados. Cuanto mayor sea el tiempo de espera, más procesos del servidor se mantendrán ocupados esperando conexiones con clientes inactivos.

Teniendo en cuenta estas directivas, optimicé mi Apache archivo de configuración ubicado en /etc/apache2/apache.conf con estos valores para mejorar el rendimiento de mi servidor web (necesita ajustar según sus requisitos).

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5

2. Elección del módulo MPM

Apache 2 introdujo módulos multiprocesamiento o MPM. Prefork, Worker y Event son los tres MPM recomendados disponibles. Por defecto, Apache elige el prefork MPM. Dado que la pila LAMP requiere PHP, puede ser mejor seguir con el predeterminado. Puede determinar el estado actual de MPM ejecutando el siguiente comando en la línea de comandos.

Nota: debe modificar estos valores según el rendimiento del servidor y las solicitudes del servidor web

# apache2 -V |grep -i 'version|mpm'
Server version: Apache/2.4.29 (Ubuntu)
Server MPM: prefork

Abra el archivo mpm_prefork.conf ubicado en / etc / apache2 / mods-available y edite la configuración.

# cat /etc/apache2/mods-available/mpm_prefork.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves

<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 3
MaxSpareServers 40
MaxRequestWorkers 200
MaxConnectionsPerChild 10000
</IfModule>

PD: incluso puede usar estos comandos para cambiar entre los MPM según sus requisitos de alojamiento.

#a2dismod mpm_event
#a2enmod mpm_prefork

3. Reiniciar Apache Servicio

Siempre se recomienda reiniciar el Apache service después de realizar cualquier cambio en su configuración para que los cambios sean efectivos. Entonces, después de realizar los cambios anteriores, asegúrese de reiniciar el Apache Servicio.

#systemctl restart apache2

Instalar MySQL

En segundo lugar, necesitamos instalar nuestro servidor de base de datos. He instalado MySQL 5.7.22 en mi servidor. Puede instalar la última versión disponible ejecutando el siguiente comando:

#apt install mysql-server
# mysql -V
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper

Inicie / habilite el servicio MySQL y verifique su estado.

# systemctl enable mysql
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mysql
# systemctl start mysql
# systemctl status mysql

A continuación, deberá ejecutar el script de seguridad que viene con la instalación para proteger su servidor de base de datos. Puede ejecutar el siguiente comando para proteger la base de datos MySQL y establecer la contraseña de root:

# mysql_secure_installation

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

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: 2
Please set the password for root here.

New password:
Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

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

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!

Como puede ver, durante esta fase de instalación segura, le pedirá que configure PASSWORD PLUGIN. Por razones de seguridad, definitivamente te recomendaré que optes por el nivel de contraseña segura para continuar. Una vez hecho esto, puede configurar su contraseña administrativa. Para el resto de preguntas, puede ingresar y por yes que eliminará a los usuarios anónimos y la base de datos de prueba, deshabilitará los inicios de sesión de root remotos y volverá a cargar las tablas de privilegios con estas nuevas reglas con efecto inmediato.

Instalar PHP

PHP es nuestro lenguaje de secuencias de comandos que procesa el código para mostrar contenido dinámico. Básicamente, ejecuta los scripts de dominio, se conecta a sus respectivas bases de datos y envía el contenido a su servidor web para que lo muestre. Para instalar el último PHP y algunos de sus módulos importantes, use el siguiente comando desde la terminal:

#apt install php libapache2-mod-php php-mysql
# php -v
PHP 7.2.3-1ubuntu1 (cli) (built: Mar 14 2018 22:03:58) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1ubuntu1, Copyright (c) 1999-2018, by Zend Technologies
# systemctl restart apache2

He instalado PHP 7.2.3 en mi servidor. Puede confirmar su versión desde la línea de comando usando el comando anterior. Hay muchos otros módulos PHP disponibles para mejorar la funcionalidad de PHP. Para ver las bibliotecas y la lista de módulos PHP del módulo disponible, canalice los resultados de apt search into less, un buscapersonas que le permite desplazarse por la salida de los comandos:

#apt search php- | less

Puede usar las teclas de flecha para desplazarse hacia arriba y hacia abajo y presionar q para salir. Para mostrar más información sobre cada módulo, puede utilizar el comando apt show package_name. Para example, para saber más sobre el uso de la PHP-bz2 módulo, puede escribir esto de la siguiente manera:

# apt show php7.2-bz2
Package: php7.2-bz2
Version: 7.2.3-1ubuntu1
Priority: optional
Section: universe/php
Source: php7.2
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian PHP Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 52.2 kB
Provides: php-bz2
Depends: php-common (>= 1:35), ucf, php7.2-common (= 7.2.3-1ubuntu1), libbz2-1.0, libc6 (>= 2.14)
Homepage: https://www.php.net/
Download-Size: 10.2 kB
APT-Sources: https://mirrors.linode.com/ubuntu bionic/universe amd64 Packages
Description: bzip2 module for PHP
This package provides the bzip2 module(s) for PHP.
.
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.

La parte de descripción explica brevemente el propósito de este módulo. Dependiendo de sus requisitos, puede elegir el paquete de módulo requerido e instalarlo usando el comandoapt install.

Necesitas reiniciar Apache para que estos cambios sean efectivos. Ahora puede crear una página de información PHP en la raíz del documento de dominio para confirmar su versión y lista de módulos.

# cd /var/www/html
#echo "<?php phpinfo(); ?>" >> info.php

Puede navegar por la URL https://ServerIP/info.php para confirmar que está funcionando.

Hemos completado con éxito la instalación de la pila LAMP en Ubuntu 18. Ahora es el momento de configurar nuestro blog de WordPress. Instalemos WordPress con los pasos a continuación:

Instalar WordPress

Puede descargar la última descarga de WordPress desde su Sitio web oficial y extraerlo a la raíz del documento /var/www/html para instalarlo.

# apt install wget
# wget https://wordpress.org/latest.tar.gz
# tar -xvf latest.tar.gz -C /var/www/html/

Crea una base de datos MySQL para WordPress

A continuación, necesitaremos crear una base de datos y un usuario para nuestra instalación de WordPress, para hacerlo, ejecute el siguiente comando:

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6
Server version: 5.7.22-0ubuntu18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> create database wpdatabase;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '9RYiZ1fca$#RBrvaFpxwL&TYY';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON wpdatabase.* TO 'wpuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Nos hemos conectado al shell de MySQL y creamos una base de datos llamada "wpdatabase" con un usuario "wpuser" para la instalación de WordPress. A continuación, debe crear el wp-config.php de la plantilla wp-config-sample.php y modifique la configuración de MySQL en el archivo de configuración con el que creamos para comenzar con nuestra instalación.

#cd /var/www/html/wordpress/
#cp wp-config-sample.php wp-config.php

Modifiqué la configuración del archivo con los detalles de mi base de datos creada.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wpdatabase');

/** MySQL database username */
define('DB_USER', 'wpuser');

/** MySQL database password */
define('DB_PASSWORD', '9RYiZ1fca$#RBrvaFpxwL&TYY');

/** MySQL hostname */
define('DB_HOST', 'localhost');

Configuración del host virtual

Podemos configurar el host virtual para nuestro sitio de WordPress como se muestra a continuación. Por defecto, Apache escucha en todas las direcciones IP disponibles. Para todos los pasos a continuación, reemplace example.com con su nombre de dominio. Lo estoy reemplazando con mi nombre de dominio mywordpressblog.com.

1. Cree una copia del predeterminado Apache archivo de configuración para su sitio:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mywordpressblog.com.conf

2. Edite el nuevo archivo de configuración mywordpressblog.com.conf descomentando ServerName y reemplazando example.com con la IP de su sitio o el nombre de dominio completo (FQDN). En mi caso, lo reemplacé con www.mywordpressblog.com. Enter la ruta raíz del documento y los directorios de registro como se muestra a continuación, y agregue un bloque de directorio antes de como se muestra a continuación:

# cat mywordpressblog.com.conf

<Directory /var/www/html/wordpress>
Require all granted
</Directory>
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.mywordpressblog.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/wordpress

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog /var/www/html/mywordpressblog.com/error.log
CustomLog /var/www/html/mywordpressblog.com/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

3. Cree los directorios a los que se hace referencia en el archivo de configuración:

# mkdir -p /var/www/html/mywordpressblog.com/
# touch /var/www/html/mywordpressblog.com/access.log
# touch /var/www/html/mywordpressblog.com/error.log

4. Vincule su archivo de host virtual desde el directorio de sitios disponibles al directorio de sitios habilitados y desactive el host virtual predeterminado para minimizar los riesgos de seguridad:

# a2ensite mywordpressblog.com.conf
# a2dissite 000-default.conf

5. Recargar Apache después de realizar estos cambios.

# systemctl reload apache2

Ahora puedes navegar por la siguiente URL >> https://mywordpressblog.com/ para completar nuestra instalación.

Puede configurar sus credenciales de administrador y el título del sitio para completar la etapa de instalación. Finalmente, puede acceder a su admin área navegando por la URL https://mywordpressblog.com/wp-login.php con las credenciales creadas.

¡Eso es todo! ha instalado WordPress correctamente en su servidor Ubuntu 18.04. Ahora puede seguir adelante y personalizar su Blog de WordPress según sus requisitos.

Conclusión

En este tutorial, nos inclinamos a construir su pila LAMP e instalar el blog de WordPress (instalar wp-cli) encima usando Ubuntu 18.04. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.

Leer también:

  • Cómo instalar Ubuntu 18.04 Dual Boot con Windows 10