Pascal Richier & Morea.fr
Présenté par Pascal Richier & www.morea.fr
Conception et infogérance d’infrastructures critiques
Le tout, sans compilation
sous Debian 7.2 Wheezy
Conception et infogérance d’infrastructures critiques
Dernière version de MongoDB disponible depuis les dépôts MongoDB
$ # Importer la clé PGP de MongoDB
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
$ # Créer un fichier sources.list pour MongoBD
$ echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' |
sudo tee /etc/apt/sources.list.d/mongodb.list$ # Recharger la liste des paquets et installer MongoBD
$ sudo apt-get update
$ sudo apt-get install mongodb-10gen
Conception et infogérance d’infrastructures critiques
Si vous utilisez un firewall et que vous ne donnez pas accès au port 27017 de votre serveur, vous pouvez sauter cette étape.
$ # Lancer un MongoDB shell
$ mongo
# Sélection de la base de données admin
db = db.getSiblingDB('admin')
# Ajout du compte administrateur
db.addUser({user: "adminuser", pwd: "myPWD", roles: ["userAdminAnyDatabase", "clusterAdmin", "readAnyDatabase"]})
# Quitter le shell
exit
Conception et infogérance d’infrastructures critiques
Édition de la configuration : /etc/mongodb.conf
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongodb.log
logappend=true
#port = 27017
# Disables write-ahead journaling
# nojournal = true
# Turn on/off security. Off is currently the default
#noauth = false
auth = true
Ne pas oublier de relancer MongoDB :sudo /etc/init.d/mongodb restart
Conception et infogérance d’infrastructures critiques
$ # Connection avec le compte admin
$ mongo -u adminuser -p --authenticationDatabase admin
MongoDB shell version: 2.4.8
Enter password:
connecting to: test
>
# Sélection de la base de données testdatabase
use testdatabase
# Ajout d'un compte pour notre application
db.addUser({ user: "testuser", pwd: "testuserpass", roles: [ "readWrite", "userAdmin"] })
# Sortons du shell
exit
Conception et infogérance d’infrastructures critiques
Via les dépôts Backports.debian.org
$ # Ajout des dépôts Backports et rechargement de la liste des paquets
$ echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list
$ apt-get update
$ # Installation de Node
$ apt-get install nodejs-legacy
$ # Installation de npm
$ curl https://npmjs.org/install.sh | sh
Rappel : les paquets Backports ne sont pas prioritaires !
Conception et infogérance d’infrastructures critiques
Si l'installation de npm échoue car il ne trouve pas Node
$ ln -s /usr/bin/nodejs /usr/bin/node
$ ln -s /usr/lib/nodejs /usr/lib/node
npm cherche node, or il est installé sous nodejs
Relancer l'installation de npm
$ curl https://npmjs.org/install.sh | sh
Conception et infogérance d’infrastructures critiques
Via les dépôts Dotdeb
$ # Ajout des dépôts Dotdeb et rechargement de la liste des paquets
$ echo "http://packages.dotdeb.org wheezy all" >> /etc/apt/sources.list
$ wget http://www.dotdeb.org/dotdeb.gpg
$ apt-key add dotdeb.gpg # la clé GnuPG de Dotdeb
$ apt-get update
$ # Installation de NGinX
$ apt-get install nginx
Conception et infogérance d’infrastructures critiques
$ mkdir /etc/nginx/sites-available /etc/nginx/sites-enabled
...
http {
...
include sites-enabled/*;
}
Conception et infogérance d’infrastructures critiques
Ajout d'un fichier /etc/nginx/sites-available/my-meteor-app.com
upstream my_meteor_app {
server 127.0.0.1:58080;
}
server {
listen 0.0.0.0:80;
server_name my-meteor-app.com;
access_log /var/log/nginx/my-meteor-app.access;
location / {
proxy_pass http://my_meteor_app/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
Conception et infogérance d’infrastructures critiques
$ cd /etc/nginx/sites-enabled
$ ln -s /etc/nginx/sites-available/my-meteor-app.com
$ /etc/init.d/nginx restart
Conception et infogérance d’infrastructures critiques
$ npm install forever
$ forever my_node_app.js
$ forever list
0 my_node_app.js [ 24597, 24596 ]
$ forever stop <id>
Il existe une alternative à Forever : PM2.
Meteor n'est pas installé sur la machine de PROD, uniquement sur la machine de DEV.
$ npm install -g demeteorizer
$ mkdir -p ~/Programming/Demeteorized/testapp
cd ~/Programming/testapp
demeteorizer -o ~/Programming/Demeteorized/testapp
$ scp -r ~/Programming/Demeteorized/ you@yourdomaine.com:/home/you/www/
Conception et infogérance d’infrastructures critiques
echo "[+] Starting Meteor App!"
if [ "$1" = "" ]
then
echo "[-] Usage: <dir>"
echo "[!] Path needed for the containing project folder"
exit 0
fi
if [ ! -d $1 ]
then
echo "[!] Could not enter the dir: $1"
exit 0
fi
cd $1
echo "[+] Running NPM"
npm install &>/dev/null
echo "[+] Setting environment variables"
export MONGO_URL='mongodb://testuser:testuserpass@127.0.0.1:27017/testdatabase'
export PORT=58080
export ROOT_URL='http://localhost/'
echo "[+] Starting Node Server"
forever main.js
Utilisation :
$ # Enregistrer le script dans ~/www
$ cd ~/www
$ chmod +x ./start_app.sh
$ ./start_app.sh ./testapp
Pour héberger vos applications Meteor critiques
MOREA vous accompagne dès la conception de votre architecture technique jusqu’à l’infogérance de vos services ou applications critiques. Morea travaille principalement avec des technologies Open Source.
Ils font confiance à Morea :
Thanks to andrehonsberg.com for his articles !