¿Cómo implementar una aplicación de meteor en mi propio servidor?

¿Cómo implementar una aplicación de meteor en mi propio servidor?

sabor 1: el servidor de desarrollo e implementación es el mismo;

Sabor 2: el servidor de desarrollo es uno (tal vez mi servidor local) y el servidor de implementación es otro (tal vez un VPS en la nube);

Sabor 3: Quiero crear un dominio “meteoro“, al igual que “meteor.com”. ¿Es posible? ¿Cómo?

Actualización :

Estoy ejecutando Ubuntu y no quiero “desmeteorizar” la aplicación. Gracias.

    La documentación de Meteor dice actualmente:

    “[…] necesita proporcionar Node.js 0.8 y un servidor MongoDB. Luego puede ejecutar la aplicación invocando el nodo, especificando el puerto HTTP para la aplicación para escuchar, y el punto final MongoDB”.

    Así que, entre las diversas formas de instalar Node.js , lo puse en funcionamiento siguiendo el mejor consejo que encontré , que básicamente es desempaquetar la última versión disponible directamente en el sitio web oficial Node.JS , ya comstackdo para Linux (64 bits, en mi caso):

    # Does NOT need to be root user: # create directory mkdir -p ~/.nodes && cd ~/.nodes # download latest Node.js distribution curl -O http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz # unpack it tar -xzf node-v0.10.13-linux-x64.tar.gz # discard it rm node-v0.10.13-linux-x64.tar.gz # rename unpacked folder mv node-v0.10.13-linux-x64 0.10.13 # create symlink ln -s 0.10.13 current # add path to PATH export PATH="~/.nodes/current/bin:$PATH" # check node --version npm --version 

    Y para instalar MongoDB , simplemente seguí las instrucciones en el manual MongoDB disponible en la sección Documentación de su sitio web oficial :

     # Needs to be root user (apply "sudo" if not at root shell) apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list apt-get update apt-get install mongodb-10gen 


    ¡El servidor está listo para ejecutar aplicaciones Meteor! Para la implementación, el “problema” principal es donde ocurre la operación ” paquete “. Necesitamos ejecutar el comando meteor bundle desde el interior del árbol de archivos fuente de la aplicación. Por ejemplo:

     cd ~/leaderboard meteor bundle leaderboard.tar.gz 

    Si la implementación ocurrirá en otro servidor ( sabor 2 ), debemos cargar el archivo tar.gz del paquete, utilizando sftp , ftp o cualquier otro método de transferencia de archivos. Una vez que el archivo está allí, seguimos tanto la documentación de Meteor como el archivo README que está mágicamente incluido en la raíz del árbol del paquete:

     # unpack the bundle tar -xvzf leaderboard.tar.gz # discard tar.gz file rm leaderboard.tar.gz # rebuild native packages pushd bundle/programs/server/node_modules rm -r fibers npm install fibers@1.0.1 popd # setup environment variables export MONGO_URL='mongodb://localhost' export ROOT_URL='http://example.com' export PORT=3000 # start the server node main.js 

    Si la implementación estará en el mismo servidor ( sabor 1 ), el archivo tar.gz del paquete ya está allí, y no es necesario que recompilemos los paquetes nativos. (Simplemente salta la sección correspondiente arriba).


    ¡Guay! Con estos pasos, tengo el ejemplo “Leaderboard” implementado en mi servidor personalizado , no “meteor.com” … (¡solo para aprender y valorar sus servicios!)

    Todavía tengo que hacer que funcione en el puerto 80 ( planeo usar NginX para esto ), persistir en las variables de entorno, iniciar Node.JS desconectado de la terminal, etcétera … Estoy al tanto de esta configuración en una “apenas desnuda”. .. solo la base, el primer paso, piedras fundamentales básicas.

    La aplicación se ha implementado “manualmente”, sin aprovechar todas meteor deploy funciones mágicas del comando meteor deploy … He visto personas que publicaron su ” meteor.sh ” y ” meteoric.sh ” y estoy siguiendo el mismo camino … crea una secuencia de comandos para emular la función de “implementación de comando único” … consciente de que en un futuro cercano todo esto formará parte de los pioneros exploradores de meteors solamente, ¡ya que crecerá hasta convertirse en una galaxia completa! y la mayoría de estos problemas serán una cosa arcaica del pasado.

    De todos modos, estoy muy contento de ver cuán rápido se ejecuta la aplicación implementada en el VPS más barato , con una latencia sorprendentemente baja y actualizaciones simultáneas casi instantáneas en varios navegadores distintos. ¡Fantástico!

    ¡¡¡Gracias!!!

    Prueba Meteor Up también

    Con eso puedes implementarlo en cualquier servidor de Ubuntu. Esto usa el comando de meteor build internamente. Y utilizado por muchos para implementar aplicaciones de producción.

    Creé Meteor Up para permitir a los desarrolladores implementar aplicaciones Meteor de calidad de producción hasta que llegue Galaxy.

    Recomendaría el sabor dos con un servidor de implementación separado. La separación de las preocupaciones conduce a un entorno más estable para su código y es más fácil de depurar.

    Para hacerlo, existe la excelente secuencia de comandos basher de Meteoric que te ayuda a implementar en EC2 de Amazon o en tu propio servidor.

    En cuanto a cómo rodar tu propio meteor.com, te sugiero que analices su propia pregunta sobre StackOverflow ya que no está relacionada. Además, no puedo responderlo 🙂

    Lo terminé hace unos días. Implementé mi aplicación Meteor en mi propio servidor en Digital Ocean. Utilicé la herramienta Meteor Up para administrar despliegues y Nginx en el servidor para servir la aplicación.

    Es muy simple de usar. Deberías instalar el meteor con el comando:

     npm install -g mup 

    Luego, cree la carpeta para la configuración de implementación y vaya al directorio creado. Luego ejecuta el comando meteor init . Creará dos archivos de configuración. Estamos interesados ​​en el archivo mup.json . Tiene configuraciones para el proceso de implementación. Se ve así:

     { // Server authentication info "servers": [ { "host": "hostname", "username": "root", "password": "password", // or pem file (ssh based authentication) //"pem": "~/.ssh/id_rsa", // Also, for non-standard ssh port use this //"sshOptions": { "port" : 49154 }, // server specific environment variables "env": {} } ], // Install MongoDB on the server. Does not destroy the local MongoDB on future setups "setupMongo": true, // WARNING: Node.js is required! Only skip if you already have Node.js installed on server. "setupNode": true, // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number. "nodeVersion": "0.10.36", // Install PhantomJS on the server "setupPhantom": true, // Show a progress bar during the upload of the bundle to the server. // Might cause an error in some rare cases if set to true, for instance in Shippable CI "enableUploadProgressBar": true, // Application name (no spaces). "appName": "meteor", // Location of app (local directory). This can reference '~' as the users home directory. // ie, "app": "~/Meteor/my-app", // This is the same as the line below. "app": "/Users/arunoda/Meteor/my-app", // Configure environment // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary "env": { "PORT": 80, "ROOT_URL": "http://myapp.com", "MONGO_URL": "mongodb://arunoda:fd8dsjsfh7@hanso.mongohq.com:10023/MyApp", "MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:adj87sjhd7s@smtp.mailgun.org:587/" }, // Meteor Up checks if the app comes online just after the deployment. // Before mup checks that, it will wait for the number of seconds configured below. "deployCheckWaitTime": 15 } 

    Después de llenar todos los campos de datos, puede iniciar el proceso de configuración con la configuración de comandos de mup setup . Configurará su servidor.

    Después de una configuración exitosa puede implementar su aplicación. Simplemente escriba mup deploy en la consola.

    Otra alternativa es simplemente desarrollar en su propio servidor para comenzar. Acabo de crear un cuadro Digital Ocean y luego conecté mi cuenta IDE de Cloud9.

    Ahora puedo desarrollarme directamente en la máquina en un Cloud IDE y la implementación es fácil, solo copie los archivos.

    Creé un tutorial que muestra exactamente cómo funciona mi configuración.

    Aquí hay instrucciones para ejecutar Meteor en un CentOS 7 VPS . Debería aplicarse a otros entornos de Linux.

    Tuve muchos problemas con el meteor, así que decidí escribir mi propio script de implementación . También agregué información adicional sobre cómo configurar nginx o mongodb. ¡Espero eso ayude!

    Ver /sh carpeta en el repository

    Lo que hace el script meteor-deploy.sh :

    1. Seleccione el entorno ( ./meteor-deploy.sh para la escena, ./meteor-deploy.sh prod para la producción)
    2. Desarrollar y agrupar la versión de producción de la aplicación de meteors
    3. Copiar paquete al servidor
    4. SSH en el servidor
    5. Haz un mongodump para hacer una copia de seguridad de la base de datos
    6. Detener la aplicación en ejecución
    7. Desempaquetar paquete
    8. Sobrescribir archivos de la aplicación
    9. Reinstalar dependencias del paquete del nodo de la aplicación
    10. Inicie la aplicación (se usa para siempre)

    Probado para las siguientes configuraciones de servidor:

    • Ubuntu 14.04.4 LTS
    • Meteor: versión 1.3.2.4
    • nodo –version v0.10.41
    • npm –version 3.10.3