blog-image

Installer Mongodb-3.6.x sur un rock64 (arm64)

  • dHENRY
  • 19/02/2019
  • (Durée de lecture : 5 mn)

Update : Attention cette documentation est obsolète

Update 28/01/2021 : Cette procédure fonctionne aussi pour les Raspberry PI4 équipé de RaspiOS 64-bits.

Le paquet mongodb-3.6.x Debian pour arm64 n’existe pas dans les dépôts officiels, la dernière version connues est 3.2 sur la version stretch de Debian. Je vais donc présenter la procédure permettant de compiler le projet à partir des sources Mongodb, ainsi que la méthode de fabrication des paquets Debian pour cette version.

La seconde possibilité d’obtenir MongoDb-3.6 sur votre Rock64 est décrite au chapitre “Vous ne souhaitez pas compiler”

Vous souhaitez compiler :

Pré-requis

Python 2.7 (déjà installé dans la distribution debian)

Récupération des sources

Les sources mongodb-3.6 sont disponibles ici https://fastdl.mongodb.org/src/mongodb-src-r3.6.10.tar.gz

Mongodb-server (mongod) - arm64

Compilation

Connectez-vous “root” à l’unité rock64

apt install build-essential libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev libffi-dev
#Récupérer les sources
wget https://fastdl.mongodb.org/src/mongodb-src-r3.6.10.tar.gz
# Extraire les sources
tar xfz mongodb-src-r3.6.10.tar.gz
# Entrez dans le répertoire des sources
cd mongodb-src-r3.6.10
pip2 install -r buildscripts/requirements.txt
python2 buildscripts/scons.py core --ssl --use-s390x-crc32=off

Attention la procédure de compilation prend plusieurs heures !!!

Création du paquet Debian

Pour pouvoir installer mongodb-server sur une unité, nous allons créer un paquet Debian, qui sera installables sur n’importe quel rock64 disposant d’une distribution debian-strech. Le projet mongodb est livré avec les fichiers nécessaire au packaging Debian.

cd /root/mongodb-src-r3.6.10
mkdir mongodb-org-server-3.6.10-arm64
cd mongodb-org-server-3.6.10-arm64
mkdir -p etc/init.d lib/systemd/system usr/bin usr/share/doc/mongodb-server-core usr/share/man/man1/ var/run/mongodb DEBIAN
cp ../mongod ../mongos usr/bin/.
chmod 755 usr/bin/*
gzip -c ../debian/mongod.1 > usr/share/man/man1/mongod.1.gz
gzip -c ../debian/mongos.1 > usr/share/man/man1/mongos.1.gz
cp ../debian/copyright usr/share/doc/mongodb-server-core/.
gzip -c ../debian/changelog > usr/share/doc/mongodb-server-core/changelog.Debian.gz
cp ../debian/init.d /etc/init.d/mongodb
cp ../debian/mongod.conf etc/.
cp ../debian/mongod.service lib/systemd/system/.
cp ../debian/mongodb-org-server.postinst DEBIAN/postinst
echo "systemctl stop mongod" > DEBIAN/prerm
echo "exit 0" >> DEBIAN/prerm
chmod 755 DEBIAN/postinst DEBIAN/prerm

Nous avons besoin d’un fichier control

vi DEBIAN/control

Ajoutez ce contenu :

Package:  mongodb-org-server
Version : 3.6.10
Source: https://fastdl.mongodb.org/src/mongodb-src-r3.6.10.tar.gz
Section: database
Priority: optional
Architecture: arm64
Maintainer: Ernie Hershey [ernie.hershey@mongodb.com](mailto:ernie.hershey@mongodb.com)
Build-Depends: adduser,lsb-base
Homepage: http://www.mongodb.org
Description: mongodb server

Enregistez et quitter : ESC :wq

Pour créer le paquet :

cd ..
dpkg-deb --build mongodb-org-server-3.6.10-arm64

Mongodb-client (mongo,…) - arm64

Compilation

cd /root/mongodb-src-r3.6.10
mkdir mongodb-org-client-3.6.10-arm64
cd mongodb-org- client -3.6.10-arm64
mkdir -p usr/bin usr/share/doc/mongodb-client usr/share/man/man1/ DEBIAN
cp ../mongo usr/bin/.
chmod 755 usr/bin/*
gzip -c ../debian/mongo.1 > usr/share/man/man1/mongo.1.gz
cp ../debian/copyright usr/share/doc/mongodb-client/.
gzip -c ../debian/changelog > usr/share/doc/mongodb-client/changelog.Debian.gz

Nous avons besoin d’un fichier control

vi DEBIAN/control

Ajoutez ce contenu :

Package: mongodb-org-client
Version : 3.6.10
Source: https://fastdl.mongodb.org/src/mongodb-src-r3.6.10.tar.gz
Section: database
Priority: optional
Architecture: arm64
Maintainer: Ernie Hershey [ernie.hershey@mongodb.com](mailto:ernie.hershey@mongodb.com)
Build-Depends:
Homepage: http://www.mongodb.org
Description: mongodb client

Enregistez et quitter : ESC :wq

Pour créer le paquet :

cd ..
dpkg-deb --build mongodb-org- client -3.6.10-arm64

Vous ne souhaitez pas compiler

Si vous ne souhaitez pas compiler, vous pouvez toujours télécharger (avec l’outils wget ["apt install wget" si non installé sur votre système]) les paquets que j’ai créé en suivant les procédures décrites ci-avant :
Client : https://git.mytinydc.com/Mytinydc/mongodb-arm64-debian/raw/master/mongodb-org-client-3.6.10-arm64.deb (MD5SUM : 0fb4749de59e82acc88fedcae6093c28 )
Serveur : https://git.mytinydc.com/Mytinydc/mongodb-arm64-debian/raw/master/mongodb-org-server-3.6.10-arm64.deb (MD5SUM : 8c94369a4e12e37538c02354c7be3e76 )

cd /root
wget [url du paquet, choix proposé ci-avant]

Pour contrôler l’intégrité des paquets, utilisez la commande :

md5sum [nom du paquet téléchargé]

puis comparer la valeur obtenue à la valeur " MD5SUM " indiquée du paquet à contrôler.

Sources m’ayant permis de construire ces paquets :
https://fastdl.mongodb.org/src/mongodb-src-r3.6.10.tar.gz

Installation des paquets

Une fois les paquets créés par vous ou bien téléchargés à partir de ce site, vous utiliserez la commande :

dpkg -i [Nom du paquet.deb]

Paquets que vous avez créés :

cd [répertoire ou sont disponible les fichier .deb]
dpkg -i mongodb-org-server-3.6.10-arm64.deb
dpkg -i mongodb-org-client-3.6.10-arm64.deb

Paquets téléchargés :

cd [répertoire de téléchargement des fichier .deb]
dpkg -i dl-mongodb-org-server-3.6.10-arm64.deb
dpkg -i dl-mongodb-org-client-3.6.10-arm64.deb

Démarrage du serveur

systemctl start mongod

Vérifiez le bon démarrage en consultant le log :

tail -f /var/log/mongodb/mongod.log

Pour quitter cette commande : CTRL+C

Et vous obtenez des suggestion de tuning du kernel…. une application temporaire sera :

echo never > /sys/kernel/mm/transparent_hugepage/defrag

Vous pouvez appliquer cette règle au démarrage du serveur en ajoutant :

kernel/mm/transparent_hugepage/enabled = never

à la fin du fichier /etc/sysfs.conf

Arrêt du serveur

systemctl stop mongod

Mongodb-tools (mongodump, mongorestore) - arm64

On ne va rien compiler, et se contenter d’installer le paquet existant pour Debian (version 3.2) :

apt install mongo-tools

(**) attention cette dernière instruction peut ne pas fonctionner, certains utilisateurs rencontrent des soucis depuis la mise à disposition de mongodb Version 4

Compilation

Les outils mongodb, tels mongodump, mongorestore,… ont été réécris en langage GO. Les sources sont disponible ici https://github.com/mongodb/mongo-tools
Le fichier “README.md” de ce repository explique comment compiler ces outils. Mais vous allez devoir adapter les instructions :

apt install golang golang-go.tools libpcap0.8-dev build-essential
cd /opt
mkdir -p src/github.com/mongodb/
cd src/github.com/mongodb/
git clone https://github.com/mongodb/mongo-tools
cd mongo-tools
export GOROOT=/usr/lib/go-1.11/;export CC=gcc;./build.sh

Créer le paquet Debian

cd /opt/src/github.com/mongodb/mongo-tools
mkdir mongodb-org-tools-arm64
cd mongodb-org-tools-arm64/
cp ../bin/* usr/bin/.
chmod 755 usr/bin/*

Nous avons besoin d’un fichier control

vi DEBIAN/control

Ajoutez ce contenu :

Package: mongodb-org-tools
Version: 2019.03.26
Source: https://github.com/mongodb/mongo-tools
Section: database
Priority: optional
Architecture: arm64
Maintainer: https://github.com/mongodb/mongo-tools
Build-Depends:
Homepage: https://github.com/mongodb/mongo-tools
Description: mongodb tools

Enregistez et quitter : ESC :wq
Pour créer le paquet :

cd ..
dpkg-deb --build mongodb-org-tools-arm64

Si vous ne souhaitez pas compiler, téléchargez le paquet Debian que j’ai créé : https://git.mytinydc.com/Mytinydc/mongodb-arm64-debian/raw/master/mongodb-org-tools-arm64.deb

Installation du paquet Debian

Paquet que vous avez créé :

cd [répertoire ou sont disponible les fichier .deb]
dpkg -i mongodb-org-tools-arm64

Paquet téléchargé :

cd [répertoire de téléchargement des fichier .deb]
dpkg -i dl-mongodb-org-tools-arm64

Sécurité

ATTENTION : par défaut mongodb écoute sur l’adresse locale 127.0.0.1 et ne dispose par conséquent d’aucun paramétrage de sécurité d’accès. Seuls les processus hébergés sur cette machine ont accès aux bases mongodb. Si vous devez changer cette configuration, référez-vous aux nombreux documents relatifs à la sécurité des serveurs mongodb.

Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)

CETTE DOCUMENTATION EST LIVRÉE “EN L’ÉTAT”, SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.