Apache

Error en la instalación de PrestaShop v1.5.1

NOTA: posteriormente a  la creación de este post, hemos observado que una instalación con FastCGI, directorios con 755, ficheros con 644, safe_mode = off y base de datos MyISAM, funciona correctamente. Más detalles en Instalar Prestashop 1.5.1 en FastCGI.


No hace mucho se ha publicado la versión 1.5.1.0 de Prestashop. Sorprendentemente nos hemos encontrado con un error de permisos en la instalación, tanto en modo Apache como FastCGI.

El error en cuestión, no da mucha información para poder solucionarlo: An error occured during installation en Populate database tables.

error prestashop 1.5.1.0

Como verás, el error parece de base de datos, pero realmente no tiene nada que ver, es de permisos. Lo curioso es que ocurra tanto en modo FastCGI como Apache. Por otro lado, lo contradictorio, es que en la instalación indica que todos los permisos son correctos:

error permisos prestashop 1.5.1.0

Remarcamos, el directorio img, porque ahí es donde faltan permisos, concretamente en /httpdocs/img/t

Dentro de ese directorio hay 3 imágenes (habrá más si ya se ha intentado una instalación anteriormente):

  • 0.gif
  • AdminMobile.gif
  • AdminRequestSql.gif

Dándole permisos 777 a estas 3 imágenes, la instalación se llevará acabo correctamente.

instalar correctamente prestashop 1.5.1.0

Si aún así no puedes realizar la instalación, te recordamos usar el modo Apache, donde Prestashop indica claramente los errores de permisos, y asignar los permisos correctos de una instalación completa:

  1. 777 al directorio config y al directorio log
  2. 777 al fichero /sitemap.xml
  3. De forma recursiva, 777 al directorio img y todos sus subdirectorios
  4. De forma recursiva, 777 al directorio mail y todos sus subdirectorios
  5. De forma recursiva, 777 al directorio modules y todos sus subdirectorios
  6. De forma recursiva, 777 al directorio translations y todos sus subdirectorios
  7. De forma recursiva, 777 al directorio upload y todos sus subdirectorios
  8. De forma recursiva, 777 al directorio download y todos sus subdirectorios
  9. De forma recursiva, 777 al directorio cache y todos sus subdirectorios
  10. De forma recursiva, 777 al directorio themes/default/lang y todos sus subdirectorios
  11. De forma recursiva, 777 al directorio themes/default/cache y todos sus subdirectorios

Esperamos que en breve Prestashop corrija este tipo de errores o incompatibilidades. Mientras tanto, si tienes alguna duda para instalar tu prestashop, puedes usar la zona de comentarios o abrir un ticket.

Activar las URLs amigables en Prestashop

No es la primera vez que en aquihaydominios.com hablamos de las URLs amigables ni del fichero .htaccess. Hoy no vamos a explicar estos 2 conceptos, si no que vamos a aplicarlos a Prestashop.

Para empezar tan solo tienes que crear un fichero vacío llamado .htaccess en el raíz de tu Prestashop. Lo normal si tienes el alojamiento web con nosotros es que tengas que crearlo dentro de /httpdocs. No olvides darle permisos 777. Leer más

Configurar rotación de archivos de registro en un panel Plesk

En ocasiones, te ha podido ocurrir que tienes espacio ocupado en tu alojamiento web y no sabes porqué. Primero debes revisar dónde tienes ocupado el espacio en tu alojamiento web. En este post verás como reducir el espacio ocupado por los ficheros de log o archivos de registro en tu panel Plesk.

Estos ficheros de log suelen aumentar de tamaño cuando por ejemplo se tienen muchas visitas, o si hay muchos errores en la web, ya que toda esta información se va registrando en estos ficheros. En otros post explicaremos más sobre la detección de errores en php con estos ficheros, ahora nos vamos a centrar simplemente en reducir espacio si estos ficheros crecen en exceso.

Paso 1: Primero debes acceder a tu panel Plesk.

Paso 2: Después debes hacer clic en Sitios web y dominios

sitios web y dominios

Paso 3: A continuación debes hacer clic en Mostrar operaciones avanzadas y cuando se desplieguen más opciones en Registros:

registros panel plesk

Ahí verás una serie de ficheros como access_log, error_log, etc. De estos ficheros también hablaremos en detalle en otros post. Ahora tan solo debes comprobar si ocupan mucho espacio, y si es así a continuación te mostraré como puedes reducir el tamaño de dichos ficheros.

ficheros de log

Paso 4: Haz clic en Rotación de registros:

rotacion de registros panel plesk

Paso 5: En Configuración podrás indicar el tamaño máximo que pueden ocupar los ficheros, así como el número máximo de archivos de registro y también puedes marcar la opción de Comprimir archivo de registro. De este modo si por ejemplo indicas que el tamaño máximo sea 1024KB, y que como máximo haya 2 archivos de log, como máximo los ficheros ocuparán 2048KB que son 2MB. Por último debes pulsar sobre el botón de arriba Activar:

activar rotacion de log panel plesk

De esta forma podremos limitar el espacio ocupado por estos archivos de registro tal y como queramos.

Si te queda alguna duda puedes usar la zona de comentarios. Espero que te haya resultado de ayuda. A nosotros como siempre puedes ayudarnos compartiendo el post en tus redes sociales. ¡Gracias!

Cómo poner una página de mantenimiento en tu web

Hay veces que por algún motivo, necesitas trabajar en tu web, pero no quieres que esté online y los usuarios vean los cambios que estás haciendo. En ese caso, veamos cómo poner una página de mantenimiento en tu web haciendo uso del fichero .htaccess.

Si tienes un fichero .htaccess creado dentro del directorio /httpdocs, tendrás que editarlo. En caso de no tenerlo, deberás crearlo. El código que debes añadir en este fichero es el siguiente:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/paginaDeMantenimiento.html$
RewriteCond %{REMOTE_ADDR} !^TuIpPublica
RewriteRule $ /paginaDeMantenimiento.html [R=302,L]

Dentro de este código solo hay 2 parámetros que deberás cambiar:

  • paginaDeMantenimiento.html
    Aquí deberás poner el nombre de la página html que hagas para indicar que tu web está en mantenimiento. Puede ser lo compleja que quieras o muy simple, bastaría con poner un texto que indique: “Estamos realizando labores de mantenimiento. Gracias”
  • TuIpPublica
    Aquí debes poner tú ip. Tu ip pública actual es: 54.159.51.118
    Esto se hace para que solo desde tu ip pública se pueda ver la web actual y no la página de mantenimiento. De este modo, mientras tu estás trabajando en tu web, los demás verán tu página de mantenimiento paginaDeMantenimiento.html

Ya que tu verás la web con normalidad, te preguntarás: ¿Cómo puedo comprobar que los demás no verán mi web si no la página de mantenimiento? Tienes varias opciones.

  • Comprobar tu web desde otra conexión. No sirve desde otro ordenador si está conectado al mismo router, debe ser otra conexión. Por ejemplo: si tienes ADSL en casa y además tienes conexión en el móvil con otra tarifa de datos (no vale si está conectado al mismo router por wifi) podrás comprobar tu web desde el móvil.
  • Usar un navegador anónimo de los que hay por internet. De esta forma, desde tu propia conexión, puedes ver otras páginas pero sin usar tu ip.

Por otro lado, para los que usáis WordPress podéis usar otra forma. Tan solo tenéis que añadir en el fichero functions.php de vuestro tema el siguiente código:

function modo_mantenimiento() {
if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
die('Estamos realizando labores de mantenimiento...');
}
}
add_action('get_header', 'modo_mantenimiento');

De modo que si estáis logados en WordPress podréis ver la página y en caso contrario, veréis el mensaje que pongáis en la función die.

Así de fácil, de todos modos si tienes alguna consulta no dudes en usar la zona de comentarios. Y si el post te ha sido de utilidad o piensas que le puede servir a alguien, te agradecemos que lo compartas en tus redes sociales. ¡Gracias!

Ejecutar php como Apache o como FastCGI

Si has trabajado con aplicaciones como WordPressPrestashop, que funcionan con Apache y Mysql, y has instalado plugins, temas, etc etc. Es probable que alguna vez te hayas encontrado con que al usar el plugin o módulo te haya dado un error de permisos. A veces se puede solucionar simplemente accediendo  por FTP al directorio del plugin, y dándole permisos 777 a los directorios, o a algún fichero concreto. Sin embargo, a veces ocurre que es WordPress, Prestashop u otra aplicación la que crea los ficheros o directorios, y es un usuario distinto al usuario FTP. Es decir, el usuario que ejecuta por ejemplo WordPress es Apache y es distinto al usuario FTP, por lo que los ficheros o directorios que crea Apache no son accesibles al usuario FTP.

En definitiva, esto se puede solucionar cambiando el modo de ejecución de PHP, y en lugar de usar Apache, usar FastCGI. De esta forma cualquier fichero o directorio modificado por la aplicación también podrá ser usado por el usuario FTP y viceversa.

Hay que tener en cuenta que al ser un modo distinto de ejecución de PHP puede que parte de la programación no funcione igual en un modo que en otro, por lo que se recomienda, que si se decide hacer el cambio, se revise exhaustivamente el funcionamiento de la web, para comprobar que todo es correcto.

A continuación describimos los pasos para hacer el cambio:

  • Accede a tu panel Plesk
  • Haz clic en la pestaña “Sitios web y dominios”
  • A continuación, abajo del todo haz clic en tu dominio
  • Por último en la sección “Estadísticas y scripting web”, donde indica Soporte para PHP, cambiar Módulo Apache por Aplicación FastCGI. No confundir con Aplicación CGI, que es otra opción y tiene peor rendimiento que el FastCGI.

Desactivar php safe mode

Por defecto la mayoría de servidores compartidos suelen traer la opción php safe_mode activada (On), lo que significa que el modo seguro de php está activado. Esto hará que se desactiven muchas de las funciones de php que afectan a la seguridad del alojamiento web.

En ocasiones, aplicaciones web como WordPress tienen conflictos con el safe_mode activado. Este tipo de conflictos suelen ser de permisos para escribir en un directorio creado por Apache. Es decir, cuando creas un directorio a través de WordPress, realmente no es lo mismo que crearlo desde el FTP manualmente, lo está creando otro usuario: Apache, y los permisos en el alojamiento web los tiene el usuario FTP. Posteriormente si intentas subir un fichero a un directorio creado por Apache, aunque este directorio tenga permisos 777 no podrás por ser un usuario distinto al usuario FTP.

Este tipo de conflictos se puede resolver desactivando la opción safe_mode, es decir poniendo la opción safe_mode = Off.

En aquihaydominios.com usamos Plesk como panel de control, así que a continuación te explicaremos como desactivar php safe mode en Plesk.

Primero accede al Panel Plesk con el usuario y clave que te hayamos dado al contratar el servicio.

acceder plesk

Una vez hayas accedido, ve a la sección Sitios web y dominios.

sitios web y dominios

A continuación, en la parte inferior, aparecerá un enlace con tu dominio, como el que se muestra en la siguiente imagen:

configuracion de tu dominio

Haz clic en tudominio.com y accederás a la configuración del alojamiento web y verás algo como lo que te mostramos a continuación:

configuracion php plesk

Haz clic en Configuración PHP, y busca Configuración común, safe_mode, para ponerlo a off como se muestra a continuación:

safe mode off

Una vez hayas hecho el cambio, no olvides ir abajo del todo para pulsar Aceptar y que se apliquen los cambios.

Es importante que una vez hecho esto, compruebes que tu web sigue funcionando correctamente en todos los aspectos. Si no fuera así, puedes volver a marcar la opción y guardar los cambios nuevamente.

Por otro lado, si no te aparece esta opción, no dudes en solicitarlo abriendo un tickets desde tu zona privada de cliente.

¿Te ha sido de ayuda este post? ¿Lo has hecho alguna vez? ¿Te has encontrado con alguna dificultad? ¿Lo recomiendas? ¿No lo recomiendas? ¡Esperamos tus comentarios!

Pruebas de rendimiento con Apache JMeter

Un aspecto importante al desarrollar una aplicación web es tener previsto el posible impacto que el uso de esta pueda ocasionar en el servidor web. Si la aplicación es simple o de tamaño medio, quizás no sea obligatorio realizar pruebas de rendimiento, aunque siempre es recomendable. Para ello podemos usar Apache JMeter, así como una serie de utilidades que nos darán consejos sobre aspectos que debemos modificar para una mejor optimización de la aplicación.

Empezaremos hablando sobre las pruebas de rendimiento, que según la Wikipedia son:

“pruebas que se realizan, desde una perspectiva, para determinar lo rápido que realiza una tarea un sistema en condiciones particulares de trabajo.”

La herramienta que vamos a utilizar (Apache JMeter) permite realizar pruebas de carga de un servidor web o alojamiento web, está desarrollada 100% en Java y es Open Source. El objetivo es grabar un escenario de pruebas para posteriormente configurarlo con los parámetros de una posible situación real (por ejemplo, indicar el número de usuarios concurrentes).

PASO 1: Tras abrir la aplicación, necesitamos configurarla para indicar qué tipo de pruebas queremos realizar, en nuestro caso, realizaremos una prueba a la página principal de la aplicación. Para ello, agregamos un servidor proxy al banco de trabajo.

apache jmeter servidor proxy

PASO 2: Tras agregar el servidor proxy necesitamos configurar el navegador con los valores indicados en él. Para configurar el navegador Mozilla Firefox ir al menú herramientas y pulsar en Opciones. El navegador mostrará una ventana en la que tendremos que seleccionar la pestaña Avanzado. Una vez allí, pulsar el botón Configuración que se encuentra dentro de la pestaña Red. En esta nueva ventana le indicaremos al navegador que utilice el servidor proxy creado en Apache JMeter.

crear servidor proxy apache jmeter

Nota: Esta configuración es la que hay que poner si se mantienen los valores por defecto del servidor proxy creado. En caso de modificar algún parámetro, como por ejemplo el puerto, se deberá cambiar por el seleccionado.

PASO 3: A continuación hay que crear un grupo de hilos en el cual se almacenarán todas las peticiones detectadas por el servidor proxy.

crear grupo de hilos jmeter

PASO 4: Una vez creado el grupo de hilos hay que configurar el servidor proxy para que almacene las peticiones en él.

PASO 5: Tras iniciar el servidor proxy se guardarán en el grupo de hilos creado todas las peticiones que realice el navegador, por lo que accedemos a la aplicación (en nuestro caso sólo vamos a acceder a la página de inicio, pero puedes navegar por tu aplicación para simular el comportamiento de un usuario). Una vez cargada la aplicación, el elemento Grupo de Hilos tendrá una lista de peticiones, que se corresponden con las peticiones que realiza la página de inicio de la aplicación.

En otros post trataremos sobre la inclusión de Listeners, que permiten analizar la información registrada durante la prueba de rendimiento, y de Asertions, que permiten detectar anomalías y/o problemas en la aplicación.

PASO 6: Ya tenemos todo preparado para iniciar la prueba, por lo que paramos el servidor proxy desde la misma ventana desde que lo iniciamos, y configuramos la prueba en cuestión. La prueba va a consistir en realizar 200 peticiones por cada una de las peticiones registradas por el servidor proxy. Una vez terminadas las 200 peticiones se van a realizar 3 iteraciones más (4 en total).

configurar numero de hilos servidor proxy apache jmeter

PASO 7: Tras configurar el plan de pruebas solo queda lanzar la ejecución de dicho plan. Para ello pulsar CTRL-R. (sería recomendable guardar el escenario grabado antes de iniciar el test).

Post aportado por: Luis Miguel Ceballos Torres y Daniel Prieto Tagua

Forzar https usando htaccess

A veces necesitamos forzar que una URL siempre sea https por motivos de seguridad, por ejemplo una URL de login o una URL para introducir tarjetas de crédito.

Esto se puede conseguir desde el .htaccess con el siguiente código:

#Forzar https
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} identificacion [OR]
RewriteCond %{REQUEST_URI} forma-pago
RewriteRule ^(.*)$ https://www.aquihaydominios.com/$1 [R=301,L]

En nuestro caso, hemos añadido dos: la de identificación y la de forma-pago. En los dos casos, será redirigirá automáticamente a https. Además añadimos R=301 para indicar a Google que es una redirección permanente.

Si por el contrario, queremos que una página nunca sea https, tendríamos que indicar lo siguiente en el .htaccess.

RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} fin-pedido
RewriteRule ^(.*)$ http://www.aquihaydominios.com/fin-pedido [R=301,L]

Hay que tener en cuenta, que en ambos casos se usa la cláusula SERVER_PORT para indicar el puerto por defecto del http, y https, en nuestro caso el http va por el 80, y el https por el 443

¿Se te ocurre otra forma de hacerlo? ¿Cómo harías para forzar que todas fueran http menos unas cuantas? (ya que, de este modo, al estar en una https e ir a otra URL haciendo clic en un enlace, se mantiene el https, a no ser que sea fin-pedido, que se especificó que solo fuera http).

¡Ánimo, piensa y cuéntanos!

Forzar www usando htaccess

Una de las formas de conseguir URL Canónicas es forzar el uso de las www en nuestros dominios.

Para ello basta con añadir el siguiente código en nuestro archivo .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.aquihaydominios\.com [NC]
RewriteRule ^(.*)$ http://www.aquihaydominios.com/$1 [R=301,L]

Además es recomendable seleccionar un dominio preferido en Google Webmaster Tools

¿Aplicas estas prácticas en tu Web? ¿Conoces alguna forma mejor de hacerlo?