Motivación: Si hay scripts que automáticamente instalan rails con todo en linux es lógico preguntarse porque pasar por el suplicio de hacer una instalación custom, pero la razón es sencilla, en la mayoría de los casos el script que hace la instalación no utiliza el mismo stack que nosotros queremos, o instala aplicaciones demás que consumen mucha memoria ram.

En este tutorial montaremos un servidor rails con NginX, Puma y PostgreSQL en ubuntu 18.04

Esta guía no es complamente compatible con otros servidores u otras versiones de ubuntu

Paso 1: Actualización del server

Crear un server vacío con ubuntu 18.04

ssh al server con la ip dada

Las acciones de esta parte suponen que el acceso a la máquina es de root, en caso contrario agrega sudo a las instrucciones hasta la sección hasta llegar a la instrucción donde nos conectamos como un usuario (al final del paso 2).

Dentro del servidor actualizamos los paquetes

Luego reiniciamos la máquina.

y finalmente nos conectaremos de nuevo.

Paso 2: Crear al usuario deploy dentro del server

Cuando instalas programas como root estos le pertenecen a root, lo que nos va a causar problemas de permisos, además es simplemente peligroso, uno nunca debería trabajar como root, en lugar de eso vamos a crear el usuario deploy.

Aclaración (El nombre deploy es un buen nombre para el usuario de deployment, pero no es necesario que sea este)

(anotar el pass para no olvidarlo)

Luego añadimos el usuario al grupo de sudoers

Salimos del server

Y ahora nunca más entramos como usuario root.

Probando el acceso

Si lo hicimos bien deberíamos poder entrar al usuario deploy desde nuestra máquina local

También deberíamos poder correr comandos sudo.

este último paso debería mostrar todos los archivo dentro de la carpeta.

Paso 3: Acceso directo y sin clave por ssh a [email protected]

Copiamos nuestra clave pública al llavero del usuario deploy. (Esto se hace desde nuestro computador, no del server)

Nos pedirá el password por última vez, luego podemos entrar sin clave a:

3.1: En caso de no tener ssh-copy-id instalarlo en la máquina local

En mac:

En linux:

Paso 4: Instalar RVM

Dentro del servidor necesitamos Instalar los siguientes programas:

Descargamos la llave pública de RVM para verificar los contenidos descargados

Descargamos el script instalador de rvm y lo ejecutamos

Cargamos rvm en nuestra sesión actual:

Para cargar siempre rvm (cuando realicemos nuevas conexiones ssh) vamos a agregar la línea anterior al archivo .bashrc, la forma más rápida es ejecutar lo siguiente en el terminal.

Ei ahora corremos RVM deberíamos obtener un mensaje de ayuda y como usarlo.

Paso 5: Instalar Ruby

Instalamos la versión ruby 2.5.3 (la más actual al momento de la creación de este tutorial)

Le pedimos a rvm que use por defecto la versión 2.5.3 (rvm puede manejar múltiples versiones)

Utilizamos rvmsudo para reparar los permisos de diversos programas y evitar futuros problemas de permisos.

Finalmente otro paso muy útil pero es sólo opcional es especificarle a nuestro servidor que no instale la documentación de las gemas. Esto nos ayudará a realizar nuestros deployment más rápido.

Paso 6: Instalar Nginx

Hacemos correr Nginx

Sin más configuración deberíamos poder entrar a la ip del servidor con nuestro navegador y ver:

nginx página de inicio

nginx página de inicio

No hemos terminado la configuración de Nginx pero con rails podemos generarla automáticamente, así que la estudiaremos cuando terminemos la instalación de los programas necesarios. El link al tutorial siguiente aparece al final de este.

Paso 7: Instalar Postgres y crear usuario

Instalar postgres

Opcional Para guardar el historial

sudo touch /var/lib/postgresql/.psql_history

Entra a postgres, Utiliza el usuario de postgres del sistema (no podemos entrar a postgres siendo otros usuarios)

y luego entramos a postgres con la linea.

Paso 9: Crear un usuario dentro de Postgre

9.1 Crear usuario

Crea un usuario, yo utilizo el nombre de la aplicación con alguna variante, pero también podría ser uno genérico como deploy).

Recordar el ; al final de la línea de comando, ya no estamos en entorno bash, estamos entorno PSQL, Utiliza un password seguro

Si resultó bien, postgre responderá con CREATE ROLE

Opcional: Si queremos cambiar el password del usuario lo podemos hacer con:

podemos ver todos los usuarios creados en postgre con, aquí deberíamos ver al usuario que acabamos de crear.

9.2 Crear la base de datos

Sugerencia: El nombre de la app + _production es un buen nombre para el de la base de datos.

Si lo haces correctamente postgre responderá con

CREATE DATABASE

9.3 darle permisos al usuario

Entregamos los privilegios del usuario a la base de datos.

para salir del entorno de psql utilizamos:

Finalmente cerramos la sesión con:

ya tenemos todas las herramientas necesarias y podemos utilizarlas para hacer un deploy automatizado con capistrano.

Share Button