CFGS Desarrollo de Aplicaciones Web
| CFGS DESARROLLO DE APLICACIONES WEB |
 |
| DESPLIEGUE DE APLICACIONES WEB |
| CYBERSEGURIDAD |
| DAWES Tema 2. INSTALACIÓN, CONFIGURACIÓN Y DOCUMENTACIÓN DE ENTORNO DE DESARROLLO Y DEL ENTORNO DE EXPLOTACIÓN |
1. Entorno de Desarrollo
1.1 Ubuntu Server 24.04.3 LTS
Este documento es una guía detallada del proceso de instalación y configuración de un servidor de aplicaciones en Ubuntu Server utilizando Apache, con soporte PHP y MySQL
1.1.1 Configuración inicial
- Nombre y configuración de red
Nombre de la máquina: gjl-uslimpia
Memoria RAM: 2G
Particiones: 150G(/) y resto (/var)
Configuración de red interface: enp0s3
Dirección IP :10.199.8.153/22
GW: 10.199.8.1/22
DNS: 10.151.123.21 10.151.126.21
- Creamos una copia del archivo que viene por defecto 50-cloud-init.yml
cd /etc/netplan
sudo cp 50-cloud-init.yml enp0s3.yaml
- Editar el fichero de configuración del interface de red /etc/netplan/enp0s3.yaml
network:
ethernets:
enp0s3:
addresses:
- 10.199.8.153/22
nameservers:
addresses:
- 10.151.123.21
- 10.151.126.21
search: [educa.jcyl.es]
routes:
- to: default
via: 10.199.8.1
version: 2
- Actualizar la configuración de red
sudo netplan apply
Cambiar nombre servidor
sudo hostnamectl set-hostname gjl-used
- También cambiamos el nombre en ese archivo y comprobamos con cat
sudo nano /etc/hosts
cat /etc/hosts
Actualizar el sistema
sudo apt update
sudo apt upgrade
Configuración fecha y hora
Establecer fecha, hora y zona horaria
sudo timedatectl set-timezone Europe/Madrid
Cuentas administradoras
- Para crear el usuario miadmin2 como administrador, miadmin está creado al instalar ubuntu server
sudo usermod -aG sudo miadmin2
- Para ver datos de las cuentas
cat /etc/passwd
cat /etc/group
Habilitar cortafuegos
sudo ufw enable
sudo ufw allow 22
- Ver puertos abiertos, cualquiera de los dos comandos.
sudo ufw status
sudo ufw status numbered
sudo ufw delete [numPuerto]
Conexión al servidor desde windows
- Arrancamos el servicio ssh en el servidor
sudo systemctl start ssh
- Comprobamos que esta en active (running)
sudo systemctl status ssh
- Abrimos la consola de windows (simbolo del sistema): usamos el comando ssh con nuestro nombre de usuario y ip del servidor, despues nos pedirá la clave.
ssh miadmin@10.10.199.8.153
Comprobar ip, puerta de enlace y dns
- Para ver la ip, el nombre de nuestro adaptador de red (enp0s3), si es dinámica pondra dynamic en la misma linea, si es estática no pondrá nada.
ip a
- Para ver la puerta de enlace, en la primera linea pone la puerta de enlace y tambien el nombre de la tarjeta de red
ip r
- Para ver los dns, en DNS Servers se ve cuales hay configurados, tambien vemos a que dominio pertenecemos en DNS Domain
resolvectl
Particiones
- Con ambos comandos vemos que particiones hay y de que tamaño son. El primero da mas información del tamaño usado.
df -h
lsblk
Actualización
- Para comprobar si hay actualizaciones y despues que actualice todo lo necesario
sudo apt update
sudo apt upgrade
Comprobaciones sistema operativo
- Tipo de sistema operativo
uname -a
ps -ef
1.1.2 Instalación del servidor web
Instalación
- Abrir puerto 80, comprobamos y desactivamos el 80(v6)
sudo ufw allow 80
sudo ufw status numbered
sudo ufw delete 3
sudo apt update
sudo apt install apache2
Verficación del servicio
- Comprobamos que el servicio esta en ejecucion (running)
sudo systemctl status apache2
- Comprobamos ubicacion de la carpeta y los archivos web
cd /var/www/html
ls
Virtual Hosts
Permisos y usuarios
- Creamos usuario del dominio para administrar la web.
- Nombre: operadorweb/paso
- directorio de trabajo: /var/www/html
- grupo:www-data
- shell:/bin/bash
sudo useradd -M -d /var/www/html -N -g www-data -s /bin/bash operadorweb
- Cambiamos la contraseña (paso)
sudo passwd operadorweb
- Cambiamos el propietario de la carpeta html y el grupo
sudo chown -R operadorweb:www-data /var/www/html
- Cambiamos los permisos de la carpeta html
sudo chmod -R 775 /var/www/html
Entrar en etc/apache2
Si hay archivos load y conf son módulos configurables
Lo normal es no estropear el archivo de configuracion global de apache2
En cada servidor tengo diferentes sitios para diferentes dominios con su configuración
Explicar estructura del arbol de archivos de apache2
En Apache para configurar puedo ir a ficheros tipo .conf o con .htaccess para poner directivas. En nuestro caso
el .htaccess está desactivado
En el archivo apache2. conf vamos a cambiar en Directory /var/www/ la opcion AllowOverride None por All
sudo systemctl restart apache2 -- antes de esto hay que crear un directorio llamado error con operadorweb
apache2ctl configtest
En apache2.conf poner al final Servername enl-used
Crear en operadorweb un archivo .htaccess
En Directory /var/www/html/ que `ponga index.php y luego index.html
Archivos de configuración
Estan en etc/apache2/
- Redirección de errores a archivo error.log, añadimos esta línea al archivo 000-default.conf. Creamos la carpeta error en /var/www/html/
sudo nano sites-available/000-default.conf
CustomLog ${APACHE_LOG_DIR}/access.log combined
- Quitar aviso de ... , añadimos el nombre del servidor al final del archivo de configuración apache2.conf
ServerName gjl-used
- Para poder poner directivas solo a nuestra web lo hacemos con un archivo .htaccess, pero para poder usar este archivo primero tenemos que cambiar la configuracion de apache2.conf
1.1.3 PHP
Preparación
- Vamos a usar php como un servicio con PHP-FPM para ello primero hay que instalar dos paquetes y despues listamos para comprobar que se ha instalado
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
ls /etc/apt/sources.list.d/ | grep ondrej
Instalar apache
- Instalamos las librerias, descativamos php para poder cambiar al servicio FPM
sudo apt install libapache2-mod-php8.3 php8.3-fpm -y
sudo a2dismod php8.3
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event proxy_fcgi
sudo a2enconf php8.3-fpm
sudo systemctl restart apache2
- Configuramos el php.ini para un entorno de desarrollo, primero hacemos copia del archivo.
cd /etc/php/8.3/fpm/
sudo cp php.ini php.ini.bk20251007
sudo nano php.ini
- Editamos el archivo php.ini (con ctrl+w buscamos) y cambiamos tres cosas

- Reiniciamos el servicio php y comprobamos que esta running
sudo systemctl restart php8.3-fpm.service
sudo systemctl status php8.3-fpm.service
- con el comando phpinfo(); comprobamos que se han habilitado los cambios

- para ver los modulos activos, concretamente interesa el mpm_XXX
apache2ctl -M
1.1.4 MySQL
1.1.5 XDebug
1.1.6 Servidor web seguro (HTTPS)
1.1.7 DNS
1.1.8 SFTP
1.1.9 Apache Tomcat
1.1.10 LDAP
1.2 Windows 11/10
1.2.1 Configuración inicial
Nombre y configuración de red
Cuentas administradoras
1.2.2 Navegadores
1.2.3 FileZilla
1.2.4 Netbeans
Crear proyecto con conexion (SFTP) al servidor
- Nuevo proyecto PHP marcando la opción "PHP Application from Remote Server"

- Ponemos nombre de proyecto y cambiamos la ruta por la nuestra personal

- Configuramos la url con nuestro servidor y el nombre del proyecto en el servidor, en el caso del proyecto principal no tiene carpeta es la raíz (/)

- La primera vez que creamos un proyecto con conexión al servidor hay que configurarlo con nombre de usuario, contraseña y directorio inicial

- Si todo ha ido bien se conectará al servidor y entrará en la carpeta del proyecto que previamente tenemos que haber creado y que haya por lo menos un archivo en ella. Aquí ya marcamos para que se bajen los archivos que queramos.

Borrar proyecto con conexion (SFTP) al servidor
- botón secundario sobre el proyecto y delete. Nos pedirá confirmación y si queremos que borre los archivos en nuestro ordenador. Los del servidor lo tenemos que borrar a mano.

1.2.5 Visual Studio Code
2. GitHub
3.Entorno de Explotación
Gonzalo Junquera Lorenzo
Curso: 2025/2026
2º Curso CFGS Desarrollo de Aplicaciones Web