1.
Actualizar
sudo apt update && sudo apt upgrade
sudo ubuntu-drivers autoinstall
2. Instalar el driver para RTL8188EUS
Instalar desde repositorios oficiales
sudo apt update
sudo apt install firmware-realtek
sudo apt install dkms build-essential git
git clone https://github.com/aircrack-ng/rtl8188eus.git
cd rtl8188eus
make
sudo make install
sudo modprobe 8188eu
3. Instalar gedit
sudo apt install gedit -y
4. Comprobar SSH
sudo systemctl status ssh
Nota: Presiona la tecla “q” para cerrar la respuesta de estado SSH y volver a
la entrada de la línea de comandos.
5. Instalar SSH
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
6. Instalar Apache
Apache es el servidor web que manejara las peticiones HTTP. Para instalarlo,
ejecuta:
sudo apt install apache2 -y
Inicia el servicio de Apache y habilítalo para que se inicie automáticamente
con el sistema:
sudo systemctl start apache2
sudo systemctl enable apache2
7. Instalar MySQL o MariaDB
Ahora vamos a instalar el sistema de gestión de bases de datos. Puedes
elegir entre MySQL o MariaDB. Vamos a usar MariaDB, que es un fork de
MySQL y completamente compatible.
Para instalar MariaDB:
sudo apt install mariadb-server mariadb-client -y
Una vez instalado, inicia y habilita el servicio:
sudo systemctl start mariadb
sudo systemctl enable mariadb
A continuación, realiza la configuración inicial de seguridad para MariaDB:
sudo mysql_secure_installation
Te pedirá algunas configuraciones de seguridad, como establecer una
contraseña para el usuario root de MariaDB, eliminar usuarios anónimos,
deshabilitar el inicio de sesión remoto para el usuario root, etc. Responde
“sí” a todas las preguntas recomendadas.
8. Instalar PHP
PHP es el lenguaje de programación que manejará la parte dinámica de tu
sitio web. Vamos a instalar PHP junto con algunos módulos necesarios para
que funcione correctamente con Apache y MariaDB.
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd
php-xml php-mbstring -y
Verifica que PHP se haya instalado correctamente ejecutando:
php -v
Configurar Apache para trabajar con PHP
Apache debe estar configurado para ejecutar scripts PHP. Asegúrate de que
el módulo PHP esté habilitado:
sudo a2enmod php (no siempre funciona verificar la versión de PHP)
sudo a2enmod php8.3 (Recomendable según la versión)
Luego, reinicia Apache para aplicar los cambios:
sudo systemctl restart apache2
8.1. Verificar que PHP esté funcionando con Apache
Asegúrate de que PHP se está ejecutando correctamente en Apache creando
un archivo info.php en el directorio web de Apache:
sudo nano /var/www/html/info.php
Agrega el siguiente código:
<?php
phpinfo();
?>
Guarda y cierra el archivo(CTRL+O) y luego (CTRL+X), luego abre tu
navegador y visita http://localhost/info.php.
9. Instalar PHPmyADMIN
Actualizar el sistema: Abre una terminal y ejecuta los siguientes
comandos para actualizar los paquetes:
sudo apt update
sudo apt
sudo apt install phpmyadmin
Nuestro usuario será: root
Nuestro passw de pruebas: 1234567890
Reiniciar los servicios: Reinicia Apache y MariaDB para asegurarte de que
los cambios surtan efecto:
sudo systemctl restart apache2
sudo systemctl restart mariadb
Acceder a phpMyAdmin: Abre tu navegador web y ve a
http://localhost/phpmyadmin. Inicia sesión con el usuario y la contraseña
que configuraste.
10. Instalar Python
Verificamos la versión de python instalada
python3 –version
En caso de no tener una versión de python instalado (poco probable)
sudo apt install python3
11. Instalar Servidor FTP
Ahora vamos a instalar un servidor de archivos FTP para poder actualizar
nuestros archivos de forma remota, es decir cargar archivos por ejemplo de
nuestros sitios WEB.
Vsftpd, Este es uno de los servidores FTP más populares para Linux.
sudo apt update
sudo apt install vsftpd
Configurar vsftpd: Edita el archivo de configuración de vsftpd para
personalizarlo según tus necesidades:
sudo nano /etc/vsftpd.conf
Editamos el archivo:
Listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
Guardamos y salimos
Permitir el acceso al firewall: Si tienes ufw (Uncomplicated Firewall)
habilitado, necesitas permitir el acceso al puerto FTP (21):
sudo ufw allow 21/tcp
Reiniciar el servicio vsftpd: Para aplicar los cambios, reinicia el servicio:
sudo systemctl restart vsftpd
Crear un usuario FTP: Crea un usuario y asignamos una contraseña, el
usuario nos servirá para actualizar los archivos de forma remota:
sudo useradd -m UsuarioFTP
sudo passwd UsuarioFTP
Nueva contraseña: Redes2UNIVALLE
Vuelva a escribir la nueva contraseña: Redes2UNIVALLE
Para qie un usuario FTP tenga acceso para subir archivos directamente a la
raíz del directorio web (por ejemplo, /var/www/html), necesitarás ajustar
algunas configuraciones:
Crear un enlace simbólico (opcional):
Puedes crear un enlace simbólico dentro del directorio del usuario FTP
que apunte a la raíz del directorio web:
sudo ln -s /var/www/html /home/UsuarioFTP/webroot
Permisos:
Asegúrate de que el usuario FTP tenga los permisos adecuados para el
directorio web:
sudo chown UsuarioFTP:UsuarioFTP /var/www/html
sudo chmod 755 /var/www/html
sudo mkdir -p /var/run/vsftpd/empty
sudo chown root:root /var/run/vsftpd/empty
sudo chmod 755 /var/run/vsftpd/empty
Aplicamos los cambios reiniciando vsftpd:
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
12. Instalar EMQX en Ubuntu
Actualiza la lista de paquetes:
Antes de comenzar, asegúrate de que tu sistema esté actualizado:
sudo apt update
https://www.emqx.com/en/blog/how-to-install-emqx-mqtt-broker-on-ubuntu
sudo apt install curl
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo
bash
sudo apt-get install emqx
sudo emqx start
Verificamos si los puertos están abiertos:
netstat -tunlp
Acceso al panel
EMQX proporciona un panel para que los usuarios administren y monitoreen
EMQX y configuren las funciones requeridas a través de páginas web.
Se puede acceder al Panel a través de un navegador en:
Acceso local
http://localhost:18083/
Acceso Remoto
http://192.168.100.253:18083/
El nombre de usuario predeterminado del Panel es: admin
La contraseña es: public
Después del primer inicio de sesión exitoso, se le pedirá que cambie la
contraseña.
OJO CON LAS ACTUALIZACIONES DEL SO UBUNTU, AFECTAN TODOS LOS
SERVICIOS Y PODRÍAN PERDER CIERTAS FUNCIONALIDADES COMO EMQX:
En caso de que EMQX deje de funcionar una solución es reinstalar, para lo
cual:
reinstalar EMQX correctamente para recuperar todos los plugins.
sudo systemctl stop emqx
sudo apt-get remove --purge emqx -y
sudo rm -rf /etc/emqx /var/lib/emqx /var/log/emqx
Luego reinstala EMQX 5.x, ojo que se perderán todas las configuraciones,
esto es una medida de ultimo recurso
13. Verificar el estado del firewall
Lo primero es verificar si UFW está activo o no.
Abre una terminal y escribe:
sudo ufw status
Si el firewall está activo, verás una lista de las reglas que están
configuradas. Si está inactivo, te dirá que está inactivo.
Activar FW:
sudo ufw enable
Desactivar FW:
sudo ufw disable
14. Primero pasos con el servidor WEB Apache
A. Trabajo local o remoto bajo consola:
Sino vamos a trabajar localmente lo podemos hacer remotamente con un
gestor de conexiones o gestor de Hyperterminal como PUTTY(open source) o
SECURE CRT (Closed source)
Con Secure CRT:
Usando atajos de teclado
Copiar: Ctrl + Shift + C
Pegar: Ctrl + Shift + V
B. Sistema de archivos en LINUX
Para tomar en cuenta, siempre que iniciamos una sesión en LINUX,
comenzamos por defecto en la ruta HOME del usuario por defecto
/home/nombre_usuario
Ingresamos a los archivos con el comando cd y volvemos o subimos un
nivel con el comando cd ..
Estructura del Sistema de Archivos en Ubuntu
Ubuntu (como cualquier sistema basado en Linux) sigue el estándar
Filesystem Hierarchy Standard (FHS), lo que significa que cada
directorio tiene una función específica.
Aquí están los principales directorios y sus usos:
/etc – Configuración del sistema
Contiene los archivos de configuración del sistema y servicios.
Ejemplos importantes:
/etc/apache2/ → Configuración de Apache
/etc/hosts → Define nombres de dominio locales
/etc/passwd → Lista de usuarios
/etc/fstab → Configuración de puntos de montaje
Importante: Editar estos archivos sin precaución puede afectar el sistema.
Usa sudo y realiza copias de seguridad.
/var – Datos variables
Almacena datos que cambian constantemente, como logs, cachés y
archivos temporales.
Ejemplos clave:
/var/www/ → Sitios web de Apache
/var/log/ → Registros del sistema y servicios (syslog, auth.log,
apache2/, etc.)
/var/lib/ → Bases de datos y archivos de estado de servicios (mysql/,
dpkg/, etc.)
/var/spool/ → Colas de impresión y correos
Importante: Si /var se llena, los servicios pueden fallar. Puedes revisar el
uso con:
du -sh /var/*
/home – Directorios de los usuarios
Aquí están las carpetas personales de los usuarios del sistema.
Ejemplo:
/home/remmy/ → Directorio personal del usuario “remmy”
Contiene Documentos/, Descargas/, Escritorio/, .rc, etc.
Importante:
Los archivos de configuración de cada usuario están ocultos
(.config/, .rc, .ssh/).
Se recomienda no usar root para trabajar, sino un usuario regular con
sudo.
/dev – Dispositivos del sistema
Contiene archivos especiales que representan dispositivos físicos y virtuales.
Ejemplos clave:
/dev/sda → Disco duro principal
/dev/tty* → Consolas y terminales
/dev/null → “Basurero” del sistema (redirigir salida no deseada)
/dev/random → Generador de números aleatorios
Importante:
Puedes verificar discos con:
lsblk
Puedes montar particiones manualmente desde aquí.
/media y /mnt – Dispositivos montados
Se usan para montar unidades externas (USB, discos, ISO, etc.).
/media/usuario/ → Punto de montaje automático de unidades
extraíbles.
/mnt/ → Punto de montaje manual temporal.
Ejemplo de montaje manual:
sudo mount /dev/sdb1 /mnt
Para desmontar:
sudo umount /mnt
/usr – Programas y librerías del usuario
Contiene la mayoría de los programas instalados en el sistema.
Ejemplos clave:
/usr/bin/ → Programas ejecutables para todos los usuarios (ls, nano,
vim, python, etc.).
/usr/local/ → Programas instalados manualmente por el administrador.
/usr/share/ → Datos compartidos (iconos, temas, documentación).
Importante:
No confundas /bin/ con /usr/bin/, ambos contienen ejecutables,
pero /bin/ es solo para los esenciales del sistema.
Otros directorios importantes
📂 /bin → Comandos esenciales (ls, cp, mv, rm, cat).
📂 /sbin → Comandos de administración (fdisk, reboot, iptables).
📂 /boot → Archivos de arranque del sistema (grub, kernel).
📂 /root → Carpeta personal del superusuario root.
📂 /tmp → Archivos temporales (se eliminan al reiniciar).
📂 /opt → Programas de terceros instalados manualmente.
📂 /proc y /sys → Información en tiempo real del sistema.
Comandos útiles para explorar el sistema de archivos
🔎 Listar archivos con detalles
ls -lah /etc
Ver el tamaño de cada directorio en /var/
du -sh /var/*
Mostrar información del sistema y procesos
df -h # Espacio en disco
free -h # Memoria RAM usada
top # Procesos en tiempo real
Ver el contenido de archivos de configuración
cat /etc/fstab
less /var/log/syslog
Entonces:
/etc → Archivos de configuración del sistema.
/var → Datos variables como logs y bases de datos.
/home → Carpetas de usuarios.
/dev → Dispositivos físicos y virtuales.
/media y /mnt → Montaje de discos externos.
/usr → Programas y librerías del usuario.
C. Verificar si Apache(web server) está corriendo:
Ejecuta el siguiente comando en la terminal:
sudo systemctl status apache2
Si el servicio está activo (running), significa que Apache está
funcionando:
Si queremos la ayuda para un determinado comando usamos -h
Si está inactivo o fallando, puedes iniciarlo con: sudo systemctl
start apache2
Si queremos reiniciar el servicio, lo hacemos con: sudo systemctl
restart apache2
Para asegurarte de que Apache inicie automáticamente con el
sistema: sudo systemctl enable apache2
Para verificar desde el navegador, accede a:
http://localhost o http://IP_del equipo
Si vemos la página de prueba de Apache, significa que está funcionando
correctamente.
D. Sistema de Archivos de Apache:
En Ubuntu, los archivos públicos de Apache están en:
/var/www/html/
Podemos situarnos en la carpeta usando el comando
cd /var/www/html/
Este es el directorio predeterminado donde debes colocar
archivos .html, .php, etc.
Si quiero volver siempre a home podemos usar la variable $home
cd $HOME
Para conocer el manual de un comando usamos la opción man, por ejemplo:
man cd -> No contiene un manual
man ls -> LINUX presenta un manual
Ejecuta los comandos y analiza la salida e interpreta el contenido.
Puedes listar el contenido de una carpeta con el comando ls -l una
herramienta muy útil en Linux para obtener información detallada sobre
archivos y directorios.
Cómo interpretar su salida:
ls -l /var/www/html
Interpretación de Columnas de ls -l
La salida de ls -l se divide en varias columnas, cada una con un significado
específico:
Permisos:
La primera columna (por ejemplo, -rw-r—r--) muestra los permisos del
archivo o directorio.
El primer carácter indica el tipo de archivo:
-: Archivo regular
d: Directorio
l: Enlace simbólico
Los siguientes nueve caracteres se dividen en tres grupos de tres:
Propietario: Permisos del propietario del archivo (lectura, escritura,
ejecución).
Grupo: Permisos del grupo al que pertenece el archivo (lectura,
escritura, ejecución).
Otros: Permisos para otros usuarios (lectura, escritura, ejecución).
Los permisos se representan con las letras:
r: Lectura
w: Escritura
x: Ejecución
-: Sin permiso
Número de enlaces:
La segunda columna (por ejemplo, 1 o 2) indica el número de enlaces
(hard links) que apuntan al archivo.
Para directorios, este número generalmente indica el número de
subdirectorios y archivos que contiene.
Propietario:
La tercera columna (por ejemplo, usuario) muestra el nombre del
propietario del archivo o directorio.
Grupo:
La cuarta columna (por ejemplo, grupo) muestra el nombre del grupo
al que pertenece el archivo o directorio.
Tamaño:
La quinta columna (por ejemplo, 1234 o 4096) indica el tamaño del
archivo o directorio en bytes.
Fecha de modificación:
La sexta columna (por ejemplo, Oct 26 10:00) muestra la fecha y hora
de la última modificación del archivo o directorio.
Nombre:
La séptima columna (por ejemplo, nombre_archivo.txt o
nombre_directorio) muestra el nombre del archivo o directorio.
Vamos a Verificar los privilegios de la carpeta contenedora de los archivos
de APACHE:
Los que nos interesa en mayor medida son los permisos de los archivos:
los permisos del archivo.
El primer guion (-) indica que es un archivo regular.
rw-: Permisos para el propietario (lectura y escritura).
r--: Permisos para el grupo (solo lectura).
r--: Permisos para otros usuarios (solo lectura).
TOMAR SIEMPRE EN CUENTA:
Cuando vayamos a ejecutar ciertos scripts o programas, muchas veces
necesitamos modificar los permisos de acceso.
Los comandos chmod y chown son herramientas fundamentales en Linux
para gestionar los permisos y la propiedad de archivos y directorios.
chmod (change mode):
Propósito: Modifica los permisos de acceso de archivos y directorios.
Sintaxis: chmod [OPCIONES] MODO ARCHIVO(S)
Modos de permiso
Numérico (octal): Representa los permisos con números del 0 al 7 para cada
categoría [propietario], [grupo], [otros].
Permisos en Octal (0-7):
Cada número octal representa una combinación de los tres permisos
básicos: lectura ®, escritura (w) y ejecución (x).
Oct Permiso Descripción
al
0 Ninguno (-) Sin permisos. No se puede leer, escribir ni
ejecutar el archivo o directorio.
1 Ejecución (x) Solo se permite ejecutar el archivo (si es un
programa) o acceder al directorio.
2 Escritura (w) Solo se permite modificar el archivo o
añadir/eliminar archivos dentro del
directorio.
3 Escritura y Se permite modificar y ejecutar el archivo.
Ejecución (wx)
4 Lectura ® Solo se permite leer el contenido del archivo
o listar el directorio.
5 Lectura y Ejecución Se permite leer y ejecutar el archivo.
(rx)
6 Lectura y Escritura Se permite leer y modificar el archivo.
(rw)
7 Lectura, Escritura y Se permiten todas las acciones: leer,
Ejecución (rwx) modificar y ejecutar.
Ej.
chmod 755 archivo.txt
Asigna permisos de lectura, escritura y ejecución para el propietario, y
lectura y ejecución para el grupo y otros.
El modo de acceso 755 es el más útil en entornos de servidor Veremos los
permisos para la raíz de los archivos públicos:
stat -c “%a” /var/www/html/
Otro ejemplo para un archivo en específico:
chown (change owner):
Propósito: Cambia el propietario y/o el grupo propietario de archivos y
directorios.
Sintaxis: chown [OPCIONES] [USUARIO][:GRUPO] ARCHIVO(S)
Ejemplos:
chown usuario archivo.txt: Cambia el propietario del archivo a “usuario”.
chown :grupo directorio: Cambia el grupo propietario del directorio a
“grupo”.
chown usuario:grupo archivo.txt: Cambia el propietario a “usuario” y el
grupo propietario a “grupo”.
Opciones comunes
R: Aplica los cambios de forma recursiva a todos los archivos y
subdirectorios dentro de un directorio.
v: Muestra información detallada sobre los cambios realizados.
Consideraciones importantes
Necesitas permisos de administrador (sudo) para cambiar la propiedad de
archivos y directorios que no te pertenecen.
Ten cuidado al modificar los permisos de archivos y directorios del sistema,
ya que esto puede afectar la seguridad y el funcionamiento del sistema.
E. Asignar permisos adecuados al entorno WEB
Si necesitas modificar archivos en /var/www/html, cambia el propietario a
tu usuario (por ejemplo para mi usuario, remmy):
sudo chown -R remmy:www-data /var/www/html
sudo chown -R tu_usuario:www-data /var/www/html
(Esto permite que tu usuario y el grupo www-data de Apache tengan
acceso).
Para asegurarte de que los archivos sean accesibles por Apache:
sudo chmod -R 755 /var/www/html
OJO ⚠ ¿Es recomendable dar permisos de ejecución?
Si vas a ejecutar código dinámico (PHP, Python, etc.), sí, pero de manera
controlada. No debes dar permisos de escritura a “otros” (chmod 777 es
peligroso, pueden ejecutar código malicioso en tu servidor, es importante
mantener la seguridad y contraseñas protegidas).
F. Crear una carpeta para un sitio de prueba
Vamos a crear una carpeta nueva dentro de /var/www/ llamada redes:
sudo mkdir /var/www/redes
Asignamos los permisos adecuados:
sudo chown -R remmy:www-data /var/www/redes
sudo chmod -R 755 /var/www/redes
Creamos un archivo de prueba:
echo ‘<h1>¡Servidor de Prueba REDES II en funcionamiento!</h1>’ | sudo
tee /var/www/redes/index.html
Vamos a ver donde se creó la carpeta:
G. Crear un VirtualHost para el sitio de prueba redes
Apache usa archivos de configuración llamados Virtual Hosts para
gestionar múltiples sitios.
Si no queremos usar el SITIO o CARPERA por defecto (/html); tenemos que
crear una nueva carpeta de prueba en nuestro servidor, Para configurar esto
la mejor opción es crear hosts virtuales.
Paso 1: Crear un nuevo archivo de configuración:
sudo nano /etc/apache2/sites-available/redes.conf
Paso 2: Añadir la siguiente configuración:
<VirtualHost *:80>
ServerAdmin
[email protected] DocumentRoot /var/www/redes
ServerName redes.iot
<Directory /var/www/redes>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/redes.log
CustomLog ${APACHE_LOG_DIR}/redes_access.log combined
</VirtualHost>
Guarda (Ctrl + O, Enter). Salir (Ctrl + X).
Paso 3: Habilitar el sitio y reiniciar Apache:
sudo a2ensite redes.conf
sudo systemctl reload apache2
Paso 4: Añadir el dominio local en /etc/hosts
Abre el archivo de hosts:
sudo nano /etc/hosts
Añade esta línea al final:
127.0.0.1 redes.iot
Guarda (Ctrl + O, Enter).
Salir (Ctrl + X).
Paso 5: Deshabilitar 000-default.conf
Vamos a deshabilitar el archivo de configuración por defecto por defecto,
000-default.conf que sigue activo en el puerto 80.
Para deshabilitarlo, ejecutamos:
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
Paso 6: Verificar los sitios habilitados
sudo apachectl -S
Si todo está correcto, deberías ver solo redes.iot como el único sitio activo
en el puerto 80.
"Could not reliably determine the server's fully qualified domain name"
Aunque esto no afecta el funcionamiento de Apache, es recomendable
corregirlo.
Paso 7: Configurar ServerName globalmente
El mensaje "Could not reliably determine the server's fully qualified
domain name" se debe a que Apache no tiene configurado un ServerName
global.
Para solucionarlo:
Edita el archivo de configuración principal:
sudo nano /etc/apache2/apache2.conf
Al final del archivo, añade esta línea:
ServerName 192.168.100.253
Ahora si manejamos nuestro servidor con IPs dinámicas que van cambiando
constantemente no es necesario esta línea.
Guarda y cierra (Ctrl + X, Y, Enter).
Reinicia Apache:
sudo systemctl restart apache2
Verifica si el error desapareció:
sudo apachectl -S
Paso 8: Prueba el nuevo sitio
Abre el navegador y ve a:
http://ip_sitio_local
Si ves el mensaje ¡Servidor de Prueba REDES II en funcionamiento!, todo
está configurado correctamente.
H. Configuración de usuario WWW en servidor FTP
Si necesitas cargar archivos y funciones más avanzadas para la
actualización de archivos, como transferir archivos de forma segura o
gestionar múltiples conexiones FTP, se recomienda usar un cliente FTP como
FileZilla (DESCARGAR).
El usuario por defecto, tiene su carpeta FTP directamente en home
Paso1: Usuario FTP dedicado
Vamos a crear un usuario exclusivo para cargar los archivos al servidor
apache vía FTP, esto para no mezclar los privilegios con el usuario principal.
Ahora vamos a editar las configuraciones del servidor FTP:
sudo nano /etc/vsftpd.conf
Modificamos o descomentamos las siguientes líneas:
write_enable=YES # Permite escritura
local_enable=YES # Permite a usuarios locales conectarse
chroot_local_user=NO # Deshabilita el chroot para permitir acceso
fuera de /home
allow_writeable_chroot=YES # Evita errores con permisos
Al final del archivo, añadimos:
# Muestra archivos ocultos
force_dot_files=YES
# Habilita el modo pasivo
pasv_enable=YES
# Rango de puertos para conexiones pasivas
pasv_min_port=40000
pasv_max_port=50000
Guarda (Ctrl + X, Y, Enter) y reinicia el servicio:
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
Paso 2: Crear un Usuario FTP
Vamos a crear un usuario específico para administrar /var/www:
sudo adduser ftpuser
Asigna una contraseña cuando lo solicite.
La contraseña configurada para el ejemplo redes2univalle
En caso de querer cambiar el password de un usuario FTP:
sudo passwd ftpuser
Nueva contraseña: (escribe la nueva contraseña y presiona
Enter)
Vuelva a escribir la nueva contraseña: (vuelve a escribir la
contraseña y presiona Enter)
Paso 3: Permisos de acceso
Para permitir que el usuario acceda a /var/www:
sudo usermod -d /var/www ftpuser
sudo chown -R ftpuser:www-data /var/www
sudo chmod -R 775 /var/www
Esto le da permisos de lectura/escritura al usuario FTP y al grupo www-data
(Apache).
Paso 4: Configurar Firewall (Si Aplica)
Si tienes ufw habilitado, permite el tráfico FTP y los puertos pasivos:
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload
Paso 5: Probar Conexión FTP
Usaremos FileZilla (o cualquier cliente FTP).
Conéctate con estos datos:
Servidor: 192.168.100.253
Usuario: ftpuser
Contraseña: redes2univalle
Puerto: 21
Si todo está bien, deberías poder ver y modificar los archivos en /var/www.
Para hacer una prueba, vamos a crear un nuevo archivo en Visual Studio
code:
Copia y pega el siguiente código HTML dentro del editor:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sitio de Pruebas de Redes 2</title>
<style>
body {
background-color: #800020; /* Color guindo */
color: white; /* Color de texto blanco para contraste */
font-family: sans-serif; /* Fuente legible */
text-align: center; /* Texto centrado */
padding-top: 50px; /* Espacio superior para el texto */
}
</style>
</head>
<body>
<h1>BIENVENIDO AL SITIO DE PRUEBAS DE REDES 2</h1>
<?php
date_default_timezone_set('America/La_Paz'); // Configura la zona horaria
$hora_actual = date('H:i:s'); // Obtiene la hora actual en formato HH:MM:SS
echo "La hora actual es: " . $hora_actual; // Muestra la hora actual
?>
</body>
</html>
Guarda el archivo con el nombre index.php.
Con el cliente FTP:
Nos aseguramos de cargar el archivo, lo jalamos de izquierda a derecha y
eliminamos nuestro index.html que habíamos creado con anterioridad para
solo tener el archivo PHP.
Observemos los privilegios del archivo, recordemos que es un archivo PHP
que necesitaremos que se ejecute:
Por defecto vemos que el archivo esta solo como rw, es decir read a write
como no se puede ejecutar.
Asegúrate de que el archivo index.php tenga los permisos correctos para ser
ejecutado por el servidor web. Los permisos típicos para archivos en
/var/www deberían ser los siguientes:
sudo chown -R www-data:www-data /var/www/redes
sudo chmod -R 755 /var/www/redes
Esto asegurará que Apache pueda leer y ejecutar los archivos
correctamente.
Realizamos la prueba ingresando al sitio y verificamos:
Realizar diversas pruebas para ver si distintos tipos de carpetas y archivos
se pueden cargar al servidor, en caso de no ser así, porque el cliente FTP
nos da un error, verificar nuevamente los permisos:
Volveremos a asignar permisos al usuario FTP para que este no tenga
restricciones al momento de crear todo tipo de archivos:
sudo chown -R ftpuser:ftpuser /var/www/redes
sudo chmod -R 755 /var/www/redes
I. Configuración de acceso por puerto (Diversos Sitios)
Vamos a configurar tres sitios en Apache con nombres redes, taller, y
practicas.
Adicionalmente al sitio raíz redes agregaremos dos nuevos sitios pero que
sean accedidos a través de puertos diferentes al 80.
taller puerto 81
practicas puerto 82
Paso 1: Crear las carpetas para cada sitio
Ejecutamos los siguientes comandos en el servidor:
sudo mkdir -p /var/www/taller
sudo mkdir -p /var/www/practicas
mkdir -p crea las carpetas y sus rutas si no existen.
Cada carpeta representará un sitio web diferente.
Paso 2: Dar permisos correctos
sudo chown -R ftpuser:ftpuser /var/www/practicas
sudo chmod -R 755 /var/www/practicas
sudo chown -R ftpuser:ftpuser /var/www/taller
sudo chmod -R 755 /var/www/taller
Paso 3: Crear las páginas de prueba
Añadimos contenido a cada sitio con:
echo '<h1>Bienvenido a Taller</h1>' | sudo tee /var/www/taller/index.html
echo '<h1>Bienvenido a Prácticas</h1>' | sudo tee
/var/www/practicas/index.html
Paso 4: Crear archivos de configuración para cada sitio
Abrimos y editamos cada archivo de configuración con nano:
Archivo de configuración para taller
sudo nano /etc/apache2/sites-available/taller.conf
Contenido del archivo (taller.conf)
<VirtualHost *:81>
ServerAdmin
[email protected] DocumentRoot /var/www/taller
ServerName taller
<Directory /var/www/taller>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/taller.log
CustomLog ${APACHE_LOG_DIR}/taller_access.log combined
</VirtualHost>
Guarda y cierra (Ctrl + X, Y, Enter).
Archivo de configuración para practicas
sudo nano /etc/apache2/sites-available/practicas.conf
Contenido del archivo (practicas.conf)
<VirtualHost *:82>
ServerAdmin
[email protected] DocumentRoot /var/www/practicas
ServerName practicas
<Directory /var/www/practicas>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/practicas.log
CustomLog ${APACHE_LOG_DIR}/practicas_access.log combined
</VirtualHost>
Guarda y cierra (Ctrl + X, Y, Enter).
Paso 5: Habilitar Apache para escuchar en los puertos 81 y 82
Debemos configurar Apache para que escuche en los nuevos puertos.
Abrimos el archivo de configuración de puertos:
sudo nano /etc/apache2/ports.conf
Añadimos estas líneas al final del archivo:
Listen 81
Listen 82
Guarda y cierra (Ctrl + X, Y, Enter).
Paso 6: Habilitar los sitios y reiniciar Apache
Ejecutamos los siguientes comandos:
sudo a2ensite taller.conf
sudo a2ensite practicas.conf
sudo systemctl restart apache2
sudo systemctl daemon-reload
Explicación:
a2ensite habilita los sitios web.
systemctl restart apache2 reinicia Apache para aplicar los cambios.
Paso 7: Abrir los puertos en el firewall (si es necesario)
Si tienes UFW (Uncomplicated Firewall) habilitado, debes permitir los nuevos
puertos:
sudo ufw allow 81/tcp
sudo ufw allow 82/tcp
sudo ufw reload
Para verificar si UFW está activo, usa:
sudo ufw status
Paso 8: Acceder a los sitios desde la red
Ahora puedes acceder a los sitios desde otra computadora en la red
ingresando en un navegador:
Redes (por defecto en el puerto 80): http://192.168.100.253
Taller (en el puerto 81): http://192.168.100.253:81
Prácticas (en el puerto 82): http://192.168.100.253:82
Lista de comandos útiles en Ubuntu Linux, organizados por categorías para
que te sea más fácil encontrarlos:
Apagar y reiniciar el sistema
shutdown -h now: Apaga el sistema inmediatamente.
shutdown -r now: Reinicia el sistema inmediatamente.
shutdown -h +<minutos>: Apaga el sistema en la cantidad de
minutos especificada.
reboot: Reinicia el sistema.
halt: Detiene el sistema (similar a apagar, pero puede requerir un
apagado manual).
poweroff: Apaga el sistema (similar a apagar, pero puede requerir un
apagado manual).
Trabajar con archivos y directorios
ls: Lista el contenido de un directorio.
o ls -l: Lista el contenido en formato largo (detalles).
o ls -a: Lista todos los archivos, incluyendo los ocultos.
o ls -h: Lista el tamaño de los archivos en formato legible por
humanos.
o ls -t: Lista los archivos ordenados por fecha de modificación.
cd <directorio>: Cambia al directorio especificado.
o cd ..: Sube un nivel en la jerarquía de directorios.
o cd ~: Va al directorio de inicio del usuario.
pwd: Imprime el directorio de trabajo actual.
mkdir <directorio>: Crea un nuevo directorio.
o mkdir -p <ruta>: Crea directorios intermedios si es necesario.
rmdir <directorio>: Elimina un directorio vacío.
rm <archivo>: Elimina un archivo.
o rm -r <directorio>: Elimina un directorio y su contenido de
forma recursiva.
o rm -f <archivo>: Fuerza la eliminación de un archivo (sin
preguntar).
cp <archivo1> <archivo2>: Copia un archivo.
o cp -r <directorio1> <directorio2>: Copia un directorio y su
contenido de forma recursiva.
mv <archivo1> <archivo2>: Mueve o renombra un archivo o
directorio.
cat <archivo>: Muestra el contenido de un archivo.
less <archivo>: Muestra el contenido de un archivo, permitiendo la
navegación.
head <archivo>: Muestra las primeras líneas de un archivo.
tail <archivo>: Muestra las últimas líneas de un archivo.
touch <archivo>: Crea un archivo vacío o actualiza su fecha de
modificación.
find <directorio> -name “<nombre_archivo>”: Busca archivos por
nombre.
grep “<texto>” <archivo>: Busca texto dentro de archivos.
Permisos (chmod)
chmod <permisos> <archivo>: Cambia los permisos de un archivo
o directorio.
o Los permisos se representan con letras (r: lectura, w: escritura,
x: ejecución) o números octales (4: lectura, 2: escritura, 1:
ejecución).
o Ejemplo: chmod 755 <archivo> (permisos de lectura, escritura
y ejecución para el propietario, lectura y ejecución para el
grupo y otros).
Otros comandos comunes
sudo: Ejecuta un comando como superusuario (root).
man <comando>: Muestra el manual de un comando.
help <comando>: Muestra ayuda sobre un comando.
clear: Limpia la pantalla de la terminal.
history: Muestra el historial de comandos.
alias <alias>=”<comando>”: Crea un alias para un comando.
unalias <alias>: Elimina un alias.
date: Muestra la fecha y hora actual.
cal: Muestra un calendario.
df -h: Muestra el espacio en disco utilizado.
du -h <directorio>: Muestra el espacio en disco utilizado por un
directorio.
top o htop: Muestra los procesos en ejecución y el uso de recursos
del sistema.
kill <PID>: Termina un proceso por su ID (PID).
ps: Lista los procesos en ejecución.
Comandos de red
ping <dirección_ip_o_dominio>: Verifica la conectividad con otro
host.
ifconfig o ip addr: Muestra información sobre las interfaces de red.
netstat o ss: Muestra conexiones de red, puertos abiertos y tablas de
enrutamiento.
traceroute <dirección_ip_o_dominio>: Muestra la ruta que toman
los paquetes para llegar a un destino.
dig <dominio> o nslookup <dominio>: Consulta información DNS.
Gestión de paquetes
apt update: Actualiza la lista de paquetes disponibles.
apt upgrade: Actualiza los paquetes instalados a la versión más
reciente.
apt install <paquete>: Instala un paquete.
apt remove <paquete>: Desinstala un paquete.
apt search <paquete>: Busca paquetes disponibles.
Información del sistema
uname -a: Muestra información sobre el sistema (kernel, arquitectura,
etc.).
lsb_release -a: Muestra información sobre la distribución de Ubuntu.
lscpu: Muestra información sobre la CPU.
free -h: Muestra el uso de memoria RAM.
df -h: Muestra el espacio en disco utilizado.