blog-image

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

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

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://gitlab.albatros-info.fr/dhenry/mongodb-arm64-debian/raw/master/mongodb-org-client-3.6.10-arm64.deb (MD5SUM : 0fb4749de59e82acc88fedcae6093c28 )
Serveur : https://gitlab.albatros-info.fr/dhenry/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://gitlab.albatros-info.fr/dhenry/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.

Poster un commentaire

Désolé, la réponse à la question Captcha est incorrecte
Merci. le message est dans le tuyau :)
Désolé, il y a un problème dans le tuyau, veuillez réessayer plus tard :(
Un champs est invalide

Commentaires (non traduits)

Pas de commentaires