En ingénierie des systèmes, la communication est un élément clé de la réussite de tout projet. C'est parce qu'il est essentiel à l'ensemble du cycle de développement; de la collecte des exigences à la livraison d'un produit minimum viable.
À l'aide d'un système de contrôle de version distribué (comme Git - une norme de l'industrie), les développeurs peuvent soumettre de petits morceaux de code et travailler avec des services comme Bitbucket construits autour de lui. L'hébergement de Bitbucket est possible lorsque les données générées par ses utilisateurs disposent d'une base de données, tout comme PostgreSQL, mais l'intégration des deux nécessite des configurations supplémentaires pour s'exécuter sur différentes machines.
Présentation du réseau
Un réseau local peut transmettre les informations entre les programmes sans avoir besoin de les exposer au réseau extérieur, selon l'endroit où se trouveraient les utilisateurs.
1.1. Réseau local (LAN).Avec la séparation des préoccupations, Bitbucket et PostgreSQL peuvent se parler pour atteindre leur objectif commun, fournir une plate-forme de système de contrôle de version distribué.
1.2. Bitbucket accède à PostgreSQL.PostgreSQL s'appuie sur un socket fourni par le système d'exploitation, de sorte que les données du cluster sont conservées derrière une porte protégée par des règles de pare-feu.
1.3. Source de données PostgreSQL.Mise en route
Il n'y a pas grand chose à dire car c'est un processus assez simple. PostgreSQL devra être configuré avec un nouvel utilisateur et une base de données prête pour Bitbucket.
PostgreSQL
# Partie 1 :Préparer la base de données.$ pg_lsclusters$ sudo systemctl -a | grep postgres$ sudo -u postgres psql -c "\du" -c "\l"2.1. Vérification s'il y a déjà des clusters en cours d'exécution.
# Partie 2 :Création d'un nouvel utilisateur (rôle) et d'une base de données.$ sudo -u postgres psql -c "create role thiago with createdb login password 'Th14g0_P4ssw0rd'"$ psql -d postgres -c "créer une base de données bitbucket_db"$ psql -d bitbucket_db -c "\du" -c "\l"2.2. Le propriétaire de la base de données n'est pas le superutilisateur postgres.
# Partie 3 :Modification de la configuration du cluster (postgresql.conf).$ sudo -u postgres psql -c "show config_file"$ sudo cat /etc/postgresql/11 /main/postgresql.conf | grep listen_addresses$ sudo sed -i "s|#listen_addresses ='localhost'|listen_addresses ='\*'\t|" /etc/postgresql/11/main/postgresql.conf$ sudo cat /etc/postgresql/11/main/postgresql.conf | grep listen_addresses2.3. Autoriser les connexions à distance (postgresql.conf).
# Partie 4 :Modifier la configuration du cluster (pg_hba.conf).$ sudo wc -l /etc/postgresql/11/main/pg_hba.conf$ sudo tail -3 /etc /postgresql/11/main/pg_hba.conf$ sudo sed -i "$ a # Autoriser les connexions distantes (listen_addresses ='*') avec authentification" /etc/postgresql/11/main/pg_hba.conf$ sudo sed -i " $ un hôte\tall\t\tall\t\t192.168.0.0/16\t\tmd5" /etc/postgresql/11/main/pg_hba.conf$ sudo sed -i "$ un hôte\tall\t\ tall\t\t::/0\t\t\tmd5" /etc/postgresql/11/main/pg_hba.conf$ sudo wc -l /etc/postgresql/11/main/pg_hba.conf$ sudo tail -3 /etc/postgresql/11/main/pg_hba.conf2.4. Modification des autorisations d'accès (pg_hba.conf).
# Partie 5 :Redémarrer le cluster.$ sudo -u postgres psql -c "show listen_addresses"$ ss -nlp | grep 5432$ sudo systemctl restart [email protected]$ sudo -u postgres psql -c "show listen_addresses"$ ss -nlp | grep 54322.5. Application des modifications.
# Partie 6 :Ouvrir la porte.$ sudo ufw status$ sudo ufw allow 5432/tcp$ sudo ufw status$ ip addr show2.6. Configuration du pare-feu et affichage de l'adresse IP.
# Partie 7 :Définir un mot de passe pour le rôle de superutilisateur.$ sudo -u postgres psql -c "\password"2.7. Modification du mot de passe administrateur.
Bucket
Voici ce que vous devrez ensuite faire côté Bitbucket.
# Partie 1 :Vérifier si la configuration précédente était correcte.$ telnet 192.168.0.106 5432# (Facultatif) Utilisation de psql.$ sudo -u postgres psql -h 192.168.0.106 -p 5432 -d bitbucket_db -U thiago - c "\conninfo"3.1. Atteindre la base de données à distance.
# Partie 2 :Extraction du serveur Bitbucket.$ ls$ tar xzf atlassian-bitbucket-6.10.0$ ls$ du -sh atlassian-bitbucket-6.10.0$ tree -L 1 atlassian-bitbucket -6.10.0$ tree -L 1 atlassian-bitbucket-6.10.0/bin3.2. Scripts pour Linux et Windows.
# Partie 3 :Modification du script (set-bitbucket-home.sh).$ mkdir bitbucket-home$ echo $(pwd)/bitbucket-home$ cat atlassian-bitbucket-6.10.0 /bin/set-bitbucket-home.sh | grep BITBUCKET_HOME=$$ sed -i 's|BITBUCKET_HOME=$|BITBUCKET_HOME=/home/thiago/Documents/severalnines.com/database-blog/bitbucket-home|' atlassian-bitbucket-6.10.0/bin/set-bitbucket-home.sh$ cat atlassian-bitbucket-6.10.0/bin/set-bitbucket-home.sh | grepBITBUCKET_HOME=/3.3. Configuration de BITBUCKET_HOME.
# Partie 4 :Modification du script (set-jre-home.sh).$ readlink -f $(quel java)$ cat atlassian-bitbucket-6.10.0/bin/set-jre-home. sh | grep JRE_HOME=$$ sed -i 's|JRE_HOME=$|JRE_HOME=/usr/lib/jvm/java-11-openjdk-amd64|' atlassian-bitbucket-6.10.0/bin/set-jre-home.sh$ cat atlassian-bitbucket-6.10.0/bin/set-jre-home.sh | grep JRE_HOME=/3.4. Configuration de JRE_HOME (Java).
# Partie 5 :Vérification du matériel.$ cat /proc/cpuinfo | processeur grep | wc -l$ libre -h3.5. Cœurs de processeur et RAM au démarrage.
# Partie 6 :Exécuter Bitbucket Server avec Elasticsearch.$ ./atlassian-bitbucket/bin/start-bitbucket.sh$ free -h3.6. Exécution avec Elasticsearch (par défaut).
# Partie 7 :Exécuter Bitbucket Server sans Elasticsearch.$ ./atlassian-bitbucket/bin/start-bitbucket.sh --no-search$ free -h3.7. Exécution sans Elasticsearch (économise 1 Go de RAM).
# Partie 8 :Aperçu rapide de BITBUCKET_HOME.$ du -sh bitbucket-home$ tree -L 1 bitbucket-home3.8. À l'intérieur de BITBUCKET_HOME.
Intégration de PostgreSQL et Bitbucket
Après avoir configuré PostgreSQL et Bitbucket, leur intégration doit se faire via le navigateur (http://localhost:7990/).
4.1. Démarrage de Bitbucket.# Affichage des tables$ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"4.2. Liste des tables de base de données actuelles.
Vous pouvez maintenant configurer Bitbucket pour utiliser l'API Java Persistence, avec Hibernate comme implémentation, pour créer le modèle de domaine dans la base de données, à l'aide du pilote PostgreSQL JDBC.
4.3. Configuration de la source de données.# Affichage des tables (à nouveau)$ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"4.4. Liste à nouveau, montrant 10 des 164 lignes.
# Vérification du pool de connexion.$ psql -h 192.168.0.106 -d bitbucket_db -c "select pid,usename,application_name,state from pg_stat_activity where datname ='bitbucket_db'" 4.5. Affichage du pool de connexion.Conclusion
Gardez à l'esprit que si votre réseau utilise DHCP, c'est une bonne idée de configurer l'adresse IP sur statique dans votre routeur, sinon Bitbucket risque d'échouer en essayant de trouver PostgreSQL plus tard.
La plupart de ce blog a utilisé des expressions régulières pour modifier les fichiers de configuration sans ouvrir les éditeurs de texte, mais elles peuvent également être utilisées sur les navigateurs Web à des fins de débogage, essayez de rechercher le message d'erreur "n'a pas pu changer de répertoire en ? :Autorisation refusée » avec des guillemets doubles, ou tout autre problème que vous pourriez rencontrer, en remplaçant le chemin spécifique à l'ordinateur par le caractère générique ' ?'.