Jan 29

Introducción

El problema mas común que impide que se pueda acceder correctamente a un sitio o aplicación web que se está instalando o desarrollando es que los archivos y directorios no cuenten con los permisos de acceso apropiados para que el servidor de páginas (Apache por ejemplo) pueda accederlos correctamente.  En estos casos se obtiene un mensaje de error similar al  mostrado a continuación.

failed to open stream: Permission denied in /ruta/al/proyecto/index.php on line xx

La solución

En términos generales, los directorios deben contar con permisos 755 (drwxr-xr-x) y los archivos -como .php- 644 (-rw-r–r–).  Esta modificación puede realizarse de manera recursiva aprovechando la flexibilidad del comando find de la siguiente manera.

$ find /ruta/al/proyecto -type d -exec chmod 755 {} \;
$ find /ruta/al/proyecto -type f -exec chmod 644 {} \;

Inclusive es posible establecer filtros a los nombres de los recursos actualizados para mayor precisión en el cambio.

$ find /ruta/al/proyecto -type f -name '*.php' -exec chmod 644 {} \;
Tagged with:



En January 29 de 2012, Jorge Iván Meza Martínez escribió acerca de Permisos de archivos/directorios incorrectos para el servidor de páginas en GNU/Linux.
Jan 29

Introducción

Intentando utilizar un software web que incluía un .htaccess y este se aprovechaba de la funcionalidad del RewriteEngine de Apache2, obtenía siempre el siguiente mensaje de error.

Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Solución

Activar el módulo del RewriteEngine de Apache2.

$ sudo a2enmod rewrite

Reiniciar Apache2 para que tenga en cuenta al módulo recién activado.

$ sudo service apache2 restart

Tagged with:



En January 29 de 2012, Jorge Iván Meza Martínez escribió acerca de Invalid command 'RewriteEngine' con Apache2.
Dec 28

Introducción

Mientras que en producción mostrar al usuario final la información relacionada con el error producido es un riesgo de seguridad demasiado alto, durante el desarrollo del software es una condición necesaria para entender que está pasando con el código que se está probando.

En la mayoría de despliegues de Apache/PHP vienen ahora con esta opción desactivada, redireccionando por defecto los mensajes de error al archivo de registro habitualmente ubicado en /var/log/apache2/error.log.

Procedimiento

Es posible activar la opción de mostrar los errores de PHP en pantalla a tres diferentes niveles de acuerdo con el alcance que se le desee dar a este comportamiento.

A nivel global, esta modificación aplica a todo el servidor o sitios web publicados bajo esa configuración.

$ sudo vi /etc/php5/apache2/php.ini

error_reporting = E_ALL
display_errors = On

A nivel de un directorio o una aplicación, esta modificación afecta a los scripts ubicados bajo un directorio específico.

$ vi /var/html/un/directorio/especifico/.htaccess

<IfModule mod_php5.c>
    php_value error_reporting E_ALL

    php_value display_errors on
</IfModule>

A nivel de una sección de código específico, esta modificación afecta sólo una parte de un script.

$ vi /var/html/un/script.php

error_reporting(E_ALL);
ini_set('display_errors','On');

Aclaración adicional

Para que los ajustes de configuración de los últimos dos niveles sean tenidos en cuenta, el directorio donde del sitio web publicado deberá tener por lo menos activa la siguiente opción.

AllowOverride Options

Esta se deberá modificar bajo /etc/apache2/mods-enabled/userdir.conf para los sitios personales de los usuarios (public_html) o /etc/apache2/sites-enabled/* para los virtualhosts existentes.

Tagged with:



En December 28 de 2011, Jorge Iván Meza Martínez escribió acerca de Mostrar en pantalla los errores producidos en PHP con Apache bajo Ubuntu.
Jun 21

El servidor de desarrollo para el Pulsar Project esta destinado como plataforma para el desarrollo de las herramientas y aplicaciones para el apoyo a la educación en los mundos virtuales, este debe contar con el software necesario para permitir el desarrollo, así como tambien para realizar pruebas de las mismas, por este motivo el servidor debe contar con las siguientes caracteristicas :

  • Poderse mover de una maquina a otra para no depender de una maquina o una única instalación
  • Servir de linea base para la documentación de instalación y configuración de servicios
  • Permitir volver a versiones anteriores del estado del servidor
  • Facilitar el proceso de pruebas de las herramientas desarrolladas, permitiendo el cambio de configuraciones y componentes instalados
  • Permitir a otros usuarios la descarga desde Internet del servidor para que estos prueben las herramientas desarrolladas
  • Ser muy liviano para ejecutarse en maquinas con pocos recursos
  • Tener un tamaño pequeño para permitir la descarga rápida desde Internet o su copia entre maquinas
  • Ser software libre lo que permita su utilización sin requerimientos de licencia por parte de los usuarios.

Al analizar todas las características del servidor se tomaron las siguientes decisiones :

  • Crear un maquina virtual lo cual permite mover y ejecutar la maquina virtual en diferentes computadores de una forma fácil y rápida, como también permite volver a estados previamente almacenados y puede ser distribuida para que otros usuarios la puedan utilizar,
  • Instalar en la maquina virtual con un Servidor Linux para lo cual se selecciono la plataforma Ubuntu Server 10.04 gracias a la gran experiencia que se tiene en el uso de esta plataforma y a que provee todas las herramientas necesarias para desarrollar el proyecto.
  • Realizar una instalación mínima de maquina virtual la cual permite crear una maquina virtual que ocupa poco espacio en disco gracias a que solo instala los componentes necesarios para su ejecucion, ademas de tener un núcleo diseñado especialmente para ejecutarse en ambientes virtualizados.
  • Se selecciono VirtualBox como plataforma de virtualizacion por su fácil, rápida y liviana instalación, ademas de ser multiplataforma lo que permite utilizar cualquier computadora como potencial servidor de pruebas.

En cuanto a la plataforma de desarrollo el servidor debe contar con los siguientes servicios y plataformas de desarrollo :

  • Servidor Web para la publicación de la aplicación web de soporte a las herramientas de los mundos virtuales y aplicaciones de terceros que se comunicaran con las herramientas en los mundos virtuales.
  • Servidor de base de datos para la aplicación web y las aplicaciones de terceros.
  • Servidor de correo para permitir el envió local de mensajes entre aplicaciones.

Se han seleccionado las siguientes herramientas básicas para comenzar el desarrollo del proyecto, las cuales cumplen con las características necesarias para el desarrollo de proyecto.

  • Servidor de Terminal Segura OpenSSH, el cual permite realizar conexiones seguras para la administración remota del servidor y el envió de archivos.
  • Servidor de Base de Datos MySQL muy popular en el mundo del software libre y el cual utilizan muchas de las herramientas a utilizar dentro del proyecto.
  • Servidor Web Apache2 con soporte para PHP, el cual permite desarrollar e instalar aplicaciones muy populares en el mundo del software libre.
  • Servidor de Correo Postfix para el envío y recepción de correo.

Hasta el momento se han seleccionado las herramientas tecnológicas que responden en su mayoría a herramientas de software libre que pueden ser usadas y modificadas, así como también herramientas sencillas de manejar y ampliamente utilizadas en el mundo del desarrollo de software.

Tagged with:



En June 21 de 2010, Marlon J. Manrique escribió acerca de Pulsar Project : Servidor de Desarrollo.
Oct 14

Introducción.

Los bots de los motores de búsqueda son las aplicaciones que contínuamente están revisando los sitios web y sus enlaces para indexar sus páginas.  Esto es bueno porque es precisamente lo que permite funcionar a los buscadores web y mantener su información actualizada, sin embargo también es malo para quienes mantienen los sitios si estos acceden con demasiada frecuencia y utilizan demasiados recursos del servidor, además también es posible que se desee mantener información oculta a los ojos de estos motores de búsqueda.

Para hacer esto se les indica o se les niega el acceso a nuestro sitio a estas aplicaciones.

Procedimiento.

Utilizando el archivo robots.txt.

  • Este archivo se debe ubicar en la raíz del sitio web.
  • Es una indicación amable a los bots para que cumplan lo que allí se especifica.
  • Es posible que bots malintencionados hagan caso omiso de estas indicaciones.

Impedir el acceso a todo el sitio a todos los bots.

# Go away
User-agent: *
Disallow: /

Impedir el acceso a la carpeta /blog del sitio al bot de Google.

# Don't index my blog
User-Agent: Googlebot
Disallow: /blog/

Desde el archivo .htaccess.

  • Las modificaciones se realizan en el archivo .htaccess del sitio web.
  • Estas políticas son mas restrictivas y no pueden ser obviadas por los bots.
  • Debe concerse con precisión la red de la cual proviene el bot ya que se impedirá su acceso por parte del servidor de páginas.
  • Es posible que existan otros clientes válidos que intenten acceder desde las ubicaciones especificadas, por ello la dirección especificada deberá ser lo mas precisa posible.

Impedir el acceso al bot de Google.

Limit GET HEAD POST
order allow,deny
deny from 66.249
allow from all

Tagged with:



En October 14 de 2009, Jorge Iván Meza Martínez escribió acerca de Impedir el acceso a los ‘bots’ a un sitio web.
Apr 20

El método rápido.

La instalación de estos paquetes se puede realizar de dos maneras.  Utilizando Tasksel, que yo he llamado el método rápido, o instalando -casi- individualmente los paquetes que se deseen.  En mi opinión personal prefiero el segundo método ya que controlo directamente que se está instalando en el servidor.

Tasksel es una herramientas de Debian que se incluye en la mayoría de las distribuciones hijas (como Ubuntu) y permite instalar en bloque muchos paquetes según agrupaciones predefinidas, entre ellas la instalacion de un LAMP Server.

Instalación de Apache.

Instalación del servidor HTTP.

# apt-get install apache2

# apt-get install wwwconfig-common

Modificar la ubicación del DOCUMENT_ROOT.

Por defecto el árbol de directorios que se publica a través del servidor web se ubica en /var/www, si se desea modificar esta ubicación es necesario realizar los siguientes pasos.

Crear el directorio donde se almacenarán los documentos web.

# mkdir -p /home/www/public

Modificar la configuración de Apache para incluír a este nuevo directorio.

# vi /etc/apache2/sites-enabled/000-default

Reemplazar las ocurrencias de /var/www por la ruta deseada, es decir, los valores de DocumentRoot y su correspondiente Directory.

DocumentRoot /home/www/public/
# ...
<Directory /home/www/public/>
# ...

Reiniciar el servicio para tener en cuenta los cambios recién realizados.

# /etc/init.d/apache2 restart

Instalación de PHP.

Instalación de lenguaje de programación y varios de sus módulos.

# apt-get install php5 php5-cli php5-gd php5-mcrypt php5-curl php5-imagick php5-mhash php5-sqlite php5-xsl

Instalación del módulo dinámico (DSO) de Apache.

# apt-get install libapache2-mod-php5

Instalación de MySQL.

Instalación del motor de base de datos.

# apt-get install mysql-server

Instalación del modulo de PHP asociado a este motor de base de datos.

# apt-get install php5-mysql

Instalación de PHPMyAdmin para la administración de la base de datos a través de web.

# apt-get install phpmyadmin

El acceso se realiza a través de la URL http://localhost/phpmyadmin/.

Tagged with:



En April 20 de 2009, Jorge Iván Meza Martínez escribió acerca de Instalación de Apache, PHP y MySQL en Linux Debian 5.
Dec 05

Para poder comenzar a desarrollar en uno de los tantos proyectos que tengo debo instalar un servidor web con soporte para PHP, por supuesto estamos hablando de Apache2 y PHP5 en Ubuntu 8.10 y aunque la tarea es muy sencilla, aqui van los pasos :

Instalar Software :

  • Instalar Apache2 y PHP5
    sudo apt-get install apache2 php5
  • Abrir el navegador favorito y entrar a
    http://<IpServidor>
  • Nos debe mostrar el popular
    It works!

Habilitando Paginas para los Usuarios :

  • Para poder publicar de una forma mas rapida y sencilla las paginas, me gusta activar el modulo de directorio de usuario, de tal modo los usuarios pueden publicar sus paginas sin necesidad de muchos permisos sobre el servidor, esto es ideal para el ambiente de desarrollo.
  • Abrimos una consola
  • Habilitar Modulo :
    sudo a2enmod userdir
  • Cambiamos al directorio home del usuario
    cd
  • Creamos el directorio donde publicaremos las paginas, debe tener el nombre public_html
    mkdir public_html
  • Reiniciamos el servidor web
    sudo /etc/init.d/apache2 restart
  • Abrir el navegador favorito y entrar a
    http://<IpServidor>/~<usuario>
  • Nos sale la lista vacia de archivos en el directorio y nos indica la version
    Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4 with Suhosin-Patch Server at 192.168.1.3 Port 80

Ahora tenemos nuestro servidor de paginas con soporte para PHP

Tagged with:



En December 5 de 2008, Marlon J. Manrique escribió acerca de Instalando PHP5 y Apache2 en Ubuntu 8.10.