storytlr

Cómo instalar ‘storytlr’ en un servidor con cPanel y PHP 5.3.x FastCGI

Storytlr es una plataforma libre de microblogueo. Hecha con PHP y MySQL, tiene una licencia Apache 2.0.

Puedes publicar cualquier cosa que te parezca interesante, importar tu contenido de otras redes sociales y compartir tu vida o tus inquietudes online desde tu propio servidor y tu propio dominio, manteniendo así tu soberanía e independencia tecnológica.

Si lo has intentado instalar en un servidor cuyo intérprete de PHP corre como FastCGI, te habrás encontrado con un par de problemillas nada más empezar…

  1. Apache genera un error 500 (error interno del servidor),
  2. Dice que magic_quotes_gpc deben estar desactivadas y
  3. Dice que no encuentra el framework de Zend

Bien, voy a hacer una instalación paso a paso e iré solucionando estos fallos sobre la marcha.

Instalación del script: Como siempre

Los pasos a seguir para instalar storytlr no difieren en absoluto a los que seguiríamos para instalar cualquier otro script en PHP que requiera una base de datos MySQL. Para simplificar este ejemplo, voy a presuponer en todo momento que quiero instalar storytlr en un subdirectorio llamado microblog de un dominio que ya tengo registrado, configurado y funcionando (https://dominio.ast/microblog):

  1. Creo una nueva base de datos (UTF8) y una nueva usuaria para esa base de datos. Concedo todos los permisos a esa usuaria para esa base de datos.
  2. Descargo la última versión de storytlr de storytlr.org
  3. Subo el archivo comprimido al servidor, a /home/dominio.ast/public_html/
  4. Descomprimo el archivo comprimido de storytlr
  5. Renombro el directorio creado tras la descompresión por microblog
  6. Abro en el navegador la dirección https://dominio.ast/microblog

Y es aquí cuando me encuentro con el primer problema…

Cómo evitar el error 500 de Apache

Este error se debe a que storytlr intenta activar php_flag short_open_tag “a pelo” desde el archivo .htaccess así:

# Security stuff
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Rewrite rules for pretty URL
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

# Enable php short open tags
php_flag short_open_tag on

Para evitar ese error 500 voy a cambiar el contenido de nuestro .htaccess por este otro:

# Security stuff
<Files .htaccess>
  order allow,deny
  deny from all
</Files>

# PHP 5, Apache 1 and 2 - https://miguelmenendez.pro
<IfModule mod_php5.c>
  php_flag magic_quotes_gpc off
  php_flag short_open_tag on
</IfModule>

# Rewrite rules for pretty URL
# Various rewrite rules - https://miguelmenendez.pro
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule .* index.php
</IfModule>

# Enable php short open tags
# Generate a 500 error on PHP 5.3.x as FastCGI!
# We are using a .user.ini file for this - https://miguelmenendez.pro
# php_flag short_open_tag on

Si ahora refresco la página en el navegador veo que ya no se genera el error 500 y que ya me sale la primera página de la instalación de storytlr, la comprobación de requisitos. Y es aquí donde aparecen los dos siguientes errores:

Primera página de la instalación de storytlr.
Primera página de la instalación de storytlr.

Cómo desactivar magic_quotes_gpc

Efectivamente se está ignorando la línea php_flag magic_quotes_gpc off del archivo .htaccess. Esto se debe a que PHP (5.3.x) está corriendo como FastCGI.

No hay problema. Tan solo debo crear un nuevo archivo llamado .user.ini en el directorio raiz de la instación de storytlr (en este ejemplo, en /home/dominio.ast/public_html/microblog/) con el siguiente contenido:

# Only for PHP 5.3.x as FastCGI - https://miguelmenendez.pro
magic_quotes_gpc = Off
short_open_tag = On

Si refresco el navegador veo que las magic_quotes_gpc ya están desactivadas.

Las magic_quotes_gpc ya están desactivadas.
Las magic_quotes_gpc ya están desactivadas.

Voy a por el siguiente error:

Cómo instalar Zend Framework para storytlr

Si necesitase el framework de Zend para otras cosas y tuviese suficientes permisos en un servidor Debian o CentOS lo instalaría así. Incluso sin permisos y sin acceso SSH podría instalarlo así. Pero como en este ejemplo sólo lo necesito para echar a andar storytlr, lo voy a solucionar de la siguiente forma:

  1. En el momento de escribir esto storytlr iba por la vesión 1.2.0, que requiere la versión 1.12.x de Zend Framework. Ten en cuenta que las versiones han podido cambiar.
  2. Voy a la web oficial de Zend www.zend.com/community/downloads (hay una réplica aquí) y me bajo el paquete minimal de la versión adecuada. Para este ejemplo, el archivo Zend Framework 1.12.3.
  3. Subo el archivo recién descargado al servidor, a un directorio temporal y lo descomprimo.
  4. Muevo el directorio /ZendFramework/library/Zend creado tras la descompresión al directorio /protected/library/ de la instalación de storytlr (en este ejemplo quedaría así: /home/dominio.ast/public_html/microblog/protected/library/Zend).

Al refrescar el navegador veo que ya se cumplen todos los requisitos para continuar con la instalación de storytlr:

Ya se cumplen todos los requisitos para continuar con la instalación.
Ya se cumplen todos los requisitos para continuar con la instalación.

Configuración inicial

Completo el formulario de configuración con los datos que procedan:

  • Máquina en la que está el servidor de bases de datos MySQL (y puerto si es distinto al habitual)
  • Nombre de la base de datos
  • Nombre de usuario/a de la base de datos
  • Contraseña de la base de datos
  • Nombre de usuario/a de quien administrará storytlr
  • Contraseña de quien administrará storytlr
  • API Key de Google Maps (opcional, se obtine aquí)
  • API Key de Flickr (opcional, se obtine aquí)
Final de la instalación de storytlr.
Final de la instalación de storytlr.

Sólo me queda borrar el archivo /protected/install/install.php y asegurar el archivo de configuración para completar la instalación.

Miguel Menéndez

Administrador de sistemas, auditor de redes y seguridad.