🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Prueba de PHP
  • Prueba de conexión de base de datos
  1. Servicios
  2. Web
  3. Apache
  4. Instalación de LAMP en Ubuntu

Prueba de servidor LAMP

Antes de empezar con la instalación de WordPress, deberíamos probar que funcionen los servicios

AnteriorInstalación de LAMP en UbuntuSiguienteConfiguración de seguridad de Ubuntu

Última actualización hace 1 mes

Prueba de PHP

Ahora que tienes una ubicación personalizada para alojar los archivos y carpetas de tu sitio web, crearemos un script de prueba PHP para confirmar que Apache puede manejar y procesar solicitudes de archivos PHP. Para ello, crea un nuevo archivo llamado info.php dentro de tu carpeta raíz web personalizada:

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

Esto abrirá un archivo en blanco. Agrega el siguiente texto, que es código PHP válido, dentro del archivo:

<?php
phpinfo();

Cuando hayas terminado, guarda y cierra el archivo.

Para probar este script, ves a tu navegador web y accede al nombre de dominio o dirección IP de tu servidor, seguido del nombre del script, que en este caso es:

http://server_domain_or_IP/info.php

Verás una página como esta:

Prueba de conexión de base de datos

Si deseas probar si PHP puede conectarse a MySQL y ejecutar consultas de base de datos, puedes crear una tabla de prueba con datos ficticios y consultar su contenido desde un script PHP. Antes de que podamos hacer eso, necesitamos crear una base de datos de prueba y un nuevo usuario de MySQL configurado correctamente para acceder a ella.

Necesitaremos crear un nuevo usuario con el método de autenticación mysql_native_password para poder conectarnos a la base de datos MySQL desde PHP.

Crearemos una base de datos llamada example_database y un usuario llamado example_user, pero puede reemplazar estos nombres con valores diferentes.

Primero, conéctate a la consola MySQL usando la cuenta raíz:

$ sudo mysql

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

mysql> CREATE DATABASE example_database;

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

El siguiente comando crea un nuevo usuario denominado example_user, utilizando como método de autenticación predeterminado mysql_native_password. Estamos definiendo la contraseña de este usuario como password, pero deberías reemplazar este valor con una contraseña segura.

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

Ahora necesitamos dar permiso a este usuario sobre la base de datos creada:

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

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

Sal de MySQL con exit,ahora puede probar si el nuevo usuario tiene los permisos adecuados iniciando sesión de nuevo en la consola MySQL, esta vez utilizando las credenciales de usuario personalizadas:

$ mysql -u example_user -p

Observe el -p en este comando, que le pedirá la contraseña utilizada al crear el usuario. Después de iniciar sesión en la consola MySQL, confirme que tiene acceso a la base de datos example_database:

mysql> SHOW DATABASES;

Esto le dará el siguiente resultado:

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

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

mysql> 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 desee repetir el siguiente comando varias veces, utilizando valores diferentes:

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

Para confirmar que los datos se guardaron correctamente en la tabla, ejecute:

mysql> 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 tiene datos válidos en la tabla de prueba, puede salir de la consola MySQL.

Ahora puede crear el script PHP que se conectará a MySQL y consultará su contenido. Cree un nuevo archivo PHP en su directorio raíz web personalizado utilizando su editor preferido. Usaremos para eso:nano

nano /var/www/your_domain/todo_list.php

El siguiente script PHP se conecta a la base de datos MySQL y consulta el contenido de la tabla todo_list, exhibiendo los resultados en una lista. Si hay un problema con la conexión de la base de datos, generará una excepción. Copia este contenido en tu script: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();
}

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.php

Debería ver una página como esta, que muestra el contenido que ha insertado en su tabla de prueba:

Eso significa que su entorno PHP está listo para conectarse e interactuar con su servidor MySQL.

Ejemplo de lista de tareas pendientes de PHP
🗃️
Page cover image
How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04 | DigitalOcean
Logo