Meteor.js es un marco JavaScript de código abierto escrito con Node.js en mente. Es popular debido a su visión de construir aplicaciones web en JavaScript puro. Meteor incorpora compatibilidad con JavaScript front-end que se ejecuta en el navegador web, así como JavaScript back-end, que se ejecutaría en el servidor host. Se integra muy bien con los marcos de JavaScript front-end, como React y Angular.js, así como con MongoDB, una popular base de datos NoSQL. Algunas razones importantes para elegir Meteor.js son las siguientes:
-
Meteor.js es un framework de pila completa. Entonces, con él, obtienes todo lo que puedas necesitar: base de datos, front-end, back-end. Meteor hace un trabajo increíble al unirlo todo.
-
Velocidad. El sistema de paquetes intuitivo de Meteor le brinda muchas herramientas que puede necesitar para perfeccionar su aplicación.
-
Cuenta con un buen apoyo del Grupo de desarrolladores de Meteor, así como de otros desarrolladores que lo usan. Podrá resolver fácilmente cualquier problema que pueda tener y resolverlo rápidamente.
En este tutorial, lograremos los siguientes objetivos en Ubuntu 16.04:
-
Instalar Node.js
, nuestro tiempo de ejecución de Javascript.
-
Instalar Meteor.js
.
-
Instalar MongoDB
, la base de datos de Meteor de elección.
-
Instale Apache
, nuestro proxy inverso de elección, y configure nuestro dominio si corresponde.
-
Prueba nuestro sitio web.
-
Configure nuestro sitio web para la producción.
Instalando Node.js
Primero deberá instalar Node.js, que es nuestro intérprete de JavaScript, y el núcleo de Meteor. Nos permitirá ejecutar Meteor y otras aplicaciones de Node.js que podamos tener en el futuro. En esta situación, instalaremos Node.js 8. Para iniciar la descarga, simplemente ejecute lo siguiente en su terminal.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Espere a que se complete la descarga y la instalación.
Instalar MongoDB
A continuación, instalaremos nuestra base de datos: MongoDB. MongoDB es una base de datos de documentos NoSQL gratuita y de código abierto, y la base de datos de Meteor de elección. Utiliza un formato similar a JSON para sus documentos, a diferencia de las tablas estructuradas en una base de datos SQL tradicional.
Importe la clave pública MongoDB utilizada por APT
(Advanced Packaging Terminal). Esto permite que APT verifique el paquete; en este caso, MongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Cree el archivo de lista necesario para Ubuntu 16.04.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Inicie la instalación de MongoDB y espere a que termine la instalación.
sudo apt update && sudo apt install mongodb-org -y
Abra el servicio systemd para editarlo.
sudo nano /etc/systemd/system/mongodb.service
Copie y pegue lo siguiente para completar el servicio systemd.
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
Use " Control-O
" para guardar y " Control-X
" para salir.
Ejecute el servicio systemd MongoDB escribiendo sudo systemctl start mongodb
su terminal.
Para verificar que se ha iniciado correctamente, escriba lo siguiente.
sudo systemctl status mongodb
Verá que el servicio está activo.
Instalar y configurar Apache2
A continuación, instalaremos Apache. Apache es un software de servidor web gratuito y de código abierto, que también funciona como un proxy inverso, que es lo que utilizaremos en este tutorial. Se necesita un proxy inverso para vincular nuestra aplicación Meteor.js port 80
. Node.js bloquea la ejecución de aplicaciones en ese puerto sin acceso de root. Apache se ejecuta tan root
automáticamente como se vincula port 80
, por lo que no tendremos que preocuparnos por eso cuando llegue el momento de ejecutar nuestro sitio web.
Instala Apache.
sudo apt update && sudo apt install apache2
Para permitir el acceso a puertos web externos como port 80
, necesitamos configurar nuestro firewall para Apache. Hacemos esto a través de UFW
(Firewall sin complicaciones).
sudo ufw allow 'Apache Full'
Esto permitirá el acceso al Apache Full
perfil " ". Esto nos da el tráfico entrante port 80
, que es en lo que se ejecutará nuestra aplicación.
Instalar Meteor.js y crear nuestra aplicación base
Ahora instalaremos nuestro framework web: Meteor.js. Utilizaremos un script bash simple provisto por el equipo de Meteor para instalarlo.
curl https://install.meteor.com/ | sh
Espere a que termine la instalación. Básicamente, lo que hace el script es descargar Meteor del sitio web oficial, y lo instala globalmente, para que podamos usarlo desde cualquier lugar. Una vez que haya terminado, podemos crear nuestro directorio de aplicaciones. Meteor tiene una pequeña herramienta útil para que usemos para hacer eso, llamada meteor create
. Para crear su directorio de aplicaciones, escriba lo siguiente.
meteor create <projectname>
La carpeta se creará con el nombre especificado ( <projectname>
).
Configurar nuestro proxy inverso Apache
Ahora que tenemos nuestro directorio de aplicaciones configurado, podemos proceder con la configuración de nuestro proxy inverso. Apache usa un módulo llamado mod_proxy
, que implementa un proxy para Apache.
sudo apt-get install libapache2-mod-proxy-html libxml2-dev -y
Esto instalará el módulo y lo pondrá a disposición de Apache.
A continuación, necesitaremos habilitar todos los módulos necesarios que Apache necesita para ejecutarse. Haremos esto con a2enmod
una herramienta que habilita módulos para Apache. Estos módulos nos permitirán aprovechar el proxy inverso. Simplemente escriba estos comandos en su terminal.
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
Después de eso, tendremos que deshabilitar el inicio del sitio Apache predeterminado para que podamos iniciar el nuestro. De lo contrario, la aplicación Apache predeterminada anulará la nuestra. Para deshabilitar el sitio predeterminado, simplemente ejecute lo siguiente.
sudo a2dissite 000-default
Ahora crearemos nuestro archivo de host virtual. Para hacer eso, solo abra un editor de texto.
sudo nano /etc/apache2/sites-available/<projectname>
Copie y pegue lo siguiente.
<VirtualHost *:80>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
# Servers to proxy the connection, or
# List of application servers Usage
ProxyPass / http://0.0.0.0:3000/
ServerName localhost
</VirtualHost>
-
VirtualHost *:80
: Le dice a Apache que se conecte al puerto 80, que es lo que queremos para nuestra aplicación web.
-
ProxyPass
: La dirección IP del sitio que desea reenviar al proxy inverso. Esta será probablemente la IP de su VPS
-
ServerName
: El nombre de su servidor (el nombre predeterminado suele ser localhost
).
Una vez que haya terminado de configurar los ajustes necesarios, use " Control-O
" para guardar y " Control-X
" para salir.
Ejecutando el sitio por primera vez
Para probar y asegurarse de que el sitio web se esté ejecutando, escriba lo siguiente en el directorio del proyecto.
meteor
Verá el siguiente resultado que muestra que su sitio se ha iniciado correctamente.
=> App running at: http://localhost:3000/
Tenga en cuenta que Meteor, de forma predeterminada, escucha port 3000
.
Configurar nuestro sitio web para producción
Para asegurarnos de que nuestra aplicación pueda seguir ejecutándose, utilizaremos un servicio systemd. Similar a lo que hicimos anteriormente con MongoDB, este servicio del sistema se asegurará de que nuestro sitio web se inicie cada vez que se inicie nuestro sistema y se mantenga en funcionamiento. También reiniciará nuestra aplicación, en caso de que falle por cualquier motivo. Para configurar nuestro servicio systemd, escriba lo siguiente en su terminal.
sudo nano /etc/systemd/system/<projectname>.service
Aquí es cómo quiere que se vea su archivo.
[Service]
WorkingDirectory=/home/<yourusername>/<projectname>
ExecStart=/usr/local/bin/meteor --production
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<projectName>
User=<yourusername>
Environment=NODE_ENV=production
Environment=PWD=/home/<yourusername>/<projectname>
Environment=PORT=3000
Environment=HTTP_FORWARDED_COUNT=1
Nota : No olvide reemplazar projectname
con el nombre del proyecto y yourusername
con el nombre de usuario del VPS.
Aquí hay algunas líneas clave para que tenga en cuenta.
-
WorkingDirectory
: El directorio de su aplicación.
-
Restart
: Si se reinicia o no la aplicación, se detiene por cualquier motivo.
-
User
: Su nombre de usuario.
-
Environment=PWD
: Idéntico a WorkingDirectory
.
-
Environment=PORT
: El puerto en el que se ejecuta su aplicación. El valor por defecto es 3000
.
Guarde y cierre el archivo.
Ahora, habilitaremos e iniciaremos el servicio.
sudo systemctl enable <projectname>.service
¿Dónde <projectname>
está el nombre del archivo de servicio que creamos?
Luego, comenzaremos el servicio.
sudo systemctl start <projectname>.service
Tu aplicación comenzará. Para verificar que se ha lanzado, simplemente ejecute lo siguiente.
sudo systemctl status <projectname>
Verá que está activo, verificando que el servicio se haya iniciado correctamente.
A continuación, revisaremos nuestro sitio web. En el navegador de su elección, navegue a su dirección IP.
http://your-server-ip/
Verá la pantalla de muestra Meteor, verificando que ha hecho todo correctamente.
Administrando nuestra aplicación
Ahora que hemos comenzado nuestra aplicación, tendremos que administrarla.
Reiniciando su aplicación
sudo systemctl restart <projectname>
Deteniendo la aplicación
sudo systemctl stop <projectname>
Ver el estado de la aplicación
sudo systemctl status <projectname>
Ver los registros
journalctl -u <projectname>
Ahora configuró con éxito MongoDB, Apache y Meteor, y creó un servidor web Meteor.js para producción. Ahora el resto depende de usted, diseñar su sitio web en el front-end y el back-end. Tiene acceso a MongoDB para almacenar cualquier información que pueda necesitar, y a Node.js, que ofrece una variedad de módulos disponibles a través de Node Package Manager ( NPM
) para fortalecer aún más su back-end. Para obtener más documentación, no dude en visitar el sitio de Meteor , donde puede obtener más información sobre cómo personalizar su sitio web a su gusto. Además, puede consultar la documentación de MongoDB cuando trabaje con operaciones de bases de datos.