miércoles, 19 de febrero de 2014

Fundamentos Tecnológicos: pasos para la instalación del servidor Web

Servidor Apache PHP MySQL 
Un requisito indispensable para el funcionamiento de los programas de automatización de código abierto como OpenBiblio, PMB, Archon, SteveMuseum y Omeka es la instalación previa de un servidor HTTP Apache con compilador PHP y base de datos MySQL. El método de instalación de estos componentes puede ser de tres tipos: 
  1. Componente a componente. Consiste en la instalación de todos los elementos del servidor uno a uno, comenzando con el servidor Apache HTTP 2.2, seguidamente con el módulo de PHP 5.3.10 y finalmente con la base de datos MySQL 5.5. Su complejidad estriba en la correcta configuración de los parámetros y propiedades de los archivos httpd.conf, php.ini y my.ini.
  2. Distribución compacta. Existen distribuciones auto-instalables que incluyen todos los programas del servidor pre-configurados para su correcto funcionamiento. Este método se limita a un instalador de Windows o a la compilación de un archivo en Linux, que guía automáticamente todos los pasos de la instalación evitando errores y ahorrando tiempo. Los desarrolladores web, emplean distintas distribuciones dependiendo del sistema operativo en el que basen su trabajo. Para instalaciones en S.O. Windows se utiliza AppServ, WAMP, EasyPHP, XAMPP, AMPPS, MoWeS. Para instalaciones en S.O. Linux, fundamentalmente XAMPP. Para instalaciones en S.O. Mac, la distribución XAMPP, AMPPS y MAMP. Este método de instalación compacta, implica que en todo caso para que el servidor funcione con sus complementos, será necesario que los servicios Apache y MySQL estén activos. Esto hace inviable la portabilidad de la instalación, siendo solamente accesible desde la máquina en la que fue instalado.
  3. Distribución compacta portable. Es el método más sencillo y aconsejado para experimentar con programas de automatización de código abierto. Consiste en una distribución compacta, pre-instalada en una unidad USB externa al equipo que la ejecuta. Dicho de otra forma, permite ejecutar los servicios del servidor Apache y MySQL sin instalación residente en el S.O. del equipo que ejecuta el programa. A este tipo de distribuciones también se las denomina USB-CD debido a que es posible grabar en un CD-rom la instalación completa del servidor y los programas pertinentes para ser ejecutados desde cualquier equipo con unidad lectora. Las distribuciones más conocidas son Wapache y Server2Go.
Para el seguimiento y desarrollo de la asignatura se utilizará la distribución Server2Go, por ser la más completa de su tipo y ofrecer un alto grado de estabilidad en su configuración y funcionamiento. Para su instalación se deberán seguir los siguientes pasos:
  1. Descargar el programa en su versión extendida y estable 1.8.2 Apache 2.2.15 ZIP
    http://www.server2go-download.de/download/server2go_a22_psmp.zip

  2. Copiar y descomprimir el archivo descargado en un PenDrive ó unidad USB con un mínimo de 1GB de capacidad.

  3. Renombrar la carpeta descomprimida con la siguiente denominación "server2go". Asegurarse de que el contenido de la distribución está bajo el directorio especificado.

  4. Ejecutar el archivo "USB:\server2go\Server2Go.exe" para iniciar los servicios del servidor Apache HTTP y MySQL. El resultado deberá ser el siguiente:

Se deben advertir además, los siguientes aspectos:
  • La instalación de Server2Go se ubicará únicamente en la unidad USB en la que se descomprima. Al igual que en una instalación mediante distribución compacta tradicional, ésta  servirá a modo de banco de pruebas cliente-servidor para cualquier sistema de automatización que se instale posteriormente. Esto significa que se trabajará en el navegador web con el DNS por defecto localhost o lo que es lo mismo 127.0.0.1. No obstante se ha de observar que en Server2Go, la dirección mostrada varía levemente con la notación 127.0.0.1:4001, tal como se muestra en la siguiente imagen.


    Cuando a una dirección IP le sigue ":" y un valor numérico, significa que se está especificando el puerto de conexión que utilizan los servicios del servidor y el propio navegador web para mostrar una determinada página web ó programa web alojado en dicho servidor. En este caso se utiliza por defecto el puerto 4001, aunque lo habitual es el empleo del puerto 80, específicamente diseñado para las comunicaciones por protocolo HTTP.

Configuración de Server2Go
A pesar de ser una distribución estable y bien diseñada, Server2Go requiere algunos cambios en su configuración, especialmente en cuanto a usuario y contraseña de MySQL y PhpMyAdmin se refiere.

Pasos previos de seguridad
  • Modificar propiedades de directorios, subdirectorios y archivos para modo de lectura, escritura y ejecución 777
  • Copia de seguridad del archivo de configuración general de Server2Go "server2go\pms_config.ini" por "server2go\pms_config.ini.old"
  • Copia de seguridad del archivo de configuración de PhpMyAdmin "server2go\admin\phpMyAdmin\config.inc.php" por "server2go\admin\phpMyAdmin\config.inc.php.old"
  • Copia de seguridad del archivo de configuración de PHP "server2go\server\config_tpl\php.ini" por "server2go\server\config_tpl\php.ini.old"
La documentación oficial [1] [2] y la experiencia de uso recomiendan la modificación de los siguientes parámetros en el archivo "pms_config.ini" aplicando los valores expresados a continuación.
  • UseMySQL = 1 // Activa el servicio MySQL
  • LocalMirror = 0 //  Desactiva el modo espejo de lectura
  • OverwriteLocalMirror = 0 // Permite sobreescribir en las bases de datos
  • DeleteDatabaseFiles = 0 // No borrará las bases de datos que se creen 
Configuración de usuario y contraseña de PhpMyAdmin
  • Ejecutar "server2go.exe" y cargar la siguiente dirección en la barra de direcciones "http://127.0.0.1:4001/phpmyadmin/"
  • Acceder a la pestaña "phpmyadmin >> privilegios >> editar usuario root >> cambiar contraseña".
  • Cambiar la contraseña del primero de los tres usuarios "root", añadiendo la contraseña "root". Reiniciar Server2Go. Repetir el proceso con el segundo usuario.
Configuración de PHP
  • Modificar el archivo de configuración "server2go\server\config_tpl\php.ini"
  • Editar y reemplazar el parámetro "error_reporting" por "error_reporting  =  E_ALL & ~E_NOTICE & ~E_DEPRECATED" que elimina los avisos de funciones y rutinas en PHP defectuosas.
  • Modificar el parámetro "max_execution_time = 30" por "max_execution_time = 0" que permitirá ejecutar un programa en PHP durante el tiempo que sea necesario hasta su finalización.
  • Modificar el parámetro "memory_limit = 128M" por "memory_limit = 1024M" que amplía la capacidad de memoria para ejecutar programas PHP.
  • Descomentar el parámetro ";extension=php_exif.dll" eliminando el ";" que le precede, para habilitar las funciones de extracción de metadatos exif en imágenes.
  • Cortar y pegar encima del parámetro anterior, el parámetro "extension=php_mbstring.dll". De no hacerlo la librería EXIF no funcionará correctamente.
  • Añadir una nueva línea en el apartado de extensiones "extension=php_fileinfo.dll", para habilitar la librería "fileinfo" especializada en la lectura de tipos de archivos.
  • Comprobar que las extensiones quedan en el siguiente orden:
    • extension=php_mbstring.dll
    • extension=php_exif.dll
    • extension=php_fileinfo.dll
  • Guardar archivo y reiniciar.
  • El hecho de añadir una línea con la extensión "php_fileinfo.dll" en el archivo "php.ini" no significa que la librería se instalara correctamente. Es por ello necesario descargar el paquete específico disponible en: http://gnuwin32.sourceforge.net/downlinks/file-bin-zip.php
  • Descomprimir el archivo "file-bin-zip.php" y copiar los archivos del subdirectorio "file-4.26-bin\share".
  • Una vez copiados, crear una carpeta cuya denominación sea "magic" en la siguiente ruta "server2go\server\php".
  • Pegar los archivos copiados en la carpeta recientemente creada "server2go\server\php\magic"
  • Reiniciar el sistema.
Configuración de Apache HTTP
  • Modificar el archivo de configuración "server2go\server\config_tpl\httpd.conf"
  • Descomentar el módulo "mod_rewrite" eliminando la almohadilla "#" de la línea "#LoadModule
    rewrite_module modules/mod_rewrite.so" por "LoadModule rewrite_module modules/mod_rewrite.so"
  • Reemplazar todos los parámetros "AllowOverride None" por "AllowOverride all"
  • Guardar archivo y reiniciar.

        5 comentarios:

        HE-MAN dijo...

        Horas para ver el phpinfo en el IExplorer de mierda ya que en mozilla no se visualiza correctamente.

        HE-MAN dijo...

        Gracias por configurar el PHPinfo.

        --------------------------------

        1 pregunta: ¿Como haces que Winmierda Vista te sea compatible con la última versión de Mysql?

        Apuntes dijo...

        InnoDB
        MyISAM

        MyISAM es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de Mysql, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial.

        Documentación de MySQL sobre MyISAM

        Manuel Blázquez dijo...

        No sólo influye en el almacenamiento como especificas. Como expliqué en clase, influye de forma decisiva en la indexación de los registros. Si os interesa ese aspecto de MYSQL, Recomiendo encarecidamente la consulta de los siguientes recursos:

        http://dev.mysql.com/doc/refman/5.0/en/myisam-index-statistics.html

        http://mysql-full-text.blogspot.com/2007/10/b-tree-myisam-index-structure.html

        http://dotwhat.net/myi/9648/

        http://cherry.world.edoors.com/CexPzyOax6DI

        http://doc.51windows.net/mysql/?url=/mysql/ch08s03.html

        Manuel Blázquez dijo...

        Desde el punto de vista de la recuperación de información es muy importante el almacenamiento de cara a la indexación, compresión y organización de los datos para poder ser consultados mediante métodos FULLTEXT de búsqueda y consulta que se soportan mediante archivos inversos que se generan mediante el método InnoDB y MyISAM. Ese punto no lo termina de denotar la wikipedia que has consultado. Recomiendo mejor el artículo de la wikipedia inglesa sobre ese aspecto:

        http://en.wikipedia.org/wiki/MyISAM

        También es interesante el análisis que efectúa el amigo Luciano en Luauf:

        http://luauf.com/2008/07/06/mysql-myisam-vs-innodb/

        Saludos!