Activar módulo mod_rewrite de Apache en Windows Wampserver

Estándar

En esta ocasión se me presento el problema de que tuve que instalar la versión 2.2 de Wampserver y no podía correr una aplicación desarrollada en Laravel 4.2.

No podia logearme en el sistema ya que cualquier en cualquier caso me aparecia el mensaje de error que la ruta no se encontró en el servidor. Por lo que al final el problema estaba en la configuracion de apache.

Si les llega a pasar una situacion similar la pueden solucionar de la siguiente manera:

En Windows debemos modificar el archivo httpd.conf que dependiendo del servidor que hayamos instalado su ubicación será diferente. Tambien se puede acceder desde el icono de la barra de tareas.

apache

En este archivo buscamos la linea “LoadModule rewrite_module modules/mod_rewrite.so” (sin comillas) y si tiene el caracter # es porque está comentado, borramos ese caracter.

apache-1

 

Después buscamos esta sección:

<Directory />
 AllowOverride none
 Require all denied
</Directory>

Y debemos poner AllowOverride All . Como se describe anteriormente.

Listo!!!

 

Convertir minutos a horas y dias en php

Estándar

Trabajando en un proyecto con laravel me ha surgido la  necesidad de convertir los minutos transcurridos en resolver un ticket a horas y días.

Les comparto la función implementada con sus respectivos comentarios.

como primer parámetro recibe los minutos, y como segundo parámetro la variable type, que es la que me indica si se va a mostrar completo el texto, por ejemplo:

6 dias 3 horas 5 min

si la variable type=round solo se mostraría

6 dias

calcular horas y dias

calcular horas y dias

Resultado:

convertir minutos

convertir minutos

Código :

public function toHours($min,$type)
 { //obtener segundos
 $sec = $min * 60;
 //dias es la division de n segs entre 86400 segundos que representa un dia
 $dias=floor($sec/86400);
 //mod_hora es el sobrante, en horas, de la division de días; 
 $mod_hora=$sec%86400;
 //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
 $horas=floor($mod_hora/3600); 
 //mod_minuto es el sobrante, en minutos, de la division de horas; 
 $mod_minuto=$mod_hora%3600;
 //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
 $minutos=floor($mod_minuto/60);
 if($horas<=0)
 {
 $text = $minutos.' min';
 }
 elseif($dias<=0)
 {
 if($type=='round')
 //nos apoyamos de la variable type para especificar si se muestra solo las horas
 {
 $text = $horas.' hrs';
 }
 else
 {
 $text = $horas." hrs ".$minutos;
 }
 }
 else
 {
 //nos apoyamos de la variable type para especificar si se muestra solo los dias
 if($type=='round')
 {
 $text = $dias.' dias';
 }
 else
 {
 $text = $dias." dias ".$horas." hrs ".$minutos." min";
 }
 }
 return $text; 
 }

También te puede interesar: Recortar texto en php

Como configurar servidor en Digital Ocean

Estándar

digitalocean

Un colega me preguntaba como levantar un servidor VPS en digital ocean, por lo tanto les dejo esta guia.

Ingresamos a la pagina de Digital Ocean y nos registramos.En el siguiente paso nos pedirán nuestros datos (nombre, apellidos, dirección y un número de tarjeta de crédito/débito) los añadimos y ya tenemos nuestra cuenta. No se preocupen por añadir su tarjeta de credito ya que en un principio se consumiran sus primeros $10 dolares que se le otorgan al registrarse con el link de arriba,  nos llegará un correo de confirmación a nuestro email, pinchamos en el link para confirmar y listo.

Screen Shot 2014-07-27 at 23.34.55

Ahora elegimos que máquina queremos, en mi caso elijo la más barata que para empezar nos sobra. 512 Mb de RAM, 1 CPU, 20GB de Disco SSD y 1TB de transferencia mensual (si lo superas, el GB adicional cuesta 0,02$)

Screen Shot 2014-07-27 at 23.03.35

Elegir la región mas cercana a su país, o de donde se generara el mayor numero de trafico a su web.

Screen Shot 2014-07-27 at 23.04.52

Ya podemos acceder a nuestro panel de control y en el tendremos que configurar que software queremos instalar. En mi caso elegí una distribución Ubuntu 14.04 x64.

Screen Shot 2014-07-27 at 23.04.44

Podemos instalar aplicaciones adicionales, como Ruby, Django, PHP, etc… En mi caso elijo instalar Node para ahorrarme instalarlo via terminal, pero si queremos podemos hacerlo más adelante por SSH.

Screen Shot 2014-07-27 at 23.05.59

Ya tenemos todo, lo único que nos queda es poder acceder via SSH por terminal para poder configurar nuestro servidor, realizar despliegues, etc… Para ello primero necesitamos importar nuestra clave RSA pública o crear una nueva. En Mac OS se realiza así:

ssh-keygen -t rsa -C "your_email@example.com"  
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
# Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase): [Type a passphrase]  
# Enter same passphrase again: [Type passphrase again]
Your identification has been saved in /Users/you/.ssh/id_rsa.  
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

Ejecutamos cat ~./.ssh/id_rsa.pub para ver el contenido de nuestra clave pública, copiarla en el portapapeles e ir a la sección SSH Keys del panel de control y pegarla ahí. Con esto DigitalOcean nos permite acceder via SSH desde nuestra máquina local.

Screen Shot 2014-07-28 at 00.03.02

¿Cómo accedemos vía SSH? En nuestro panel de control vemos nuestra lista de Droplets y en ella podemos ver la IP de nuestro servidor, en este caso, por ejemplo, aquí sería la 178.140.2.2

Screen Shot 2014-07-28 at 00.08.04

Con esos datos podemos acceder asi en nuestra máquina local

$ ssh root@178.140.2.2
root@178.140.2.2's password:  
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

La password que nos pide, nos la han enviado al email con el que nos hemos registrado, y la primera vez que nos logueemos via SSH nos permite cambiarla por una propia.

Ahora ya se tiene un servidor listo para desplegar aplicaciones. Si desean desplegar (deploy) a una aplicacion desarrollada con el framework laravel, recomiendo revisar el siguiente post:

Como instalar NGINX, PHP y LARAVEL en Digital Ocean

Fuentehttps://www.digitalocean.com/community/tutorials/how-to-create-your-first-digitalocean-droplet-virtual-server

Recortar texto a un largo determinado en PHP

Estándar

Trabajando en un proyecto con laravel me vi a la necesidad de reducir la informacion de una celda de la tabla y para esto tenia que acortar el texto y colocar puntos suspensivos al final para indicar que se muestra el contenido recortado.

Para esto escribí una nueva función, acostumbro escribir las funciones en ingles por estándar y es una muy buena practica.

funcion-corta-texto-php

La funcion substr nos devuelve una parte del string definida por los parametros start y length.

string substr ( string $string , int $start [, int $length ] )

Obteniendo el siguiente resultado.

recortar texto php

Crear SSH keys en Windows y usarlas con DigitalOcean y Laravel Forge

Estándar

Antes que nada este es un diario donde me recuerdo cosas que se me dificultan memorizar y por otro lado se que puede ayudar a muchos que están aprendiendo.

  1. Primero que nada creamos una cuenta en DigitalOcean y pusimos la API Key en Laravel Forge.
  2. Una vez conectado, creamos una instancia la cual automáticamente Laravel configura para que tenga buenos cimientos para una aplicación Laravel.
  3. Una vez teniendo el servidor creado, notaremos que si intentamos ingresar, este nos va a rebotar una y otra vez, esto es debido a que esta esperando una SSH Key para poder accesar.
  4. Para crear la SSH Key en Windows, es necesario bajar el PuttyGen y crear una nueva key en el formato SSH-2 RSA key, una vez completado pueden poner una contrasena o guardar el Private Key como ppk y el Public key como pub.
  5. Teniendo este archivo, necesitan ingresar a Putty y configurar la sesion. Vayan a Putty Configuration y a la opcion dentro de SSH que dice +Auth. Una vez ahi denle en browse y escojan la private key (ppk).
  6. Configuren el servidor como cualquier otro. Si intentan conectarse veran que los vuelve a rebotar, eso es porque aun no hemos agregado a Laravel Forge SSH Key la key generada que comienza: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAiCnCkFakZQEcL/AhhcKs650x3THEBtjO9mrAnjbCZxI9/V…………………….
  7. Vayan a la pagina principal del servidor que hicieron deployment y seleccionen la pestana de SSH keys, escojan cualquier nombre y peguen la SSH key en texto en el Text Block y guarden.

Ahora si intentan conectarse todo funcionara a la perfección.

Como instalar Nginx, PHP y Laravel en Digital Ocean

Estándar

digitalocean

¿Que es Digital Ocean?

Digital Ocean es un Cloud Hosting muy económico desde 5 dolares mensuales. Puedes obtener 10 dolares en crédito al registrarte en este enlace: https://www.digitalocean.com/?refcode=79a02a2a0233 

Para este tutorial necesitamos un VPS nuevo con la conexión SSH configurada, en Digital Ocean los VPS se llaman “Droplets”.

Droplet

VPS

Configuración inicial de seguridad

Lo primero que vamos a hacer es conectarnos a nuestro Droplet mediante SSH.

Dentro del panel de Digital Ocean pueden acceder desde el menú a Droplets y allí verán la lista de sus Droplets con sus IPs correspondientes, dicha IP es la que usarán para conectarse a SSH, por ejemplo:

Obtener IP del Digital Ocean Droplet

De igual forma recibirán esta información junto con su contraseña root vía email.

Una vez obtenida esta información abran una consola y tipeen el comando ssh y su IP, ejemplo:

Una vez hecho esto, como asignamos nuestra llave SSH, Digital Ocean conectará automáticamente, en caso contrario nos solicitará la clave (que fue enviada vía email).

Ahora vamos a establecer un nuevo password. Por favor, creen un password fuerte que incluya caracteres especiales, para ello ejecuten el comando:

Luego agregaremos un usuario nuevo, este será el usaremos de ahora en adelante. Nos preguntará por la contraseña y otros datos. Estos datos los podemos obviar presionando ENTER cada vez que nos pregunte.

usuario-digital-ocean

Ahora necesitamos agregar los privilegios de super usuario “sudo”. Para esto ejecutamos el siguiente comando.

Hacemos scroll hasta llegar a algo similar como esto, y agregamos el usuario que creamos.

Luego presionamos “Ctrl + X” para salir, “Y” para guardar los cambios, y ENTER para confirmar donde guardar el archivo.

Ahora vamos a agregar un poco más de seguridad cambiando el puerto de la conexión SSH, restringiendo que el usuario root no pueda conectarse por SSH, y permitiendo que solo nuestro usuario creado pueda conectarse.

  • Cambiamos el Port (Puerto) por un número entre 1025 y 65536.
  • Negamos el login del root editandoPermitRootLogin.
  • Especificamos que usuarios pueden conectarse agregando al final la linea AllowUsers.

Lo anterior podría quedar mas o menos asi.

Hay que tener en cuenta que ahora en adelante solo nos podremos conectar en este caso con el usuario demo y debemos especificar que el puerto sea el 4444.

Luego presionamos Ctrl + X para salir, y para guardar los cambios y ENTER para confirmar donde guardar el archivo.

Ahora reiniciamos la configuración del SSH.

Para este punto debemos corroborar nuestra configuración sin desconectarnos con el usuario root, de esta manera si algo salió mal podemos arreglarlo antes de no poder volver a entrar con el root. Abrimos otra consola y escribimos.

Si nos pregunta por el password del usuario demo esto significa que todo ha funcionado con éxito.

Lectura adicional recomendada:https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-12-04

Instalar Laravel sobre Nginx

Primero necesitamos actualizar nuestra lista de dependencias, e instalar los componentes necesarios, para ello.

Escribimos Y cada vez que lo pida para aceptar las instalaciones.

Durante la instalación de mysql-server nos pedirá un password.

Comprobación inicial del Nginx

Cuando finalice todo el stack de instalación entraremos al http://ip_del_droplet y comprobaremos el mensaje de bienvenida de Nginx.

Configuración inicial de MySQL

Ahora necesitamos generar la estructura básica de mysql donde guardaremos las bases de datos y su informacion, para ello.

Ahora vamos a ejecutar un comando que nos ayudará a remover algunas configuraciones por defecto inseguras. Al principio nos pedirá el root password de MySQL, y luego si queremos modificar este password. Como ya tenemos el root password establecido escribiremos N, y luego solo presionaremos ENTER para remover las configuraciones inseguras.

Configuración inicial de PHP

Ahora necesitamos editar la configuración de PHP para eso.

Allí vamos a buscar la la línea comentada que contiene.

La descomentamos (Removiendo el punto y coma del principio) y ponemos su valor en 0.

Esto le indica a PHP que no trate de ejecutar un script llamado similar si el nombre del archivo solicitado no puede ser encontrado. Esto es muy importante porque podría permitir a un atacante crear una solicitud especialmente diseñada para tratar de engañar a PHP para que ejecute código que no debería.

Luego presionamos Ctrl + X para salir, Y para guardar los cambios y ENTER para confirmar donde guardar el archivo.

Activamos la extensión MCrypt de la cual depende Laravel.

Y por ultimo reiniciamos el servicio de PHP.

Configuración del Nginx para el uso de PHP

Crearemos el directorio donde estara alojado nuestro proyecto en Laravel.

Ahora que tenemos el directorio creado vamos a transferir la propiedad del directorio a nuestro usuario regular para ellos usaremos la variable de entorno $USER que nos refiere al usuario actual. Esto nos permitirá crear archivos en este directorio sin permitir que nuestros visitantes puedan crear contenido.

Luego configuramos los permisos correctamente con el comando.

Finalmente creamos la carpeta donde va a estar alojado nuestro proyecto. Los permisos para esta carpeta los configuraremos más adelante.

Luego editaremos el archivo de configuración de Nginx para que pueda interpretar las páginas en PHP, y pueda leer el directorio de nuestro proyecto por defecto.

Agregamos las siguientes configuraciones a continuación:

Nota: comenta con # o elimina la configuración por defecto

También debes reemplazar TU_IP_AQUI con la dirección IP del droplet, y cambiar la dirección root en caso de que sea diferente a /var/www/laravel/public (no olvides colocar la carpeta /public al final):

Y reiniciamos el Nginx para que tome los cambios.

Instalación de Composer y Laravel

Instalamos Composer, ya que es unarequerido por Laravel.

Esto nos crea un archivo llamado compose.phar en el Home. Ahora necesitamos que este archivo se pueda ejecutar globalmente, para ello lo movemos con:

Ahora con Composer instalado ya podemos instalar Laravel:

Ahora agregaremos los permisos necesarios para las carpeta de nuestro proyecto.

Finalmente podemos comprobar que Laravel se ha instalado con éxito accediendo a nuestro IP del servidor.

Laravel

Si ves la imagen de arriba significa que se ha iniciado laravel correctamente y adelante a crear para la web.

Fuente: http://duilio.me/como-instalar-nginx-php-y-laravel-en-digital-ocean/