-
Notifications
You must be signed in to change notification settings - Fork 30
/
02s-deploying.md.erb
171 lines (107 loc) · 8.88 KB
/
02s-deploying.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
---
title: Despliegue
slug: deploying
date: 0002/01/02
number: 2.5
points: 1
sidebar: true
photoUrl: http://www.flickr.com/photos/monomaniacgarage/10703829133/
photoAuthor: Monomaniacgarage
contents: "Aprenderemos cómo desplegar aplicaciones en Meteor.com.|Cómo desplegar aplicaciones en Modulus.|Cómo desplegar aplicaciones en nuestro propio servidor usando Meteor Up."
paragraphs: 46
---
A algunos les gusta trabajar silenciosamente en un proyecto hasta que queda perfecto. Otros quieren mostrarlo al mundo lo más pronto posible.
Si eres de los primeros y prefieres desarrollar a nivel local, no dudes en saltarte este capítulo. Pero si prefieres aprender a desplegar tu aplicación Meteor en la Web, ahora te explicamos cómo hacerlo.
Vamos a aprender a desplegar una aplicación Meteor de diferentes formas. Eres libre de utilizar cualquiera de ellas en cualquier etapa del desarrollo, ya sea trabajando en Microscope o en otra aplicación. ¡Vamos a empezar!
<% note do %>
### Introduciendo las barras laterales.
Este capítulo es una **barra lateral** (_sidebar_). En estos capítulos se adopta una mirada más profunda a temas más generales sobre Meteor, de forma independiente al resto del libro.
Así que si prefieres seguir construyendo Microscope, puedes saltarse estos capítulos y volver a ellos más tarde.
<% end %>
### Despliegue de aplicaciones en Meteor.com
Desplegar en un subdominio de Meteor (por ejemplo `http://myapp.meteor.com`) es la opción más sencilla, y será lo primero que probaremos. Es muy útil para mostrar la aplicación durante las primeras etapas del desarrollo o para configurar rápidamente un servidor de prueba.
Desplegar en Meteor es muy simple. Solo tienes que abrir el terminal, ir al directorio de la aplicación y escribir:
~~~bash
meteor deploy myapp.meteor.com
~~~
Por supuesto que tienes que tener cuidado de reemplazar "myapp" con un nombre de tu elección, y preferiblemente uno que no esté en uso.
Si es la primera vez que despliegas una aplicación, te pedirá crear una cuenta en Meteor. Y si todo va bien, después de unos segundos podrás acceder a la aplicación desde `http://myapp.meteor.com`.
Puedes mirar [la documentación oficial](http://docs.meteor.com/#deploying) para obtener más información sobre cosas como el acceso a la base de datos de la instancia, o cómo configurar un dominio personalizado.
### Despliegue de aplicaciones en Modulus
[Modulus](https://modulus.io/) es una gran opción para desplegar aplicaciones basadas en Node.js. Es uno de los pocos proveedores de PaaS (plataforma-como-servicio) que apoyan oficialmente a Meteor, y ya hay un buen número de gente corriendo aplicaciones en producción allí.
Puedes aprender más sobre Modulus, leyendo su guía de despliegue de aplicaciones Meteor: [deployment guide for Meteor apps](http://help.modulus.io/customer/portal/articles/1647770-using-meteor-with-modulus).
### Meteor Up
Aunque todos los días aparecen nuevas soluciones en la nube, a menudo vienen con su propia cuota de problemas y limitaciones. Así que, actualmente, el despliegue en tu propio servidor sigue siendo la mejor manera de poner una aplicación Meteor en producción. El problema es que, hacerlo uno mismo no es tan sencillo, especialmente si lo que estás buscando es un despliegue de calidad.
[Meteor Up](https://github.com/arunoda/meteor-up) (o `mup`, para abreviar) es un intento de solucionar este problema con una utilidad de línea de comandos que se encarga por nosotros de la instalación y el despliegue. Así que veamos cómo desplegar Microscope utilizando Meteor Up.
Antes de nada, vamos a necesitar un servidor. Recomendamos o bien [Digital Ocean](http://digitalocean.com), desde $5 al mes, o bien [AWS](http://aws.amazon.com/), que proporciona Micro instancias gratuitas (con las que rápidamente tendremos problemas de escala, aunque deberían ser suficientes si solo buscamos empezar a jugar con Meteor).
Sea cual sea el servicio que elijas, debes obtener tres cosas: la dirección IP del servidor, un inicio de sesión (normalmente `root` o `ubuntu`), y una contraseña. Guarda estas cosas en un lugar seguro, ¡pronto las necesitaremos!.
### Inicializando Meteor Up
Para empezar, necesitamos instalar Meteor Up vía `npm`:
~~~bash
npm install -g mup
~~~
A continuación, crearemos un directorio especial donde pondremos la configuración de Meteor Up para un despliegue en particular. Vamos a utilizar un directorio independiente por dos razones: primero, porque, por lo general, es la mejor manera de evitar incluir credenciales privadas en tu repositorio Git, especialmente si estás trabajando en un repositorio público.
En segundo lugar, mediante el uso de directorios separados, podremos manejar múltiples configuraciones en paralelo. Esto será muy útil para, por ejemplo, desplegar instancias de desarrollo y producción.
Así que vamos a crear este nuevo directorio y lo utilizaremos para iniciar un nuevo proyecto Meteor Up:
~~~bash
mkdir ~/microscope-deploy
cd ~/microscope-deploy
mup init
~~~
<% note do %>
### Compartir con Dropbox
Una manera de asegurarse de que todo el equipo de desarrollo utilice la misma configuración de despliegue es crear la carpeta de configuración de Meteor Up dentro de Dropbox, o cualquier servicio similar.
<% end %>
### Configuración de Meteor Up
Cuando inicializamos un nuevo proyecto, Meteor Up crea dos archivos: `mup.json` y `settings.json`.
`mup.json` contendrá los ajustes relacionados con el despliegue, mientras que `settings.json` contendrá todos los ajustes relacionados con la aplicación (tokens OAuth, tokens para análisis, etc.)
El siguiente paso es configurar el archivo `mup.json`. Aquí está el archivo `mup.json` que `mup init` genera por defecto. Todo lo que hay que hacer es rellenar los espacios en blanco:
~~~js
{
//server authentication info
"servers": [{
"host": "hostname",
"username": "root",
"password": "password"
//or pem file (ssh based authentication)
//"pem": "~/.ssh/id_rsa"
}],
//install MongoDB in the server
"setupMongo": true,
//location of app (local directory)
"app": "/path/to/the/app",
//configure environmental
"env": {
"ROOT_URL": "http://supersite.com"
}
}
~~~
<%= caption "mup.json" %>
Vamos a repasar cada uno de estos valores.
**Autenticación del servidor**
Te habrás dado cuenta de que con Meteor Up puedes usar SSH con usuario y contraseña o una clave privada (PEM), por lo que lo podemos usar con casi cualquier proveedor de la nube.
**Nota importante**: si eliges utilizar la autenticación basada en contraseña, asegúrate de instalar primero `sshpass`. ([Echa un vistazo a esta guia](https://gist.github.com/arunoda/7790979)).
**Configuración de MongoDB**
El siguiente paso es configurar una base de datos MongoDB. Recomendamos usar [Compose](https://www.compose.io) o cualquier otro proveedor en la nube porque ofrecen un apoyo profesional y mejores herramientas de gestión.
Si has decidido usar Compose, configura `setupMongo` como `false` y añade la variable de entorno `MONGO_URL` en un bloque `env` en `mup.json`. Si por el contrario decides usar MongoDB en el propio servidor, configura `setupMongo` como `true` y Meteor Up se hará cargo de todo.
**El path de la aplicación Meteor**
Debido a que la configuración de Meteor Up reside en un directorio diferente. Mediante la propiedad `app` le decimos cómo llegar hasta nuestra aplicación. Sólo hay que introducir la ruta local completa, que se puede obtener con el comando `pwd` de la terminal, cuando estamos dentro del directorio de la aplicación.
**Environment Variables**
Dentro del bloque `env` podemos especificar todas las variables de entorno de nuestra la aplicación (por ejemplo, `ROOT_URL`, `MAIL_URL`, `MONGO_URL`, etc.).
### Configuración y despliegue
Antes de que podamos desplegar, tendremos que configurar el servidor para que esté listo para alojar aplicaciones Meteor. La magia de Meteor Up encapsula este complejo proceso ¡en un solo comando!
~~~bash
mup setup
~~~
Esto llevará un tiempo dependiendo del rendimiento del servidor y la conectividad de la red. Después de que la instalación termine correctamente, por fin podemos desplegar nuestra aplicación con:
~~~bash
mup deploy
~~~
Esto empaqueta la aplicación, y la despliega en el servidor que acabamos de configurar.
### Mostrando logs
Los registros son muy importantes y Meteor Up proporciona una forma fácil de manejarlos, emulando el comando `tail -f `. Solo tienes que escribir:
~~~bash
mup logs -f
~~~
Aquí termina nuestro resumen de lo que puede hacer Meteor Up. Para más información, le sugerimos visitar [el repositorio GitHub de Meteor Up](https://github.com/arunoda/meteor-up).
Estas tres formas de desplegar aplicaciones Meteor deberían ser suficiente para la mayoría de los casos de uso. Por supuesto, sabemos que algunos de vosotros preferiríais tener el control y configurar un servidor Meteor desde cero. Eso, lo dejaremos para otro día… o tal vez para otro libro!