P4: Configuración de una plataforma de desarrollo de aplicaciones basadas en web

El objetivo de esta práctica es instalar en una máquina todos los servicios necesarios para desarrollar un proyecto web basado en PHP y MySQL.

Primer Apartado:

  1. Instalación y configuración de Apache
  2. Instalación y configuración de PHP
  3. Instalación de MySQL
  4. Instalación de phpMyAdmin

Segundo Apartado (archivo de configuración de Apache):

5. Comentar brevemente qué debemos realizar para que Apache ejecute correctamente páginas escritas en PHP.

una vez configurado apache debemos instalar PHP con los módulos que necesitemos y en caso de no utilizar un instalador automático debemos indicarle al servidor apache los parámetros de configuración para que cargue el interprete PHP y configurar las variables necesarias para eso basta con introducir las siguientes directivas:
PHPIniDir ruta <– indica la carpeta donde se encuentra el archivo php.ini que nos permite configurar el comportamiento de PHP
LoadModule “ruta a la librería php5apache2_2.dll que contiene el modulo php” <– indica la librería donde se encuentra compilado el modulo de php y ordena al servidor apache cargarlo
Si todos los parámetros introducidos son correctos basta con reiniciar el servidor apache para que este vuelva a leer el archivo de configuración y pueda comenzar a interpretar las paginas PHP.

6. Respecto al archivo de configuración de Apache (httpd.conf):

  • a. ¿qué objetivo tiene la sección de DirectoryIndex? Pon un ejemplo y coméntalo.
    • Establece el archivo a proporcionar cuando el navegador proporciona una ruta incompleta, por ejemplo  la conexión a http://httpd.apache.org/docs/1.3/mod/ enviara la pagina http://httpd.apache.org/docs/1.3/mod/index.html siempre y cuando exista ese fichero y en la lista de  DirectoryIndex la subcadena index.html este antes de cualquier archivo existente, en caso de que no  exista ningun archivo en la lista de cadenas la respuesta a la petición sera el contenido del directorio, (en caso de que existan restricciones en el contenido del directorio se mostrara una pagina forbidden).
  • b. ¿dónde especificarías una capeta distinta a htdocs para servir archivos?
    • Si lo que queremos es utilizar una carpeta distinta a la que viene configurada por defecto simplemente debemos de cambiar el valor asociado a la directiva DocumentRoot  especificándole la carpeta donde queremos situar la raíz del servidor httpd, hemos de recordar que el usuario asociado al servidor apache tenga los permisos garantizados en caso contrario sufrirá un error de acceso denegado.
  • c. ¿para qué sirve el parámetro Timeout?
    • Timeout es una directiva que establece un contador en segundos que apache usara para gestionar los tiempos máximos de espera para:
      • tiempo de espera para una petición get .
      • tiempo de espera para la recepción de paquetes TCP en una petición POST o PUT .
      • tiempo de espera para enviar un ACK para un paquete TCP.
  • d. ¿cómo configurarías el servidor para un puerto distinto del 80?
    • Abrimos el archivo httpd.conf y reemplazamos la linea que pone Listen 80 por Listen “puerto deseado”.

Tercer Apartado (archivo de configuración de PHP):

7. Descripción del parámetro error_reporting. Pon algún ejemplo

La directiva error_reporting define el nivel de informe de errores se puede establecer con los valores de la siguiente lista:

  • E_ERROR            1    Informa de errores en tiempo de ejecución, como problemas de asignación de memoria. detiene la ejecución del código
  • E_WARNING        2    Informa de advertencias en tiempo de ejecución (no errores fatales), la ejecución del script no se detiene
  • E_PARSE            4    Informa de errores del analizador sintáctico. Estos errores son solo generados por el analizador sintáctico
  • E_NOTICE        8    Informa de avisos en tiempo de ejecución. Podría indicar que algo encontrado es un error pero el aviso puede ser generado por la ejecución esperada del script
  • E_CORE_ERROR        16    Informa de errores fatales que ocurren durante el arranque de PHP. Es como E_ERROR excepto que solo son generados por el núcleo de php
  • E_CORE_WARNING        32    Informa de advertencias (no errores fatales) que ocurren en el arranque de PHP. Es como E_WARNING excepto que las advertencias son las generadas por el núcleo de php
  • E_COMPILE_WARNING    128    Informa de advertencias (no errores fatales). Esto es como E_WARNING, solo que las advertencias son geradas por en motor de Scripting Zend
  • E_USER_ERROR        256    Mensajes de error generados por el usuario. Esto es como E_ERROR, excepto que es generado en el código PHP por la función trigger_error()
  • E_USER_WARNING        512    Advertencias de error generados por el usuario, Es como E_WARNING, excepto que es generado en el código PHP por la función trigger_error()
  • E_USER_NOTICE        1024    Avisos generados por el usuario. Es como E_NOTICE, excepto que es generado en el código PHP por la función trigger_error()
  • E_STRICT        2048    Habilita las sugerencias de cambios de PHP , que se aseguran de obtener de la mejor interoperatividad entre versiones de PHP
  • E_RECOVERABLE_ERROR    4096    Errores fatales recuperables. Estos indican la probabilidad de que un error peligroso ocurra, pero no dejara el motor en un estado inestables. Si este error no es gestionado por un manejador definido por el usuario la ejecución de la aplicación se abortara como si fuera un E_ERROR.
  • E_DEPRECATED        8192    Avisos en tiempo de ejecución. Activar este nivel informara de advertencias sobre codigo que no funcionara en futuras versiones
  • E_USER_DEPRECATED    16384    Avisos en tiempo de ejecución generados por el usuario. Funciona como E_DEPRECATED, excepto que son generados en el código PHP usando la funcion trigger_error()
  • E_ALL            30719    Informa de todos los errores y Advertencias, siempre que estén soportadas, exceptuando el nivel E_STRICT.

Ejemplos: Si queremos verificar la compatibilidad de nuestro codigo con futuras versiones de PHP deberiamos de activar E_DEPRECATED.
En modo de depuración es recomendable activar la opción E_ALL.
Si nuestro codigo informa de errores que desencadenan otros errores, tal vez nos interese filtrar activando las opciones E_USER_***
8. ¿qué importancia tiene el parámetro register_globals?

Habilita o deshabilita el reistro de las variables de entorno, GET, POST, Cookie y Servidor como variables globales. No es recomendable habilitarlo ya que no forma parte de las buenas practicas de programación y es inseguro.

9. ¿qué objetivo tiene la sección de File Uploads? Comenta sus parámetros.

Permite la recepción de archivos en el servidor usando el protocolo HTTP. los parámetros son:

  • file_uploads = booleano habilita o deshabilita la recepción de archivos
  • upload_tmp_dir= especifica un directorio temporal para la recepción de archivos
  • upload_max_filesize = XXM acota el tamaño máximo de los archivos que puede recibir el servidor.

Cuarto Apartado:
10. Una vez instalados todos los servicios en la máquina, el alumno deberá realizar lo siguiente:
11. Crear una base de datos y tabla con unos datos de ejemplo utilizando phpMyAdmin

Para crear una base de datos en phpMyAdmin primero accedemos a la url donde esta instalado phpMyAdmin, en este caso . Una vez en la dirección aparecerá un formulario solicitándonos el nombre de usuario y la contraseña

Ventana Login PhpMyAdminintroducimos el nombre y la contraseña para un usuario con privilegios en la creación de bases de datos.

Una vez identificados en el phpMyAdmin para crear la base de datos seleccionamos la pestaña base de datos y en el campo “Crear nueva base de datos” introducimos el nombre de la base de datos que queremos crear.

Crear Nueva base de datos phpMyAdmin

al pinchar en Crear phpMyAdmin ejecutara el siguiente comando SQL

CREATE DATABASE `practicaCSI4` ;

para crear las tablas en la base de datos navegamos hasta la pagina de información de la base de datos practicaCSI4 y en la pestaña estructura introducimos el numero de campos y el nombre de la tabla que queremos añadir a la base de datos.

Crear Nueva tabla phpMyAdminnos llevara a una pagina donde definiremos los campos de la base de datos.

definiendo campos de una tabla phpMyAdminuna vez hayamos cubierto el formulario pulsaremos el boton gravar que creara la tabla insertando el siguiente comando SQL


CREATE TABLE `practicacsi4`.`personas` (
`nombre` VARCHAR( 50 ) NOT NULL ,
`apellidos` VARCHAR( 50 ) NOT NULL ,
`direccion` VARCHAR( 200 ) NOT NULL ,
`codigopostal` INT NOT NULL ,
`provincia` VARCHAR( 15 ) NOT NULL ,
`dni` VARCHAR( 9 ) NOT NULL ,
`fechaNacimiento` DATE NOT NULL
) ENGINE = InnoDB

 

Repetimos el proceso para la segunda tabla

definiendo campos a tabla 2 phpMyAdminla creación de la segunda tabla generara el siguiente comando SQL

CREATE TABLE `practicacsi4`.`noticias` (
`titular` VARCHAR( 120 ) NOT NULL ,
`entradilla` VARCHAR( 400 ) NOT NULL ,
`texto` VARCHAR( 4000 ) NOT NULL ,
`fecha` DATE NOT NULL ,
`firma` VARCHAR( 200 ) NOT NULL ,
`fuente` VARCHAR( 180 ) NOT NULL ,
`foto` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `titular` )
 

12. Crear una página sencilla en php que realice la conexión con la base de datos y muestre los resultados en pantalla

Se hace en la próxima practica.

13. Facilitar al profesor una URL a través de la cual pueda visualizar la página y otra URL a través de la cuál pueda acceder a phpMyAdmin y realizar cambios en la base de datos de tal manera que esos cambios aparezcan reflejados al consultar de nuevo la página.

Acceso a phpMyAdmin:

Las tablas de base de datos a crear pueden ser:

A) Ficha de datos personal con lo siguientes campos:

  • a. Nombre
  • b. Apellidos
  • c. Dirección
  • d. Código Postal
  • e. Provincia
  • f. DNI
  • g. Fecha de Nacimiento

B) Ficha de datos de una sección de noticias:

  • a. Titular
  • b. Entradilla
  • c. Texto
  • d. Fecha
  • e. Firma
  • f. Fuente
  • g. Foto (opcional)

Configuración de Sistemas Informáticos Practica 3. Control Remoto de Terminales

El objetivo de esta práctica es comprender y ver en la práctica el funcionamiento de las aplicaciones para el control remoto de equipos y visualizar el escritorio de otras máquinas. Para ello instalaremos un servidor VNC y repasaremos sus opciones de configuración. Posteriormente utilizaremos el visor de VNC para acceder a terminales que tengan instalado el servidor y comprobar su funcionamiento.

Cuestiones:

1. Especificar todas las opciones que tenemos a nuestra disposición cuando nos conectamos a un servidor VNC y explicar su efecto.

Opciones Clientes

  • Format and encoding
    • AutoSelect –> El cliente seleccionara las opciones automaticamente
    • Use 8-Bit colour –> Reduce la profundidad de color de las imágenes a enviar para reducir el ancho de banda necesario para el comportamiento fluido de la sesión
    • Algoritmos de compresion
      • ZRLE — Usa Run Length Enconding de la libreria zlib.
      • Hextile — separa rectangulos en grupos de 16×16 y los manda usando RLE.
      • CoRRE — Es una variante de RRE, usando rectangulos de 255×255 como máximo.
      • RRE — Rise and Run length encoding es una version 2D del RLE.
      • Raw — sin compresión.
  • Use CopyRect encoding — Es un algoritmo eficiente para cuando algo se mueve, los unicos datos que se envían es el movimiento de un rectángulo. También puede ser eficiente para un patrón repetido
  • Mouse:
    • Emulate 3 Buttons (with 2-buttion click): Emula el tercer botón del ratón
    • Swap mouse buttons 2 and 3 intercambia el 2 y 3 botón del ratón.
  • Display
    • View only (inputs ignored): No envia los eventos del teclado ni del ratón producidos por el cliente
    • Full-screen mode: Habilita el modo pantalla completa
    • Scale by : Nos que el cliente cree una ventana escalada de las imágenes que recibe del servidor
  • Miscelanea
    • Shared: No desconecta a otros clientes que esten conectados.
    • Deiconify on Bell: reproduce los mensajes de la campana del servidor en el cliente.
    • Disable clipboard transfer: inhabilita la interaccion de los portapapeles del cliente y del servidor.

2. Comentar los grupos y parámetros de los mismos en la configuración del servidor VNC.

  • Opciones servidorIncoming Conections:
    • Acept Socket Connection –> acepta conexiones a través de sockets (una ip, un protocolo y un puerto)
    • Password : la contraseña para autenticarse
    • Display Number: El numero de pantalla a mostrar.
    • Enable Java Viewer: Permite la posibilidad conectarse a través de un navegador usando un applet de Java
  • Connection Settings:
    • Disable Remote Keyboard & Pointer — Deshabilita teclado y ratón remoto
    • Disable Local Keyboard & Pointer — Deshabilitar el teclado y el ratón del servidor.
    • Remove Desktop Wallpaper — Cambia el color de fondo de escritorio por un fondo de un color liso para mejorar el rendimiento.
  • When last Client Disconnects: Opciones cuando el servidor queda sin clientes conectados
    • Do nothing: no hace nada.
    • Lock Workstation: bloquea el servidor solicitando la contraseña de usuario.
    • Logoff Workstation: el servidor cierra la sesión del usuario.
  • Update Handling — Manejo de las actualizaciones de pantalla
    • Poll Full Screen– Enviá la pantalla completa
    • Poll Foreground Window — Enviá la ventana seleccionada.
    • Poll Window Under Cursor — Enviá la ventana que esta bajo el cursor
    • Poll Console Windows Only– Con esta opción las únicas ventana que serán refrescadas son consolas de comandos.
    • Poll On, Event Received Only: Solo actualizara la pantalla inmediatamente después de que el cliente envié un evento de teclado o ratón.
  • Comandos Servidor:
    • Add New Client: permite crear una conexion con un cliente que este en modo escucha.
    • Register Vnc Server Service: crea un servicio en el ordenador servidor que arranca el servidor de VNC.
    • Run Service Helper: Crea el icono en la barra de tareas “en caso de arrancarlo como servicio”.
    • Show About Box: Muestra información sobre la versión actual de VNC.
    • Sow Default properties: Muestra las opciones predeterminadas del servidor.
    • Show User Properties: Muesta la información acerca de los usuarios conectados.
    • Unregister VNC Server Service: Elimina el servicio del servidor.

Practica 2: FTP

El objetivo de esta práctica es comprender y ver en la práctica el funcionamiento de las aplicaciones para la transferencia de archivos. Para ello instalaremos un servidor FTP y repasaremos las opciones más importantes para habilitar este servicio en una máquina.
Posteriormente utilizaremos un cliente FTP para realizar una conexión desde otro equipo y comprobar todos los cambios que realizamos en las opciones, así como para poder ver los informes de actividad del servidor cuando se transfieren archivos.

El servidor FTP que utilizaremos para llevar a cabo esta práctica será Serv-U, y como clientes podremos utilizar SmartFTP, WS-FTP,…

Cuestiones básicas:

1. ¿como podemos activar el servidor FTP como un servicio? ¿qué significa?

Tenemos dos formas de activar el servidor FTP como servicio.

La primera es durante la instalación del software marcando la casilla “Install Serv-U as a system service” como se ve en la imagen

Activar como servicio durante la instalaciónLa otra opción en caso de no marcarlo durante la instalación es crearlo nosotros a mano usando Sc.exe siguiendo las instrucciones del articulo 251192 de Microsoft.

Ejecutar un programa como servicio significa que  este es cargado por el sistema operativo y se ejecuta en segundo plano (Background) .

2. ¿que es una cuenta de usuario anónima? ¿cómo la creamos?

La cuenta de usuario anónima es una cuenta en un servidor FTP que permite a cualquier usuario el acceso al mismo y obtener un conjunto de archivos previamente decidido por los administradores del servidor. La mayoria de los servidores no implementan cuentas anónimas pero algunos servidores que sirven ficheros que deberian estar disponibles para la descarga publica (parches o nuevas versiones) deberian de contar con una cuenta anonima para los usuarios.

Para crear esta cuenta debemos acceder a la consola de administración de Serv-U

Consola de gestión de Serv-Upinchamos en la opción “Users” o “Global Users”

Asistente creacion usuariosseleccionamos la opción “Wizard…” mostrara un asistente de 4 pasos para crear un nuevo usuario.

Asistente usuarios Serv-U paso 1 de 4como nombre de usuario introducimos Anonymous la contraseña la dejamos en blanco, seleccionamos el directorio deseado y los permisos que queremos otorgarle (se recomienda que los usuarios anónimos solo tengan permisos para leer y listar directorios).

3. ¿cuáles son los datos básicos cuando se crea una cuenta de usuario? comenta a nivel general las distintas opciones, permisos, ….

Cuando se crea un usuario se nos muestra un formulario dividido en siete pestañas

  • Formulario creación usuario Serv-UUser Information
    • User Name: Establece el nombre de usuario
    • Full Name: Almacena el nombre completo del usuario
    • Password: Define la contraseña para el usuario que estamos creando
    • Password Type: Define el algoritmo de encriptación para el paso de contraseñas
    • Administration Privilege:  Permite otorgar diferentes privilegios de administración
    • Home Directory:  Define el directorio donde los usuarios trabajaran por defecto
    • Account Type: permite define la volatilidad de la cuenta, pudiendo ser deshabilitada o eliminada en una fecha concreta
    • Default Web Client: Define el comportamiento del servidor para conexiones a través del protocolo http
    • Lock User in Home Directory: nos permite enjaular al usuario en su directorio home solo pudiendo acceder a este
    • Alwais Allow Login: Nos permite ignorar las restricciones del grupo, muy útil si se necesita acceder desde un entorno restringido
    • Enable account: Activa la cuenta
    • Description: Una pequeña descripción de la cuenta.
  • Groups
    • Nos permite añadir el usuario a distintos grupos
  • Welcome Message
    • Nos permite crear un mensaje cuando el usuario se autentifica, una advertencia, notas sobre el funcionamiento….
  • IP Access
    • Nos permite generar reglas para configurar un pequeño cortafuegos permitiendo o denegando conexiones desde ciertos rangos de ip o ip’s
  • Directory Access
    • especifica los directorios a los que tendrá acceso el usuario y las reglas de acceso que se le otorgaran al usuario.
  • Virtual Paths
    • Las rutas virtuales nos permiten crear enlaces simbólicos a directorios que se encuentran fuera de la carpeta home del usuario.
  • Limits & Settings
    • Nos permite aplicar un conjunto de restricciones a la cuenta de ese usuario y horarios de funcionamiento de estas, las restricciones se catalogan en 5 subgrupos
      • Connection: Restricciones para las conexiones que realice el usuario
      • Password: Restricciones para la contraseña del usuario
      • Directory Listing: Restricciones relativas a la navegación del usuario a lo largo del árbol de directorios del servidor
      • Data Transfer: Restricciones acerca de la velocidad de transferencia del usuario
      • Advanced: Restricciones avanzadas

4. ¿qué es el directorio de recepción o “home directory”?
Es el directorio dentro del árbol de directorios a donde se envía el usuario tras su identificación, generalmente en el directorio de recepción es donde el usuario puede subir sus archivos.

5. ¿cómo puedo realizar un acceso a un sitio FTP a través del navegador?

Depende de si lo soporta el navegador.

Si existe ese soporte bastaría con  que poner en la barra de direcciones:
ftp://usuario@ftp.servidor.es (se preguntará la contraseña)
o directamente:
ftp://usuario:passwd@ftp.servidor.es
o de forma anónima (siempre que el servidor lo permita):
ftp://ftp.servidor.es
donde usuario es el nombre de usuario de la cuenta, passwd es la contraseña y ftp.servidor.es es el servidor FTP.

6. ¿qué significa bloquear (“lock”) el directorio de recepción?

Esta opción enjaula al usuario dentro de su directorio de recepción impidiéndole acceder a cualquier otro directorio que este en un nivel igual o superior del directorio de recepción.

7. ¿qué privilegios podemos asignar a los usuarios?

Podemos asignar distintos tipos de privilegios a los usuarios:

Los privilegios administrativos (que nos permiten gestionar el servidor)

  • Sin privilegios:  El usuario no tiene privilegios
  • Administrador de Dominios: Permite administrar el dominio
  • Administrador de Sistema: Los permisos del usuario son de administrador
  • Inherentes: Hereda los permisos del grupo al que pertenece

Los privilegios de Acceso a archivos y directorios.

  • Read : Acceso de lectura a ficheros y directorios
  • Write: Acceso de escritura a ficheros y directorios
  • Rename: Permite renombrar alchivos
  • Delete: Permiso de borrado para ficheros y directorios
  • Execute: Permiso de ejecución para ficheros (Riesgo potencial)
  • Append: Permite añadir contenido al final del fichero

8. ¿a que hace referencia el “Max. No. Of Users” en la configuración de un “dominio FTP”? ¿y en la configuración del usuario?
Dominio FTP: Numero máximo de usuarios conectados simultaneamente

Usuario:  Numero máximo de conexiones concurrentes con ese nombre usuario

9. ¿qué son las reglas de acceso IP? ¿desde dónde las puedo establecer? Pon algún ejemplo.
Las reglas de acceso IP nos permite crear listas blancas y listas negras para gestionar las restricciones de acceso para el servidor.

Se pueden estableces en las opciones de configuración de usuarios, grupos de usuarios, usuarios globales , grupos globales, detalles del dominio y detalles del servidor.

Por ejemplo si nuestro servidor cuenta con dos interfaces de red conectadas a la red 10.0.0.0/24 la primera y a la red 172.16.0.0/16 la segunda podríamos impedir a un usuario determinado (genera una cantidad de trafico no soportada por la infraestructura de esa red) el acceso desde la red 10.0.0.0/24

10. ¿puedo configurar los mensajes del servidor? ¿cuáles? ¿dónde?

Se pueden configurar los mensajes de bienvenida para los usuarios o grupos en la pestaña de opciones del usuario o grupo de usuarios en la pestaña Wellcome Messagge.

11. Interpreta la salida que muestra la actividad del servidor

La actividad del servidor muestra tres pestañas.

  • Sessions: Muestra las sesiones que se están produciendo en el servidor ftp en tiempo real
  • Statistics: Muestra un histórico de la actividad del servidor
  • Log: Muestra errores , información del inicio de la ejecución y mensajes globales

12. ¿puedo desactivar a un usuario del servicio? Si existe una manera automática, ¿en qué parámetros de basa?

Si, simplemente desmarcando la checkbox “Enable account ” en la pestaña “User Information” en el formulario “user properties”.

Podemos automatizar esta acción en la sección de propiedades del usuario, en la opción “account type” estableciendo una fecha de caducidad para esa cuenta