One place for hosting & domains

      Cómo instalar la pila Linux, Apache, MySQL y PHP (LAMP) en Ubuntu 20.04 [Guía de inicio rápido]


      Introducción

      En esta guía de inicio rápido, instalaremos una pila LAMP en un servidor de Ubuntu 20.04.

      Para ver una versión más detallada de este tutorial, en la que se ofrezcan más explicaciones de cada paso, consulte Cómo instalar la pila Linux, Apache, MySQL y PHP (LAMP) en Ubuntu 20.04​​​.

      Requisitos previos

      Para completar esta guía, necesitará acceso a un servidor de Ubuntu 20.04 como usuario sudo.

      Paso 1: Instalar Apache

      Actualice la caché del administrador de paquetes e instale Apache con lo siguiente:

      • sudo apt update
      • sudo apt install apache2

      Una vez que la instalación se complete, deberá ajustar la configuración de su firewall para permitir tráfico HTTP en su servidor. Ejecute el siguiente comando para permitir el acceso externo en el puerto 80 (HTTP):

      • sudo ufw allow in "Apache"

      Una vez añadida la nueva regla de firewall, puede verificar si su servidor está activo accediendo a la dirección IP pública o al nombre del dominio de este desde su navegador web. Verá una página como la siguiente:

      Página predeterminada de Apache para Ubuntu 20.04

      Paso 2: Instalar MySQL

      Ahora instalaremos MySQL, un sistema de administración de base de datos popular que se utiliza en entornos PHP.

      Una vez más, utilice apt para adquirir e instalar este software:

      • sudo apt install mysql-server

      Cuando la instalación se complete, se recomienda ejecutar una secuencia de comandos de seguridad que viene preinstalada en MySQL Inicie la secuencia de comandos interactiva ejecutando lo siguiente:

      • sudo mysql_secure_installation

      Se le preguntará si desea configurar el VALIDATE PASSWORD PLUGIN. Elija Y para indicar que sí o cualquier otra respuesta para continuar sin la habilitación. Si responde “sí”, se le solicitará que seleccione un nivel de validación de contraseña.

      Luego, su servidor le solicitará seleccionar y confirmar una contraseña para el root user de MySQL. Si bien para el método de autenticación predeterminado del root user de MySQL no se requiere una contraseña, incluso si hay una establecida, deberá definir una contraseña segura en este punto como medida de seguridad adicional.

      Para el resto de las preguntas, presione Y y ENTER en cada mensaje.

      Nota: Al momento de la redacción de este artículo, la biblioteca PHP nativa de MySQL mysqlnd no admite caching_sha2_authentication, el método de autenticación predeterminado de MySQL 8. Por este motivo, al crear usuarios de bases de datos para aplicaciones PHP en MySQL 8, deberá asegurarse de que estén configurados para usar mysql_native_password en su lugar. Consulte el paso 6 de nuestra guía detallada de LAMP de Ubuntu 20.04 para aprender a hacerlo.

      Paso 3: Instalar PHP

      Para instalar PHP y sus dependencias, ejecute lo siguiente:

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

      Una vez que la instalación se complete, podrá ejecutar el siguiente comando para confirmar su versión de PHP:

      Output

      PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

      Paso 4: Crear un host virtual para su sitio web

      A través de esta guía, configurará un dominio llamado your_domain, pero deberá cambiar este nombre por el de su dominio propio.

      Ubuntu 20.04 tiene habilitado un bloque de servidor por defecto, que está configurado para proporcionar documentos del directorio /var/www/html. En lugar de modificar /var/www/html, crearemos una estructura de directorio dentro de /var/www para el sitio your_domain y dejaremos /var/www/html establecido como directorio predeterminado que se presentará si una solicitud de cliente no coincide con ningún otro sitio.

      Cree el directorio para your_domain de la siguiente manera:

      • sudo mkdir /var/www/your_domain

      A continuación, asigne la propiedad del directorio con la variable de entorno $USER, que hará referencia a su usuario de sistema actual:

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

      Luego, abra un nuevo archivo de configuración en el directorio sites-available de Apache utilizando el editor de línea de comandos que prefiera:

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

      De esta manera, se creará un nuevo archivo en blanco. Pegue la siguiente configuración básica:

      /etc/apache2/sites-available/your_domain.conf

      <VirtualHost *:80>
          ServerName your_domain
          ServerAlias www.your_domain
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/your_domain
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Guarde y cierre el archivo cuando termine. Si utiliza nano, puede hacerlo presionando las teclas CTRL+X, Y y ENTER.

      Ahora, puede usar a2ensite para habilitar el nuevo host virtual:

      • sudo a2ensite your_domain

      Para deshabilitar el sitio web predeterminado de Apache, escriba lo siguiente:

      • sudo a2dissite 000-default

      Para asegurarse de que su archivo de configuración no contenga errores de sintaxis, ejecute lo siguiente:

      • sudo apache2ctl configtest

      Por último, vuelva a cargar Apache para que estos cambios surtan efecto:

      • sudo systemctl reload apache2

      Ahora, su nuevo sitio web está activo, pero el directorio root web /var/www/your_domain todavía está vacío. Cree un archivo index.html en esa ubicación para poder probar que el host virtual funcione según lo previsto:

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

      Incluya el siguiente contenido en este archivo:

      /var/www/your_domain/index.html

      <html>
        <head>
          <title>your_domain website</title>
        </head>
        <body>
          <h1>Hello World!</h1>
      
          <p>This is the landing page of <strong>your_domain</strong>.</p>
        </body>
      </html>
      

      Ahora, diríjase a su navegador y acceda al nombre de dominio o la dirección IP de su servidor una vez más:

      http://server_domain_or_IP
      

      Verá una página como la siguiente:

      Prueba de host virtual de Apache

      Paso 5: Probar PHP con Apache

      Ahora, crearemos una secuencia de comandos PHP de prueba para confirmar que Apache pueda gestionar y procesar las solicitudes de archivos PHP.

      Cree un archivo nuevo llamado info.php dentro de su carpeta root web personalizada:

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

      Con esto se abrirá un archivo vacío. Añada el siguiente contenido al archivo:

      /var/www/your_domain/info.php

      <?php
      phpinfo();
      

      Cuando termine, guarde y cierre el archivo.

      Diríjase a su navegador web y acceda al nombre de dominio o la dirección IP de su servidor, seguido del nombre de la secuencia de comandos, que en este caso es info.php:

      http://server_domain_or_IP/info.php
      

      Verá una página similar a la siguiente:

      Información de PHP de Ubuntu 20.04

      Tras comprobar la información pertinente sobre su servidor PHP a través de esa página, se le recomienda eliminar el archivo que creó, dado que contiene información confidencial sobre su entorno PHP y su servidor de Ubuntu. Puede usar rm para hacerlo:

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

      Tutoriales relacionados

      A continuación, se ofrecen los enlaces a más guías detalladas relacionadas con este tutorial:



      Source link

      Cómo instalar Linux, Nginx, MySQL y PHP (pila LEMP) en Ubuntu 20.04


      Introducción

      La pila de software LEMP es un grupo de elementos de software que puede utilizarse para ofrecer páginas web y aplicaciones web dinámicas escritas en PHP. El acrónimo describe un sistema operativo Linux, con un servidor web Nginx (que se pronuncia ​como “Engine-X”). Los datos backend se almacenan en la base de datos de MySQL y el procesamiento dinámico se gestiona a través de PHP.

      En esta guía se muestra cómo de instalar una pila LEMP en un servidor de Ubuntu 20.04. El sistema operativo Ubuntu se ocupa de los primeros requisitos. Describiremos la manera de hacer funcionar el resto de los componentes.

      Requisitos previos

      Para completar este tutorial, necesitará acceso a un servidor de Ubuntu 20.04 como un non-root sudo user regular y un firewall habilitado en su servidor. Para configurarlo, puede consultar nuestra Guía de configuración inicial del servidor para Ubuntu 20.04.

      Paso 1: Instalar el servidor web Nginx

      Para mostrar páginas web a los visitantes de nuestro sitio, emplearemos Nginx, un servidor web de alto rendimiento. Utilizaremos el administrador de paquetes apt para obtener este software.

      Ya que esta es la primera vez que usamos apt para esta sesión, comience actualizando el índice de paquetes de su servidor. Después de eso, puede usar apt install para hacer instalar Nginx:

      • sudo apt update
      • sudo apt install nginx

      Cuando se le solicite, introduzca Y para confirmar que desea instalar Nginx. Cuando finalice la instalación, el servidor web de Nginx se activará y ejecutará en su servidor de Ubuntu 20.04.

      Si tiene habilitado el firewall ufw, como se recomienda en nuestra guía de configuración inicial del servidor, deberá permitir las conexiones con Nginx. Nginx registra algunos perfiles de aplicaciones UFW diferentes al realizar la instalación. Para verificar qué perfiles UFW están disponibles, ejecute lo siguiente:

      Output

      Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

      Se recomienda que habilite el perfil más restrictivo, pero que aún permita el tráfico que necesita. Debido a que no configuró SSL para su servidor a través de esta guía, solo deberá permitir el tráfico de HTTP habitual en el puerto 80.

      Puede habilitarlo escribiendo lo siguiente:

      • sudo ufw allow 'Nginx HTTP'

      Puede verificar el cambio ejecutando lo siguiente:

      El resultado de este comando mostrará que el tráfico de HTTP ahora está permitido:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

      Una vez agregada la nueva regla del firewall, podrá probar si el servidor se encuentra en ejecución accediendo al nombre de dominio o a la dirección IP pública de su servidor en su navegador web.

      Si no tiene un nombre de dominio para su servidor y no conoce la dirección IP pública de este, puede encontrarla ejecutando siguiente comando:

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

      Con esto se mostrarán algunas direcciones IP. Puede probar cada una de estas en su navegador web.

      Como alternativa, podrá verificar la dirección IP accesible, como se ve desde otras ubicaciones de Internet:

      Escriba la dirección que reciba en su navegador web. Esta lo llevará a la página de destino predeterminada de Nginx:

      http://server_domain_or_IP
      

      Página predeterminada de Nginx

      Si ve esta página, significa que instaló Nginx y que habilitó el tráfico de HTTP para su servidor web de manera correcta.

      Paso 2: Instalar MySQL

      Ahora que su servidor web está listo, debe instalar un sistema de base de datos para poder almacenar y gestionar los datos de su sitio. MySQL es un sistema de administración de bases de datos popular que se utiliza en entornos PHP.

      Una vez más, utilice apt para adquirir e instalar este software:

      • sudo apt install mysql-server

      Cuando se le solicite, confirme la instalación al escribir Y y, luego, ENTER.

      Cuando la instalación se complete, se recomienda ejecutar una secuencia de comandos de seguridad que viene preinstalada en MySQL Con esta secuencia de comandos se eliminarán algunos ajustes predeterminados poco seguros y se bloqueará el acceso a su sistema de base de datos. Inicie la secuencia de comandos interactiva ejecutando lo siguiente:

      • sudo mysql_secure_installation

      Se le preguntará si desea configurar el VALIDATE PASSWORD PLUGIN.

      Nota: La habilitación de esta característica queda a discreción del usuario. Si se habilita, MySQL rechazará con un mensaje de error las contraseñas que no coincidan con los criterios especificados. Dejar la validación desactivada será una opción segura, pero siempre deberá utilizar contraseñas seguras y únicas para credenciales de bases de datos.

      Elija Y para indicar que sí, o cualquier otra cosa para continuar sin la habilitación.

      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:
      

      Si responde “sí”, se le solicitará que seleccione un nivel de validación de contraseña. Tenga en cuenta que, si ingresa 2 para indicar el nivel más seguro, recibirá mensajes de error al intentar establecer cualquier contraseña que no contenga números, letras en mayúscula y minúscula, 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
      

      Independientemente de que haya elegido instalar el VALIDATE PASSWORD PLUGIN, su servidor le solicitará, a continuación, que seleccione y confirme una contraseña para el root user de MySQL. No debe confundirse con el root del sistema. El root user de base de datos es un usuario administrativo con privilegios completos sobre el sistema de base de datos. Si bien el método de autenticación predeterminado del root user de MySQL no requiere el uso de una contraseña, incluso si hay una establecida, deberá definir una contraseña segura en este punto como una medida de seguridad adicional. Hablaremos de esto en breve.

      Si habilitó la validación de contraseña, se le indicará la seguridad de la contraseña del root user que acaba de ingresar y su servidor le preguntará si desea continuar usándola. Si está conforme con su contraseña actual, ingrese Y para indicar “sí” en la solicitud:

      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
      

      Para el resto de las preguntas, presione Y e ENTER en cada mensaje. Con esto, se eliminarán algunos usuarios anónimos y la base de datos de prueba, se deshabilitarán las credenciales de inicio de sesión remoto de root y se cargarán estas nuevas reglas para que MySQL aplique de inmediato los cambios que realizó.

      Cuando haya terminado, compruebe si puede iniciar sesión en la consola de MySQL escribiendo lo siguiente:

      Esto permitirá establecer conexión con el servidor de MySQL como root user de la base de datos administrativa, lo que se infiere del uso de sudo cuando se ejecuta este comando. Debería ver el siguiente resultado:

      Output

      Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 22 Server version: 8.0.19-0ubuntu5 (Ubuntu) Copyright (c) 2000, 2020, 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>

      Para salir de la consola de MySQL, escriba lo siguiente:

      Observe que no necesitó proporcionar una contraseña para conectarse como root user, a pesar de que definió una al ejecutar la secuencia de comandos mysql_secure_installation. Esto se debe a que el método de autenticación predeterminado para el usuario administrativo de MySQL es unix_socket en vez de password. Si bien esto puede parecer un problema de seguridad inicialmente, hace que el servidor de la base de datos sea más seguro porque los únicos usuarios que pueden iniciar sesión como root user de My SQL son los usuarios del sistema con privilegios sudo que establecen conexión desde la consola o mediante una aplicación que se ejecute con los mismos privilegios. En términos prácticos, eso significa que no podrá usar el usuario root de la base de datos administrativa para establecer conexión desde su aplicación PHP. Establecer una contraseña para la cuenta root de MySQL es una medida de protección, en caso de que el método de autenticación predeterminado se cambie de unix_socket a password.

      Para mayor seguridad, es mejor disponer de cuentas de usuario dedicadas con privilegios de menor alcance configurados para cada base de datos, en especial si planea disponer de varias bases de datos alojadas en su servidor.

      Nota: Al momento de la redacción de este artículo, la biblioteca PHP nativa de MySQL mysqlnd no admite caching_sha2_authentication, el método de autenticación predeterminado de MySQL 8. Por este motivo, al crear usuarios de bases de datos para aplicaciones PHP en MySQL 8, deberá asegurarse de que estén configurados para usar mysql_native_password en su lugar. Demostraremos cómo hacerlo en el paso 6.

      Ahora, su servidor de MySQL está instalado y protegido. A continuación, instalaremos PHP, el componente final de la pila LEMP.

      Paso 3: Instalar PHP

      Instaló Nginx para suministrar su contenido y MySQL para almacenar y administrar sus datos. Ahora puede instalar PHP a fin de procesar el código y generar contenido dinámico para el servidor web.

      Aunque Apache integra el intérprete PHP en cada solicitud, Nginx requiere un programa externo para gestionar el procesamiento de PHP y actuar como puente entre el intérprete PHP en sí y el servidor web. Esto permite un mejor rendimiento general en la mayoría de los sitios web basados en PHP, pero requiere configuración adicional. Deberá instalar php-fpm, que significa “PHP fastCGI process manager”, e indicar a Nginx que pase solicitudes PHP a este software para su procesamiento. Además, necesitará php-mysql, un módulo PHP que permite a PHP comunicarse con las bases de datos basadas en MySQL. Los paquetes PHP básicos se instalarán automáticamente como dependencias.

      Para instalar los paquetes php-fpm y php-mysql, ejecute lo siguiente:

      • sudo apt install php-fpm php-mysql

      Cuando se le solicite, escriba Y y ENTER para confirmar la instalación.

      Ahora tiene instalado los componentes de PHP. A continuación, configurará Nginx para usarlos.

      Paso 4: Configurar Nginx para utilizar el procesador PHP

      Al emplear el servidor web Nginx, podemos crear bloques de servidor (similares a los hosts virtuales de Apache) para encapsular los detalles de configuración y alojar más de un dominio en un único servidor. En esta guía, utilizaremos your_domain como un nombre de dominio de ejemplo. Consulte nuestra Introducción a DNS de DigitalOcean para hallar más información sobre la configuración de un nombre de dominio con DigitalOcean.

      En Ubuntu 20.04, Nginx tiene un bloque de servidor habilitado por defecto y está configurado para suministrar documentos desde un directorio en /var/www/html. Si bien esto da buenos resultados para un solo sitio, puede ser difícil de manejar si aloja varios. En lugar de modificar /var/www/html, crearemos una estructura de directorio dentro de /var/www para el sitio web your_domain y dejaremos /var/www/html establecido como directorio predeterminado que se suministrará si una solicitud de cliente no coincide con ningún otro sitio.

      Cree el directorio web root para your_domain de la siguiente manera:

      • sudo mkdir /var/www/your_domain

      A continuación, asigne la propiedad del directorio con la variable de entorno $USER, que hará referencia a su usuario de sistema actual:

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

      Luego, abra un nuevo archivo de configuración en el directorio sites-available de Nginx con el editor de línea de comandos que prefiera. En este caso, utilizaremos nano:

      • sudo nano /etc/nginx/sites-available/your_domain

      De esta manera, se creará un nuevo archivo en blanco. Pegue la siguiente configuración básica:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          server_name your_domain www.your_domain;
          root /var/www/your_domain;
      
          index index.html index.htm index.php;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          location ~ .php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           }
      
          location ~ /.ht {
              deny all;
          }
      
      }
      
      
      

      Esto es lo que hacen estas directivas y estos bloques de ubicación:

      • listen: define en qué puerto Nginx escuchará. En este caso, escuchará en el puerto 80, el puerto predeterminado para HTTP.
      • root: define el root de documentos en el que se almacenan los archivos disponibles en este sitio web.
      • index: especifica en qué orden dará prioridad Nginx a los archivos de índice de este sitio web. Normalmente se prioriza los archivos index.html por sobre los index.php para permitir establecer de manera rápida una página inicial de mantenimiento en las aplicaciones de PHP. Puede modificar estas opciones de configuración para que se adapten mejor a las necesidades de su aplicación.
      • server_name: define con qué nombres de dominio y/o direcciones de IP debe responder este bloque de servidor. Introduzca esta directiva en el nombre de dominio o la dirección IP pública de su servidor.
      • location /: el primer bloque de ubicación incluye una directiva try_files, la cual comprueba la existencia de archivos o directorios que coincidan con una solicitud de URI. Si Nginx no puede encontrar el recurso apropiado, mostrará un error 404.
      • location ~ .php$: este bloque de ubicación administra el procesamiento de PHP real al orientar a Nginx hacia el archivo de configuración fastcgi-php.conf y al archivo php7.4-fpm.sock, que declara el socket que se asocia con php-fpm.
      • location ~ /.ht: el último bloque de ubicación maneja archivos .htaccess, que Nginx no procesa. Al agregar la directiva deny all, si algunos de los archivos .htaccess ingresan de alguna forma en el root de documentos, estos no se suministrarán a los visitantes.

      Cuando finalice la edición, guarde y cierre el archivo. Si utiliza nano, puede hacerlo escribiendo CTRL+X, luego y ,y ENTER para confirmar.

      Establezca un vínculo con archivo de configuración del directorio sites-enabled de Nginx para activar su configuración:

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

      Esto le indicará a Nginx que utilice la configuración la próxima vez que se vuelva a cargar. Puede verificar si hay errores en la sintaxis de su configuración al escribir:

      Si se detecta algún error, vuelva al archivo de configuración para revisar el contenido antes de continuar.

      Cuando esté listo, vuelva a cargar Nginx para aplicar los cambios:

      • sudo systemctl reload nginx

      Ahora, su nuevo sitio web está activo, pero el directorio root web /var/www/your_domain todavía está vacío. Cree un archivo index.html en esa ubicación para poder probar que el nuevo bloque del servidor funcione según lo previsto:

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

      Incluya el siguiente contenido en este archivo:

      /var/www/your_domain/index.html

      <html>
        <head>
          <title>your_domain website</title>
        </head>
        <body>
          <h1>Hello World!</h1>
      
          <p>This is the landing page of <strong>your_domain</strong>.</p>
        </body>
      </html>
      

      Ahora, diríjase al navegador y acceda al nombre de dominio o la dirección IP de su servidor, tal como aparece en la directiva server_name en el archivo de configuración del bloque de servidor:

      http://server_domain_or_IP
      

      Verá una página como la siguiente:

      Bloque de servidor de Nginx

      Si ve esta página, su bloque de servidor de Nginx está funcionando según lo previsto.

      Puede dejar este archivo establecido como página de destino temporal de su aplicación hasta que configure un archivo index.php que lo sustituya. Cuando lo haga, recuerde eliminar el archivo index.html de su root de documentos, o cambiarle el nombre, ya que tendría precedencia sobre un archivo index.php por defecto.

      Ahora, la pila LEMP está completamente configurada. En el siguiente paso, crearemos una secuencia de comandos PHP para probar que Nginx, de hecho, puede gestionar los archivos .php en el sitio web que recién configuramos.

      Paso 5: Probar PHP con Nginx

      Su pila LEMP ahora debería estar configurada por completo. Puede probarla para validar que Nginx puede transferir correctamente archivos .php a su procesador PHP.

      Para hacerlo, cree un archivo PHP de prueba en el root de su documento. En el editor de texto, abra un archivo nuevo denominado info.php en el root de su documento:

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

      Escriba o pegue las siguientes líneas en el archivo nuevo. En ella se incluye código PHP válido que mostrará información sobre su servidor:

      /var/www/your_domain/info.php

      <?php
      phpinfo();
      

      Cuando termine, guarde y cierre el archivo escribiendo CTRL+X, luego y, y ENTER para confirmar.

      Ahora, puede acceder a esta página en el navegador web al visitar el nombre de dominio o la dirección IP pública que configuró en el archivo de configuración de Nginx, seguido de /info.php:

      http://server_domain_or_IP/info.php
      

      Verá una página web que contiene información detallada sobre su servidor:

      PHPInfo Ubuntu 20.04

      Tras comprobar la información pertinente sobre su servidor PHP a través de esa página, es recomendable que elimine el archivo que creó, dado que contiene información confidencial sobre su entorno PHP y su servidor de Ubuntu. Puede usar rm para eliminar ese archivo:

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

      Siempre puede regenerar este archivo si lo necesita más adelante.

      Paso 6: Probar la conexión con la base de datos desde PHP (opcional)

      Si quiere probar si PHP puede establecer conexión con MySQL y ejecutar consultas a la base de datos, puede crear una tabla de prueba con datos ficticios y realizar consultas relacionadas con su contenido con una secuencia de comandos PHP. Para poder hacerlo, debemos crear una base de datos de prueba y un nuevo usuario de MySQL debidamente configurado para acceder a ella.

      Al momento de la redacción de este artículo, la biblioteca PHP nativa de MySQL mysqlnd no admite caching_sha2_authentication, el método de autenticación predeterminado de MySQL 8. Vamos a tener que crear un usuario nuevo con el método de autenticación mysql_native_password para poder establecer conexión con la base de datos de MySQL desde PHP.

      Crearemos una base de datos denominada example_database y un usuario llamado example_user, pero puede sustituir estos nombres por valores diferentes.

      Primero, establezca conexión con la consola de MySQL usando la cuenta root:

      Para crear una base de datos nueva, ejecute el siguiente comando desde su consola de MySQL:

      • CREATE DATABASE example_database;

      Ahora puede crear un nuevo usuario y concederle privilegios completos sobre la base de datos personalizada que acaba de crear.

      El siguiente comando crea un usuario nuevo llamado example_user, que utiliza mysql_native_password como método de autenticación predeterminado. Definimos la contraseña de este usuario como password, pero debe sustituir este valor por una contraseña segura de su elección.

      • CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

      Ahora, debemos darle permiso a este usuario a la base de datos example_database:

      • GRANT ALL ON example_database.* TO 'example_user'@'%';

      Esto proporcionará al usuario example_user privilegios completos sobre la base de datos example_database y, al mismo tiempo, evitará que este usuario cree o modifique otras bases de datos en su servidor.

      Ahora, cierre el shell de MySQL con lo siguiente:

      Puede verificar si el usuario nuevo tiene los permisos adecuados al volver a iniciar sesión en la consola de MySQL, esta vez, con las credenciales de usuario personalizadas:

      Observe el indicador -p en este comando, que le solicitará la contraseña que utilizó cuando creó el usuario example_user. Después de iniciar sesión en la consola de MySQL, confirme que tenga acceso a la base de datos example_database:

      Con esto se generará el siguiente resultado:

      Output

      +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

      A continuación, crearemos una tabla de prueba denominada todo_list: Desde la consola de MySQL, ejecute la siguiente instrucción:

      • CREATE TABLE example_database.todo_list (
      • item_id INT AUTO_INCREMENT,
      • content VARCHAR(255),
      • PRIMARY KEY(item_id)
      • );

      Inserte algunas filas de contenido en la tabla de prueba. Es posible que quiera repetir el siguiente comando algunas veces, usando valores diferentes:

      • INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

      Para confirmar que los datos se guardaron correctamente en su tabla, ejecute lo siguiente:

      • SELECT * FROM example_database.todo_list;

      Verá el siguiente resultado:

      Output

      +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

      Después de confirmar que haya datos válidos en su tabla de prueba, puede cerrar la consola de MySQL:

      Ahora, podrá crear una secuencia de comandos PHP que se conecte a MySQL y realice consultas relacionadas con su contenido. Cree un nuevo archivo PHP en su directorio web root personalizado usando su editor preferido. En este caso, usaremos nano:

      • nano /var/www/your_domain/todo_list.php

      La siguiente secuencia de comandos PHP establece conexión con la base de datos de MySQL, realiza consultas relacionadas con el contenido de la tabla todo_list y muestra los resultados en una lista. Si hay un problema con la conexión de la base de datos, generará una excepción. Copie este contenido en su secuencia de comandos todo_list.php:

      /var/www/your_domain/todo_list.php

      <?php
      $user = "example_user";
      $password = "password";
      $database = "example_database";
      $table = "todo_list";
      
      try {
        $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
        echo "<h2>TODO</h2><ol>";
        foreach($db->query("SELECT content FROM $table") as $row) {
          echo "<li>" . $row['content'] . "</li>";
        }
        echo "</ol>";
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      

      Guarde y cierre el archivo cuando finalice la edición.

      Ahora, puede acceder a esta página en su navegador web al visitar el nombre de dominio o la dirección IP pública que configuró para su sitio web, seguido de /todo_list.php:

      http://server_domain_or_IP/todo_list.php
      

      Debería ver una página como esta, en la que se muestra el contenido que insertó en su tabla de prueba:

      Ejemplo de la lista “todo” PHP

      Eso significa que su entorno PHP está listo para establecer conexión con su servidor de MySQL e interactuar con él.

      Conclusión

      En esta guía, creamos una base flexible para presentar sitios web y aplicaciones PHP a sus visitantes usando Nginx como servidor web y MySQL como sistema de base de datos.

      Existen varios pasos posteriores que podría seguir a partir de este punto. Por ejemplo, debe asegurarse de que las conexiones con su servidor estén protegidas. Para ello, podría proteger su instalación de Nginx con Let’s Encrypt. Siguiendo esta guía, obtendrá un certificado TLS/SSL gratuito para su servidor, lo que permitirá ofrecer contenido mediante HTTPS.



      Source link

      Cómo instalar la pila Linux, Apache, MariaDB y PHP (LAMP) en CentOS 8 [Guía de inicio rápido]


      Introducción

      En este tutorial, instalará una pila LAMP en un servidor de CentOS 8. Aunque MySQL está disponible en los repositorios predeterminados de CentOS 8, en esta guía, se mostrará el proceso de configuración de una pila LAMP con MariaDB como sistema de administración de bases de datos.

      Para ver una versión más detallada de este tutorial, con más explicaciones de cada paso, consulte Cómo instalar la pila Linux, Apache, MySQL, PHP (LAMP) en CentOS 8.

      Requisitos previos

      Para completar esta guía, necesitará acceso a un servidor de CentOS 8 como usuario sudo.

      Paso 1: Instalar Apache

      Instale el paquete httpd con lo siguiente:

      Cuando finalice la instalación, ejecute el siguiente comando para habilitar e iniciar el servidor:

      • sudo systemctl start httpd

      Si firewalld está activo, deberá ejecutar el siguiente comando para permitir el acceso externo en el puerto 80 (HTTP):

      • sudo firewall-cmd --permanent --add-service=http

      Vuelva a cargar la configuración del firewall para que los cambios surtan efecto:

      • sudo firewall-cmd --reload

      Una vez añadida la nueva regla de firewall, puede verificar si su servidor está activo accediendo a la dirección IP pública o al nombre del dominio de este desde su navegador web. Verá una página como la siguiente:

      Página predeterminada de Apache, CentOS 8

      Paso 2: Instalar MariaDB

      Ahora instalaremos MariaDB, una ramificación del servidor MySQL original de Oracle desarrollada por la comunidad. Para instalar este software, ejecute lo siguiente:

      • sudo dnf install mariadb-server

      Cuando termine la instalación, habilite e inicie el servidor MariaDB con lo siguiente:

      • sudo systemctl start mariadb

      Par mejorar la seguridad del servidor de su base de datos, se recomienda que ejecute una secuencia de comandos de seguridad que se incluye con MariaDB. Inicie la secuencia de comandos interactiva con lo siguiente:

      • sudo mysql_secure_installation

      En la primera solicitud se pedirá que introduzca la contraseña root de la base de datos actual. Debido a que acaba de instalar MariaDB y aún no realizó aún cambios en la configuración, el espacio de esta contraseña estará en blanco. Por ello, pulse ENTER en la solicitud.

      En la siguiente solicitud se pregunta si desea configurar una contraseña root de base de datos. Debido a que MariaDB usa un método de autenticación especial para el root user que normalmente proporciona más seguridad que una contraseña, no es necesario que lo configure ahora. Escriba N y pulse ENTER.

      Desde allí, puede pulsar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas siguientes.

      Paso 3: Instalar PHP

      Para instalar los paquetes php y php-mysqlnd usando el administrador de paquetes dnf, ejecute lo siguiente:

      sudo dnf install php php-mysqlnd
      

      Tras finalizar la instalación, reinicie el servidor web Apache para habilitar el módulo PHP:

      sudo systemctl restart httpd
      

      Paso 4: Probar PHP con Apache

      La instalación predeterminada de Apache en CentOS 8 creará una raíz de documentos ubicada en /var/www/html. No es necesario que realice cambios en la configuración predeterminada de Apache para que PHP funcione correctamente en su servidor web.

      El único ajuste que realizaremos consiste en cambiar la configuración de permisos predeterminada en su carpeta raíz de documentos de Apache. El siguiente comando cambiará la propiedad del root de documentos predeterminado de Apache a un usuario y un grupo denominados sammy:

      • sudo chown -R sammy.sammy /var/www/html/

      Ahora, crearemos una página PHP de prueba para garantizar que el servidor web funcione como se espera. Primero, es conveniente instalar nano, un editor de texto más sencillo, dado que no viene instalado con CentOS 8 por defecto:

      Ahora, cree un nuevo archivo PHP llamado info.php en el directorio /var/www/html:

      • nano /var/www/html/info.php

      El siguiente código PHP mostrará información sobre el entorno PHP actual activo en el servidor:

      /var/www/html/info.php

      <?php
      
      phpinfo();
      

      Cuando termine, guarde y cierre el archivo.

      Para verificar si nuestro servidor web puede mostrar correctamente el contenido generado por una secuencia de comandos PHP, diríjase a su navegador y acceda al nombre de host o la dirección IP de su servidor, seguido de /info.php:

      http://server_host_or_IP/info.php
      

      Verá una página similar a la siguiente:

      Información de PHP predeterminada de CentOS 8, Apache

      Tutoriales relacionados

      A continuación, se ofrecen los enlaces a más guías detalladas relacionadas con este tutorial:



      Source link