deployment - servidor de correo windows server 2012
¿Cómo implementar una aplicación de meteorito en mi propio servidor? (7)
¿Cómo implementar una aplicación de meteorito 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.
Aquí hay instrucciones para ejecutar Meteor en un CentOS 7 VPS . Debería aplicarse a otros entornos de Linux.
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 meteorito 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.
// i.e., "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:[email protected]:10023/MyApp",
"MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:[email protected]: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.
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 ya que no está relacionada. Además, no puedo responderlo :)
Tuve muchos problemas con el meteorito, 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 repositorio
Lo que hace el script meteor-deploy.sh
:
- Seleccione el entorno (
./meteor-deploy.sh
para la escena,./meteor-deploy.sh prod
para la producción) - Desarrollar y agrupar la versión de producción de la aplicación de meteoritos
- Copiar paquete al servidor
- SSH en el servidor
- Haz un mongodump para hacer una copia de seguridad de la base de datos
- Detener la aplicación en ejecución
- Desempaquetar paquete
- Sobrescribir archivos de la aplicación
- Reinstalar dependencias del paquete del nodo de la aplicación
- 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
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 compilado 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 [email protected]
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 meteoritos 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!!!