0% encontró este documento útil (0 votos)
21 vistas20 páginas

LAMP

El documento es una guía para instalar y configurar un entorno LAMP (Linux, Apache, MySQL, PHP) en Ubuntu. Incluye instrucciones detalladas sobre la instalación de cada componente, la creación de un proyecto web de agenda con operaciones CRUD y la configuración de bases de datos. También se abordan temas de mantenimiento y administración del entorno LAMP, así como ejemplos de código para facilitar el desarrollo de aplicaciones web.

Cargado por

Alonso Islas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas20 páginas

LAMP

El documento es una guía para instalar y configurar un entorno LAMP (Linux, Apache, MySQL, PHP) en Ubuntu. Incluye instrucciones detalladas sobre la instalación de cada componente, la creación de un proyecto web de agenda con operaciones CRUD y la configuración de bases de datos. También se abordan temas de mantenimiento y administración del entorno LAMP, así como ejemplos de código para facilitar el desarrollo de aplicaciones web.

Cargado por

Alonso Islas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

L.A.M.P.

Linux - Apache - MySQL - PHP


Una pequeña Guia
Introducción a LAMP y Preparación del Sistema

Un entorno LAMP es un conjunto de software de código abierto que se utiliza para crear y
alojar sitios web dinámicos y aplicaciones. El acrónimo significa:
●​ Linux: El sistema operativo.
●​ Apache: El servidor web.
●​ MySQL: El sistema de gestión de bases de datos.
●​ PHP: El lenguaje de programación del lado del servidor.

Juntos, estos componentes forman una plataforma robusta y flexible para el desarrollo web.
Este tutorial se centra en la instalación en Ubuntu, una de las distribuciones de Linux más
populares.

Requisitos previos

Antes de comenzar, asegúrate de tener:


●​ Una instalación limpia y actualizada de Ubuntu.
●​ Acceso a una terminal (puedes usar Ctrl + Alt + T).
●​ Privilegios de sudo.
Instalación de Apache, MySQL y PHP

La instalación de los componentes de LAMP es un proceso sencillo gracias al gestor de


paquetes de Ubuntu, APT.

Paso 1: Instalar Apache

Apache es el servidor web que mostrará tu sitio a los visitantes. Para instalarlo, ejecuta el
siguiente comando:

sudo apt update


sudo apt install apache2
Una vez completada la instalación, el servicio de Apache debería iniciarse automáticamente.
Para verificar que todo funciona correctamente, abre tu navegador web y visita la dirección
http://localhost. Deberías ver la página predeterminada de Apache de Ubuntu.

Paso 2: Instalar MySQL

MySQL es el servidor de bases de datos que almacenará la información de tu sitio web (como
usuarios, posts, etc.). Instálalo con el siguiente comando:

sudo apt install mysql-server

Después de la instalación, es una buena práctica ejecutar un script de seguridad que viene
con MySQL. Esto te ayudará a asegurar tu base de datos eliminando usuarios de prueba y
configuraciones inseguras.

sudo mysql_secure_installation

El script te hará varias preguntas. Para la mayoría de los usuarios, es seguro responder Y (sí) a
todas las preguntas. Se te pedirá que configures una contraseña para el usuario root de
MySQL.
Paso 3: Instalar PHP

PHP es el lenguaje de programación que procesa el código de tu sitio web para generar
HTML. Instala PHP y algunos módulos necesarios para que funcione con Apache y MySQL:

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

El módulo libapache2-mod-php permite que Apache ejecute archivos PHP, y php-mysql le


permite a PHP conectarse a bases de datos MySQL. Después de la instalación, Apache
debería procesar los archivos PHP de forma automática.
Verificación de la Configuración LAMP

Ahora que todos los componentes están instalados, es crucial verificar que están
funcionando juntos correctamente.

Crear un archivo de prueba PHP

Vamos a crear un archivo llamado info.php en el directorio raíz de Apache para verificar la
configuración. El directorio raíz de Apache en Ubuntu es /var/www/html/.
1.​ Abre un editor de texto con privilegios de administrador para crear el archivo:​
sudo nano /var/www/html/info.php
2.​ En el archivo, pega el siguiente código PHP:​
<?php phpinfo(); ?>
3.​ Guarda el archivo (Ctrl + O, Enter) y sal del editor (Ctrl + X).
4.​ Abre tu navegador y visita http://localhost/info.php.

Deberías ver una página con información detallada sobre tu instalación de PHP, incluyendo la
versión y los módulos activos. Si ves esta página, ¡felicidades! Tu entorno LAMP está
funcionando.

Acceso a la línea de comandos de MySQL

Para administrar tus bases de datos, puedes usar la línea de comandos de MySQL.

sudo mysql -u root -p

El sistema te pedirá la contraseña que configuraste durante el proceso de instalación segura.


Una vez dentro, verás el prompt de MySQL, donde puedes ejecutar comandos SQL como
SHOW DATABASES;. Para salir, escribe exit.
Configuración de Entornos Virtuales y Permisos

Para desarrollar múltiples proyectos en tu máquina, es una buena práctica usar Hosts
Virtuales en Apache. Esto te permite tener diferentes dominios locales (como
http://mi-proyecto.local) para cada proyecto.

Paso 1: Crear un directorio para tu proyecto

Crea un directorio para tu proyecto en /var/www/.

sudo mkdir /var/www/mi-proyecto

Paso 2: Asignar permisos

Por seguridad, el usuario www-data de Apache debe tener los permisos correctos para
acceder a tu directorio. Si estás trabajando con un editor de código como Visual Studio Code,
también necesitas permisos.

sudo chown -R $USER:www-data /var/www/mi-proyecto


sudo chmod -R 775 /var/www/mi-proyecto
Esto asigna la propiedad a tu usuario y al grupo de Apache, y da permisos de lectura,
escritura y ejecución al propietario y al grupo.

Paso 3: Configurar el Host Virtual

Crea un archivo de configuración para tu sitio.


1.​ sudo nano /etc/apache2/sites-available/mi-proyecto.conf
2.​ Pega el siguiente contenido, ajustando ServerName y DocumentRoot:​
Apache​
<VirtualHost *:80>​
ServerName mi-proyecto.local​
ServerAdmin webmaster@localhost​
DocumentRoot /var/www/mi-proyecto​
ErrorLog ${APACHE_LOG_DIR}/error.log​
CustomLog ${APACHE_LOG_DIR}/access.log combined​
</VirtualHost>​

3.​ Guarda y sal del archivo.


4.​ Habilita el host virtual y reinicia Apache.​
sudo a2ensite mi-proyecto.conf​
sudo systemctl restart apache2
Uso y Mantenimiento del Entorno LAMP

Paso 4: Modificar el archivo hosts

Para que tu navegador sepa que mi-proyecto.local debe apuntar a tu máquina local, debes
modificar el archivo hosts.
1.​ sudo nano /etc/hosts
2.​ Añade la siguiente línea al final del archivo:​
127.0.0.1 mi-proyecto.local
3.​ Guarda y sal.

Ahora, puedes visitar http://mi-proyecto.local en tu navegador y Apache servirá los archivos


desde /var/www/mi-proyecto.

Uso y Mantenimiento

●​ Administración de bases de datos: Para una gestión más sencilla de las bases de
datos, puedes instalar una herramienta web como phpMyAdmin.​
sudo apt install phpmyadmin​
Sigue las instrucciones de instalación en pantalla. Una vez completado, podrás acceder a
phpMyAdmin en http://localhost/phpmyadmin.
●​ Reiniciar servicios: Si realizas cambios en la configuración de Apache o MySQL, es
posible que necesites reiniciar los servicios:​
sudo systemctl restart apache2​
sudo systemctl restart mysql
●​ Deshabilitar un host virtual:​
sudo a2dissite mi-proyecto.conf

Este tutorial te ha proporcionado una base sólida para instalar, configurar y usar tu propio
entorno de desarrollo LAMP. Con esta configuración, puedes empezar a crear aplicaciones
web y bases de datos en tu máquina local.
Proyecto de ejemplo
Agenda
Estructura del Proyecto y Configuración de la Base de Datos

Un proyecto web bien organizado facilita su desarrollo y mantenimiento. La estructura de


carpetas que usaremos será sencilla para este tutorial.

Estructura de Directorios

Crea la siguiente estructura de carpetas en tu servidor web (por ejemplo, en /var/www/html/ si


estás en Ubuntu):

Bash

/var/www/html/agenda/​
├── index.php​
├── crear.php​
├── editar.php​
├── eliminar.php​
├── db.php​
└── estilos.css​

●​ index.php: Página principal que lista todos los contactos.


●​ crear.php: Formulario para agregar un nuevo contacto.
●​ editar.php: Formulario para editar un contacto existente.
●​ eliminar.php: Script para eliminar un contacto.
●​ db.php: Archivo de conexión a la base de datos.
●​ estilos.css: Archivo de estilos básicos (opcional, para mejorar la apariencia).
Configuración de la Base de Datos

Utilizaremos MySQL para almacenar los datos de la agenda. Abre tu terminal y accede a
MySQL con el usuario root (o el usuario que hayas configurado).

Bash

sudo mysql -u root -p​

Una vez dentro, crea la base de datos y la tabla contactos.

SQL

CREATE DATABASE agenda;​



USE agenda;​

CREATE TABLE contactos (​
id INT AUTO_INCREMENT PRIMARY KEY,​
nombre VARCHAR(50) NOT NULL,​
apellidos VARCHAR(50) NOT NULL,​
telefono VARCHAR(15),​
correo VARCHAR(100),​
domicilio VARCHAR(255)​
);​

EXIT;​
Conexión a la Base de Datos (db.php) y Archivo Principal (index.php)

El siguiente paso es crear el script de conexión a la base de datos y la página principal que
mostrará la lista de contactos.

Archivo db.php

Este archivo contendrá la lógica de conexión. Utilizaremos la extensión PDO (PHP Data
Objects), que es más segura y moderna que las funciones de MySQL antiguas.

/var/www/html/agenda/db.php

PHP

<?php​
$host = 'localhost';​
$db = 'agenda';​
$user = 'root'; // Cambia esto si no usas root​
$pass = 'tu_contraseña'; // Cambia por tu contraseña de MySQL​
$charset = 'utf8mb4';​

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";​
$options = [​
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,​
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,​
PDO::ATTR_EMULATE_PREPARES => false,​
];​

try {​
$pdo = new PDO($dsn, $user, $pass, $options);​
} catch (\PDOException $e) {​
throw new \PDOException($e->getMessage(), (int)$e->getCode());​
}​
?>​
Archivo index.php

Este archivo se encargará de mostrar la tabla de contactos y los enlaces para las operaciones
CRUD.

/var/www/html/agenda/index.php

PHP

<?php​
require 'db.php';​

$stmt = $pdo->query('SELECT * FROM contactos');​
$contactos = $stmt->fetchAll();​
?>​

<!DOCTYPE html>​
<html lang="es">​
<head>​
<meta charset="UTF-8">​
<title>Agenda de Contactos</title>​
<link rel="stylesheet" href="estilos.css">​
</head>​
<body>​
<h1>Agenda de Contactos</h1>​
<p><a href="crear.php">Agregar nuevo contacto</a></p>​
<table>​
<thead>​
<tr>​
<th>Nombre</th>​
<th>Teléfono</th>​
<th>Correo</th>​
<th>Acciones</th>​
</tr>​
</thead>​
<tbody>​
<?php foreach ($contactos as $contacto): ?>​
<tr>​
<td><?= htmlspecialchars($contacto['nombre']) . ' ' .
htmlspecialchars($contacto['apellidos']) ?></td>​
<td><?= htmlspecialchars($contacto['telefono']) ?></td>​
<td><?= htmlspecialchars($contacto['correo']) ?></td>​
<td>​
<a href="editar.php?id=<?= $contacto['id'] ?>">Editar</a> |​
<a href="eliminar.php?id=<?= $contacto['id'] ?>" onclick="return confirm('¿Estás
seguro de que quieres eliminar este contacto?')">Eliminar</a>​
</td>​
</tr>​
<?php endforeach; ?>​
</tbody>​
</table>​
</body>​
</html>​

Lógica para Crear y Editar Contactos

Los siguientes archivos contendrán los formularios y la lógica para crear y actualizar los
registros en la base de datos.

Archivo crear.php

Este archivo mostrará un formulario y procesará los datos para insertar un nuevo contacto en
la base de datos.

/var/www/html/agenda/crear.php

PHP

<?php​
require 'db.php';​

if ($_SERVER['REQUEST_METHOD'] === 'POST') {​
$sql = "INSERT INTO contactos (nombre, apellidos, telefono, correo, domicilio) VALUES (?, ?, ?, ?, ?)";​
$stmt= $pdo->prepare($sql);​
$stmt->execute([​
$_POST['nombre'],​
$_POST['apellidos'],​
$_POST['telefono'],​
$_POST['correo'],​
$_POST['domicilio']​
]);​
header('Location: index.php');​
exit;​
}​
?>​

<!DOCTYPE html>​
<html lang="es">​
<head>​
<meta charset="UTF-8">​
<title>Crear Contacto</title>​
<link rel="stylesheet" href="estilos.css">​
</head>​
<body>​
<h1>Crear Contacto</h1>​
<form method="post">​
<label>Nombre: <input type="text" name="nombre" required></label><br>​
<label>Apellidos: <input type="text" name="apellidos" required></label><br>​
<label>Teléfono: <input type="text" name="telefono"></label><br>​
<label>Correo: <input type="email" name="correo"></label><br>​
<label>Domicilio: <input type="text" name="domicilio"></label><br>​
<button type="submit">Guardar</button>​
<a href="index.php">Cancelar</a>​
</form>​
</body>​
</html>​
Archivo editar.php

Este archivo recuperará los datos de un contacto por su ID, los mostrará en un formulario y, al
enviarlo, actualizará el registro.

/var/www/html/agenda/editar.php

PHP

<?php​
require 'db.php';​

$id = $_GET['id'] ?? null;​
if (!$id) {​
header('Location: index.php');​
exit;​
}​

if ($_SERVER['REQUEST_METHOD'] === 'POST') {​
$sql = "UPDATE contactos SET nombre=?, apellidos=?, telefono=?, correo=?, domicilio=? WHERE
id=?";​
$stmt= $pdo->prepare($sql);​
$stmt->execute([​
$_POST['nombre'],​
$_POST['apellidos'],​
$_POST['telefono'],​
$_POST['correo'],​
$_POST['domicilio'],​
$id​
]);​
header('Location: index.php');​
exit;​
} else {​
$stmt = $pdo->prepare('SELECT * FROM contactos WHERE id = ?');​
$stmt->execute([$id]);​
$contacto = $stmt->fetch();​
if (!$contacto) {​
header('Location: index.php');​
exit;​
}​
}​
?>​

<!DOCTYPE html>​
<html lang="es">​
<head>​
<meta charset="UTF-8">​
<title>Editar Contacto</title>​
<link rel="stylesheet" href="estilos.css">​
</head>​
<body>​
<h1>Editar Contacto</h1>​
<form method="post">​
<input type="hidden" name="id" value="<?= htmlspecialchars($contacto['id']) ?>">​
<label>Nombre: <input type="text" name="nombre" value="<?=
htmlspecialchars($contacto['nombre']) ?>" required></label><br>​
<label>Apellidos: <input type="text" name="apellidos" value="<?=
htmlspecialchars($contacto['apellidos']) ?>" required></label><br>​
<label>Teléfono: <input type="text" name="telefono" value="<?=
htmlspecialchars($contacto['telefono']) ?>"></label><br>​
<label>Correo: <input type="email" name="correo" value="<?=
htmlspecialchars($contacto['correo']) ?>"></label><br>​
<label>Domicilio: <input type="text" name="domicilio" value="<?=
htmlspecialchars($contacto['domicilio']) ?>"></label><br>​
<button type="submit">Actualizar</button>​
<a href="index.php">Cancelar</a>​
</form>​
</body>​
</html>​

Lógica para Eliminar Contactos y Estilos Básicos

El último archivo procesará la eliminación de un registro. Además, se añade un archivo de


estilos para mejorar la presentación de la agenda.

Archivo eliminar.php
Este script se encargará de eliminar un contacto basado en el ID que se recibe por la URL.

/var/www/html/agenda/eliminar.php

PHP

<?php​
require 'db.php';​

$id = $_GET['id'] ?? null;​

if ($id) {​
$stmt = $pdo->prepare('DELETE FROM contactos WHERE id = ?');​
$stmt->execute([$id]);​
}​

header('Location: index.php');​
exit;​

Archivo estilos.css (Opcional)

Añadir un archivo de estilos simples hará que la interfaz se vea mucho mejor.

/var/www/html/agenda/estilos.css

CSS

body {​
font-family: Arial, sans-serif;​
background-color: #f4f4f4;​
color: #333;​
padding: 20px;​
}​
h1, h2 {​
color: #0056b3;​
}​
p {​
margin-bottom: 20px;​
}​
table {​
width: 100%;​
border-collapse: collapse;​
margin-bottom: 20px;​
background-color: #fff;​
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);​
}​
th, td {​
padding: 12px;​
border: 1px solid #ddd;​
text-align: left;​
}​
th {​
background-color: #007bff;​
color: white;​
}​
tr:nth-child(even) {​
background-color: #f2f2f2;​
}​
a {​
color: #007bff;​
text-decoration: none;​
}​
a:hover {​
text-decoration: underline;​
}​
form {​
background-color: #fff;​
padding: 20px;​
border-radius: 5px;​
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);​
}​
label {​
display: block;​
margin-bottom: 10px;​
}​
input[type="text"], input[type="email"] {​
width: 100%;​
padding: 8px;​
margin-top: 5px;​
border: 1px solid #ccc;​
box-sizing: border-box;​
}​
button, a.button {​
background-color: #007bff;​
color: white;​
padding: 10px 15px;​
border: none;​
border-radius: 4px;​
cursor: pointer;​
text-decoration: none;​
}​
button:hover, a.button:hover {​
background-color: #0056b3;​
}​

También podría gustarte