Al momento de desarrollar aplicaciones web uno de los temas que toma mucha importancia es el referente al servicio de hosting en el cual se quiere desplegar el proyecto, en ocasiones pueden llegar a ser muy costosos incluso en una fase muy temprana del desarrollo, por lo cual siempre es bueno buscar ciertas alternativas que nos permitan contar con todas las funcionalidades de un servidor de producción pero en un ambiente más pequeño y a un menor costo.
Muchas veces la complejidad del proyecto o la cantidad de personas involucradas hace necesario la adquisición de un servidor web desde el inicio, puede ser el caso del desarrollo de una API, que deba recibir peticiones de diferentes plataformas como aplicaciones front-end web o de dispositivos móviles.
En otra publicación se hablaba sobre Cómo instalar Laravel en Codio , un servicio gratuito para hospedar aplicaciones o proyectos web de forma gratuita.
Hoy hablaremos sobre cómo hospedar nuestros proyectos de Laravel en OpenShift un servicio de RedHat.
RedHat.inc es la compañía creadores de las distribuciones de Linux RedHat Enterprise Linux, Fedora y actualmente mantienen el proyecto CentOS.
Ventajas de usar OpenShift
- La principal ventaja en cuanto al costo es que se trata de un servicio gratuito
- En cuanto a seguridad los accesos al servidor se realizan mediante uso de claves ssh
- Acceso desde la consola a la máquina virtual del servidor
- Acceso sql
- Configuración en menos de 15 minutos
Limitaciones
- No tenemos acceso de super usuario
- La máquina virtual de laravel trabaja hasta ahora con php 5.4
- La máquina virtual se apaga luego de 24 horas sin recibir ningún tipo de petición
- Solo 3 aplicaciones de forma gratuita
Crear una cuenta en OpenShift
El proceso es muy sencillo, ingresamos al siguiente enlace y seguimos las instrucciones : https://openshift.redhat.com/
Una vez registrado recibirás un email para proceder con la activación de la cuenta.
Crear una nueva aplicación
Una vez logueados en nuestra cuenta podemos iniciar creando la maquina virtual, en la plataforma lo hacemos mediante el enlace “Add Application”
Veremos ahora una nueva lista de maquinas virtuales listas y configuradas para diferentes servicios, en nuestro caso seleccionamos Laravel 5
Luego de seleccionar la máquina virtual el sistema pide agregar alguna información adicional de configuración, si lo deseas puedes dejar las opciones tal cual como están, lo importante en este punto es configurar el nombre de dominio de tu aplicación.
Por último haz click en el botón Create Application
El dominio de tu aplicación quedaría así: app_name.domain_name.rhcloud.com
En este punto debes ser paciente, debes esperar un par de minutos mientras que la plataforma realiza todos los procesos necesarios, esto se hace transparente al usuario, por lo cual puede parecer que la página se ha quedado colgada pero no te preocupes.
Al final te mostrará una página con toda la información de la nueva aplicación y las credenciales de acceso para que puedas ingresar desde la consola.
Acceder a la consola vía ssh
Para ingresar debemos crear una clave ssh pública en nuestra máquina local, si no sabes como hacerlo puedes ingresar a este enlace https://git-scm.com/book/es/v1/Git-en-un-servidor-Generando-tu-clave-p%C3%BAblica-SSH
Debes agregar esta nueva clave a tu cuenta de OpenShift, de esta forma la plataforma verifica la autenticidad del usuario y permite el acceso. Para agregar la clave ingresas a la configuración de tu cuenta en https://openshift.redhat.com/app/console/settings y haces click en Add a new Key allí pegas el contenido de tu archivo id_rsa.pub y le das el nombre de tu preferencia.
Ahora ingresando al área de Applications haces click sobre el nombre de tu aplicación y puedes ver la información detallada y el comando que puedes usar para la conexión ssh.
Allí también tienes el url publico que apunta al directorio raíz de tu aplicación.
Copiamos el comando que se muestra abajo a la derecha de la pantalla y lo pegamos en la consola de nuestra máquina local y con esto ya tendremos establecida la conexión con nuestro servidor en la nube
Haciendo deploy de nuestra app
En este caso haremos uso de git, al momento de crear la maquina virtual ademas de las credenciales de acceso OpenShift ofrece un repo en GitHub con el cual podemos hacer deploy fácilmente.
Primero iniciamos clonando ese repo en local usando el comando git clone.
una vez que tenemos ese repo copiado en local podemos agregar todos los archivos de nuestro proyecto de Laravel dentro de la carpeta clonada, en mi caso /test.
Luego solo se debe hacer push de los archivos agregados con
$ git add -A $ git commit -m “making deploy” $ git push origin master
Si quieres aprender un poco mas sobre git te recomiendo la serie sobre Aprende Git
Nota: en este ejemplo básico usamos el repo que nos ofrece OpenShift, pero en tu proyecto personal puedes agregar tu propio repo de GitHub, BitBucket o cualquier otro.
Para comprobar que todo está correcto ingresamos nuevamente desde la consola por ssh al directorio app-root/repo y deberías poder ver todos los archivos de la aplicación.
Configuración de la app Laravel
Recuerda que bajo las buenas practicas todas las variables de configuración, conexiones y accesos deben estar configuradas dentro del archivo .env de la aplicación.
Por lo general todos los proyectos tienen un archivo llamado .env.example que puedes copiar desde la consola (esto se hace desde la conexión ssh que hemos establecido con el servidor remoto)
$ cp .env.example .env
y luego editas la información del archivo usando vim, vi o el editor de tu preferencia.
En este caso el DB_HOST lo asignamos mediante otra variable de entorno que nos ofrece la maquina virtual de la siguiente manera
DB_HOST=getenv(‘OPENSHIFT_MYSQL_DB_HOST’) DB_DATABASE=XXXXX DB_USERNAME=XXXXX DB_PASSWORD
Listo, con esta configuración ya puedes hacer php artisan migrate y estas listo para empezar a usar tu aplicación.
Otras publicaciones recomendadas
- Instalación y configuración de entornos
- Primeros pasos con git y GitHub
- Composer: Resolviendo problemas
- Diferencias entre composer install y composer update.
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Instalar Laravel 5 en un servidor compartido Lección siguiente Tipos de servidores y entornos