Introducción
La pila "LAMP" es un conjunto de software de código abierto que suele instalarse conjuntamente para permitir que un servidor aloje sitios web dinámicos y aplicaciones web escritas en PHP. El término se refiere al sistema operativo Linux con 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, configurará una pila LAMP en un servidor Ubuntu 22.04. Estos pasos son los mismos para Ubuntu 18.04 y versiones posteriores.
Requisitos previos
Para completar este tutorial, necesitará un servidor con Ubuntu, un usuario no root con privilegios de sudo y un firewall activo. Para obtener instrucciones sobre cómo configurarlos, seleccione su distribución de esta lista y siga nuestra guía de instalación inicial del servidor.
Paso 1: Instalar Apache y actualizar el firewall
El servidor web Apache es uno de los más populares del mundo. Está bien documentado, cuenta con una comunidad de usuarios activa y se ha utilizado ampliamente a lo largo de gran parte de la historia de la web, lo que lo convierte en una excelente opción para el alojamiento web.
Comience actualizando la caché del administrador de paquetes. Si es la primera vez que usa sudo en esta sesión, se le solicitará su contraseña de usuario para verificar que tiene los privilegios necesarios para administrar paquetes del sistema con apt:
sudo apt updateLuego inicie Apache usando:
sudo apt install apache2Se le pedirá que confirme la instalación de Apache. Confirme pulsando Y y luego ENTER.
Una vez finalizada la instalación, debe configurar su firewall para permitir el tráfico HTTP. La herramienta de configuración de firewall predeterminada de Ubuntu se llama Uncomplicated Firewall (UFW). Ofrece varios perfiles de aplicación que puede usar. Para ver todos los perfiles de aplicación UFW disponibles, ejecute este comando:
sudo ufw app listOutput
Available applications:
Apache
Apache Full
Apache Secure
OpenSSHEsto es lo que significa cada uno de estos perfiles:
- Apache: este perfil solo abre el puerto 80 (tráfico web normal, sin cifrar).
- Apache Full: este perfil abre tanto el puerto 80 (tráfico web normal, sin cifrar) como el puerto 443 (tráfico cifrado TLS/SSL).
- Apache Secure: este perfil solo abre el puerto 443 (tráfico cifrado TLS/SSL).
Por ahora, es mejor permitir solo conexiones en el puerto 80, ya que esta es una nueva instalación de Apache y aún no ha configurado un certificado TLS/SSL para permitir el tráfico HTTPS en su servidor.
Para permitir el tráfico solo en el puerto 80, utilice el perfil Apache:
sudo ufw allow in "Apache"Confirme el cambio con:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)Ahora se permite el tráfico en el puerto 80 a través del firewall.
Puede hacer una comprobación rápida de inmediato para asegurarse de que todo salió según lo previsto visitando la dirección IP pública de su servidor en un 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. Anteriormente, anteriormente):
http://your_server_ipLa página web predeterminada de Apache Ubuntu tiene fines informativos y de prueba. A continuación, se muestra un ejemplo de la página web predeterminada de Apache para Ubuntu 22.04:
Si puede ver esta página, su servidor web está correctamente instalado y es accesible a través de su firewall.
Cómo encontrar la dirección IP pública de su servidor
Si no conoce la dirección IP pública de su servidor, existen varias maneras de encontrarla. Normalmente, esta es la dirección que usa para conectarse a su servidor mediante SSH.
Hay varias maneras de hacerlo desde la línea de comandos. Primero, puedes usar la herramienta iproute2 para obtener tu dirección IP escribiendo lo siguiente:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'Esto devolverá dos o tres líneas. Todas son direcciones válidas, pero es posible que su computadora solo pueda usar una, así que pruebe cada una.
Un método alternativo es usar la herramienta curl para contactar a un tercero y decirle cómo ve su servidor. Esto se hace preguntando a un servidor específico cuál es su dirección IP:
curl http://icanhazip.comCualquiera sea el método que elija, escriba su dirección IP en su navegador web para comprobar que su servidor está funcionando.
Paso 2 – Instalar MySQL
Ahora que tiene un servidor web, necesita instalar un sistema de base de datos para almacenar y administrar los datos de su sitio. MySQL es un sistema de gestión de bases de datos popular en entornos PHP.
Utilice apt nuevamente para obtener e instalar este software:
sudo apt install mysql-serverCuando se le solicite, confirme la instalación escribiendo Y y luego INGRESAR Confirmar.
Una vez finalizada la instalación, se recomienda ejecutar un script de seguridad preinstalado en MySQL. Este script eliminará algunas configuraciones predeterminadas inseguras y bloqueará el acceso a su sistema de base de datos.
Inicie el script interactivo ejecutando lo siguiente:
sudo mysql_secure_installationEsta pregunta te pregunta si quieres PLUGIN DE VALIDAR CONTRASEÑA Configurar.
Para continuar sin activar, responda Y, sí o cualquier otra cosa.
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 pedirá que seleccione un nivel de validación de contraseña. Tenga en cuenta que si introduce 2 para el nivel más seguro, recibirá errores al intentar establecer una contraseña que no contenga números, mayúsculas, minúsculas ni caracteres especiales.
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: 1Independientemente de si activa el complemento "VALIDATE PASSWORD PLUGIN", el servidor le solicitará que elija y confirme una contraseña para el usuario root de MySQL. No debe confundirse con la contraseña del sistema. El usuario root de la base de datos es un usuario administrativo con privilegios completos en el sistema de base de datos. Aunque el método de autenticación predeterminado para el usuario root de MySQL no implica el uso de contraseña, incluso si se configura, debe definir una contraseña segura como medida de seguridad adicional.
Si tiene activada la verificación de contraseña, se le mostrará la seguridad de la contraseña raíz que acaba de introducir y el servidor le preguntará si desea continuar con esa contraseña. Si está conforme con su contraseña actual, marque "Y" cuando se le solicite.
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) : yPara el resto de las preguntas, presione Y y ENTER en cada solicitud. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, deshabilitará los inicios de sesión remotos de root y cargará estas nuevas reglas para que MySQL respete inmediatamente los cambios realizados.
Cuando haya terminado, pruebe si puede iniciar sesión en la consola MySQL escribiendo lo siguiente:
sudo mysqlEsto se conecta al servidor MySQL como usuario root de la base de datos administrativa, lo cual se deduce usando sudo al ejecutar este comando. A continuación, se muestra un ejemplo de salida:
Output
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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 MySQL, escriba:
exitTenga en cuenta que no necesita proporcionar una contraseña para conectarse como usuario root, incluso si la definió al ejecutar el script 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 lugar de una contraseña. Si bien esto puede parecer un problema de seguridad, aumenta la seguridad del servidor de bases de datos, ya que los únicos usuarios autorizados para iniciar sesión como usuario root de MySQL son los usuarios del sistema con privilegios sudo que se conectan desde la consola o mediante un programa que se ejecuta con los mismos privilegios. En la práctica, esto significa que no puede usar el usuario root de la base de datos administrativa para conectarse desde su aplicación PHP. Establecer una contraseña para la cuenta root de MySQL actúa como protección en caso de que el método de autenticación predeterminado cambie de unix_socket a contraseña.
Para mayor seguridad, es mejor configurar cuentas de usuario dedicadas con privilegios menos amplios para cada base de datos, especialmente si planea alojar varias bases de datos en su servidor.
Su servidor MySQL ya está instalado y protegido. A continuación, instalará PHP, el último componente de la pila LAMP.
Paso 3 – Instalar PHP
Ha instalado Apache para servir su contenido y MySQL para almacenar y administrar sus datos. PHP es la parte de nuestra configuración que procesa el código para mostrar contenido dinámico al usuario final. Además del paquete php, necesita php-mysql, un módulo PHP que permite que PHP se comunique con bases de datos basadas en MySQL. También necesita libapache2-mod-php para que Apache pueda gestionar archivos PHP. Los paquetes principales de PHP se instalan automáticamente como dependencias.
Para instalar estos paquetes, ejecute el siguiente comando:
sudo apt install php libapache2-mod-php php-mysqlUna vez completada la instalación, ejecute el siguiente comando para verificar su versión de PHP:
php -vOutput
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend TechnologiesCambiar el directorio de Apache (opcional)
En algunos casos, es necesario cambiar la forma en que Apache sirve los archivos al solicitar un directorio. Actualmente, si un usuario solicita un directorio al servidor, Apache busca primero un archivo llamado index.html. Queremos indicarle al servidor web que priorice los archivos PHP para que Apache busque primero un archivo index.php. De lo contrario, un archivo index.html ubicado en la raíz del documento de la aplicación siempre tendrá prioridad sobre el archivo index.php.
Para realizar este cambio, abra el archivo de configuración dir.conf en el editor de texto que prefiera. Aquí usaremos nano:
sudo nano /etc/apache2/mods-enabled/dir.conf
Tendrá este aspecto:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>Mueva el archivo de índice PHP (especificado anteriormente) a la primera posición después de la especificación DirectoryIndex, de la siguiente manera:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>Al terminar, guarde y cierre el archivo presionando CTRL+X. Confirme el guardado escribiendo Y y luego presione ENTER para confirmar la ubicación donde desea guardar el archivo.
Después de esto, reinicie el servidor web Apache para que los cambios surtan efecto. Puede hacerlo con el siguiente comando:
sudo systemctl restart apache2También puede comprobar el estado del servicio apache2 usando systemctl:
sudo systemctl status apache2Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
Main PID: 3719 (apache2)
Tasks: 55 (limit: 2361)
CGroup: /system.slice/apache2.service
├─3719 /usr/sbin/apache2 -k start
├─3721 /usr/sbin/apache2 -k start
└─3722 /usr/sbin/apache2 -k start
Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.Para salir de esta situación, Q Prensa .
Instalar extensiones PHP (opcional)
Para ampliar la funcionalidad de PHP, puede instalar algunos módulos adicionales. Para ver las opciones disponibles de módulos y bibliotecas de PHP, introduzca los resultados de búsqueda de apt en less, un buscador que le permite desplazarse por la salida de otros comandos:
apt search php- | lessUtilice las teclas de flecha para moverse hacia arriba y hacia abajo y presione el botón Q para salir.
Los resultados muestran todos los componentes opcionales que puedes instalar. Se ofrece una breve descripción de cada uno:
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php-l10n
…Para saber más sobre la función de cada módulo, puedes buscar información en internet. También puedes consultar las descripciones completas de los paquetes escribiendo:
apt show package_nameHabrá una gran cantidad de resultados, con un campo llamado Descripción que proporciona una explicación más detallada de la funcionalidad del módulo.
Por ejemplo, para saber qué hace el módulo php-cli, puedes escribir lo siguiente:
apt show php-cliJunto con una gran cantidad de otra información, encontrará algo como esto:
Output
…
Description: 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 Ubuntu's default
PHP version (currently 7.2).
…Si después de investigar decide que desea instalar un paquete, puede hacerlo utilizando el comando apt install, tal como lo haría con cualquier otro software.
Si decide que php-cli es lo que necesita, puede escribir:
sudo apt install php-cliSi desea instalar más de un módulo, puede hacerlo enumerando cada módulo, separado por un espacio, seguido del comando apt install, de la siguiente manera:
sudo apt install package1 package2 ...En este punto, su pila LAMP está instalada y configurada. Antes de continuar, le recomendamos configurar un host virtual Apache para almacenar la configuración de su servidor.
En este punto, su pila LAMP está completamente operativa, pero antes de probar su configuración con un script PHP, es una buena idea configurar un host virtual Apache adecuado para almacenar los archivos y carpetas de su sitio web.
Paso 4 – Crea un host virtual para tu sitio web
Al usar el servidor web Apache, puede crear hosts virtuales (similares a los bloques de servidor en Nginx) para encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. En esta guía, configuraremos un dominio llamado "your_domain", pero debe reemplazarlo con su propio nombre de dominio.
Apache en Ubuntu tiene un host virtual habilitado por defecto, configurado para servir documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede resultar complicado si se alojan varios. En lugar de cambiar /var/www/html, crearemos una estructura de directorios en /var/www para el sitio your_domain y dejaremos /var/www/html como el directorio predeterminado para servir documentos a menos que el cliente lo solicite. Coincide con cualquier otro sitio.
Cree un directorio para su_dominio de la siguiente manera:
sudo mkdir /var/www/your_domainA continuación, asigne la propiedad del directorio con la variable de entorno $USER, que hará referencia al usuario actual en su sistema:
sudo chown -R $USER:$USER /var/www/your_domainA continuación, abra un nuevo archivo de configuración en el directorio de sitios disponibles de Apache con su editor de línea de comandos preferido. Aquí usaremos nano:
sudo nano /etc/apache2/sites-available/your_domain.confEsto creará un nuevo archivo vacío. Agregue la siguiente configuración básica con su nombre de dominio:
<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>Cuando termines, guarda y cierra el archivo. Si usas nano, hazlo presionando CTRL+X, luego Y y ENTER.
Con esta configuración de VirtualHost, le indicamos a Apache que sirva "your_domain" usando /var/www/your_domain como directorio raíz web. Si desea probar Apache sin un nombre de dominio, puede eliminar o comentar las opciones ServerName y ServerAlias agregando un signo de almohadilla (#) al principio de cada línea de opción.
Ahora, usa a2ensite para activar el nuevo host virtual:
sudo a2ensite your_domainQuizás quieras deshabilitar el sitio web predeterminado instalado con Apache. Esto es necesario si no usas un nombre de dominio personalizado, ya que en ese caso Apache anulará la configuración predeterminada de tu host virtual. Para deshabilitar el sitio web predeterminado de Apache, escribe:
sudo a2dissite 000-default
Para asegurarse de que su archivo de configuración no contenga errores de sintaxis, ejecute el siguiente comando:
sudo apache2ctl configtestPor último, recargue Apache para que estos cambios surtan efecto:
sudo systemctl reload apache2Su nuevo sitio web ya está activo, pero la raíz web /var/www/your_domain sigue vacía. Cree un archivo index.html en esa ubicación para comprobar que el host virtual funciona correctamente:
nano /var/www/your_domain/index.htmlColoque el siguiente contenido en este archivo:
<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>Guarde y cierre el archivo, luego vaya a su navegador y acceda al nombre de dominio o dirección IP de su servidor:
http://server_domain_or_IPSu página web debe reflejar el contenido del archivo que acaba de editar:
Puede dejar este archivo como página de destino temporal para su aplicación hasta que configure un archivo index.php para reemplazarlo. Una vez hecho esto, recuerde eliminar o renombrar el archivo index.html de la raíz del documento, ya que tiene prioridad sobre el archivo index.php por defecto.
Una nota sobre DirectoryIndex en Apache
Con la configuración predeterminada de DirectoryIndex en Apache, el archivo index.html siempre tiene prioridad sobre el archivo index.php. Esto resulta útil para configurar páginas de mantenimiento en aplicaciones PHP, ya que crea un archivo index.html temporal que contiene un mensaje informativo para los visitantes. Dado que esta página tiene prioridad sobre la página index.php, se convierte en la página de destino de la aplicación. Una vez finalizado el mantenimiento, index.html se renombra o se elimina de la raíz del documento, restaurando la página normal de la aplicación.
Si desea cambiar este comportamiento, debe editar el archivo /etc/apache2/mods-enabled/dir.conf y cambiar el orden de indexación del archivo index.php en la directiva DirectoryIndex:
sudo nano /etc/apache2/mods-enabled/dir.conf<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>Después de guardar y cerrar el archivo, debe volver a cargar Apache para que los cambios surtan efecto:
sudo systemctl reload apache2A continuación, crearemos un script PHP para probar que PHP esté correctamente instalado y configurado en su servidor.
Paso 5: Pruebe el procesamiento de PHP en su servidor web
Ahora que tiene una ubicación personalizada para alojar los archivos y carpetas de su sitio web, cree un script de prueba PHP para verificar que Apache pueda manejar y procesar solicitudes de archivos PHP.
Cree un nuevo archivo llamado info.php en su carpeta raíz web personalizada:
nano /var/www/your_domain/info.phpEsto abrirá un archivo en blanco. Agregue el siguiente texto, que es código PHP válido, al archivo:
<?php
phpinfo();Cuando hayas terminado, guarda y cierra el archivo.
Para probar este script, vaya a su navegador web y acceda al nombre de dominio o dirección IP de su servidor, seguido del nombre del script, que en este caso es info.php:
http://server_domain_or_IP/info.phpA continuación se muestra un ejemplo de una página web PHP predeterminada:
Esta página proporciona información sobre su servidor desde una perspectiva PHP. Es útil para depurar y garantizar que la configuración se aplique correctamente.
Si ve esta página en su navegador, su instalación de PHP está funcionando como se esperaba.
Después de revisar la información de su servidor PHP en esa página, es recomendable eliminar el archivo que creó, ya que contiene información confidencial sobre su entorno PHP y su servidor Ubuntu. Para ello, use rm:
sudo rm /var/www/your_domain/info.phpSiempre puedes volver a crear esta página si necesitas acceder a la información nuevamente.
Paso 6 – Prueba de la conexión a la base de datos desde PHP (opcional)
Si desea comprobar si PHP puede conectarse a MySQL y ejecutar consultas a la base de datos, puede crear una tabla de prueba con datos de prueba y consultar su contenido desde un script PHP. Antes de hacerlo, debe crear una base de datos de prueba y un nuevo usuario MySQL configurado correctamente para acceder a ella.
Cree una base de datos llamada example_database y un usuario llamado example_user. Puede reemplazar estos nombres con valores diferentes.
Primero, conéctese a la consola MySQL usando la cuenta raíz:
sudo mysqlPara crear una nueva base de datos, ejecute el siguiente comando desde su consola MySQL:
CREATE DATABASE example_database;Ahora crea un nuevo usuario y dale privilegios completos en la base de datos personalizada que acabas de crear.
El siguiente comando crea un nuevo usuario llamado example_user, autenticado con el método caching_sha2_password. La contraseña de este usuario es "password", pero debe reemplazarla por una contraseña segura de su elección.
CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';Ahora otorgue a este usuario permisos en la base de datos example_database:
GRANT ALL ON example_database.* TO 'example_user'@'%';
Esto le otorga al usuario example_user privilegios completos sobre la base de datos example_database, al tiempo que evita que el usuario cree o modifique otras bases de datos en su servidor.
Ahora salga del shell MySQL:
exitPruebe si el nuevo usuario tiene los permisos adecuados iniciando sesión nuevamente en la consola MySQL, esta vez utilizando credenciales de usuario personalizadas:
mysql -u example_user -pTenga en cuenta el indicador -p en este comando, que le solicita que elija la contraseña que usó al crear el usuario example_user. Una vez iniciada la sesión en la consola MySQL, verifique que tenga acceso a la base de datos example_database:
SHOW DATABASES;Esto le dará el siguiente resultado:
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)Luego, cree una tabla de prueba llamada todo_list. Desde la consola 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 datos en la tabla de prueba. Repita el siguiente comando varias veces con diferentes valores para rellenar la tabla de prueba:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");Para verificar que los datos se guardaron correctamente en su tabla, ejecute:
SELECT * FROM example_database.todo_list;El resultado es el siguiente:
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 verificar que tiene datos válidos en su tabla de prueba, salga de la consola MySQL:
exitAhora puedes crear el script PHP que se conectará a MySQL y consultará tu contenido. Crea un nuevo archivo PHP en el directorio raíz de tu web personalizada con tu editor favorito:
nano /var/www/your_domain/todo_list.phpEl siguiente script PHP se conecta a una base de datos MySQL, busca el contenido de la tabla todo_list y muestra los resultados en una lista. Genera una excepción si hay un problema con la conexión a la base de datos.
Añade este contenido a tu script todo_list.php, recordando reemplazar example_user y tu contraseña:
<?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();
}Guarda y cierra el archivo cuando hayas terminado de editar.
Ahora puede acceder a esta página en su navegador web visitando el nombre de dominio o la dirección IP pública configurada para su sitio web seguido de /todo_list.php:
http://your_domain_or_IP/todo_list.phpEsta página web debe mostrarle a su visitante el contenido que incluyó en su tabla de prueba:
Esto significa que su entorno PHP está listo para conectarse e interactuar con su servidor MySQL.
Resultado
En esta guía, ha creado una base flexible para entregar sitios web y aplicaciones PHP a sus visitantes utilizando Apache como servidor web y MySQL como sistema de base de datos.
Como paso inmediato, debe asegurarse de que las conexiones a su servidor web sean seguras mediante HTTPS. Para ello, puede usar Let's Encrypt en Ubuntu 22.04/20.04/18.04 para proteger su sitio web con un certificado TLS/SSL gratuito.













