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.

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é.

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.

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"

# 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"

# 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_addresses

# 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.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 5432

# Partie 6 :Ouvrir la porte.$ sudo ufw status$ sudo ufw allow 5432/tcp$ sudo ufw status$ ip addr show

# Partie 7 :Définir un mot de passe pour le rôle de superutilisateur.$ sudo -u postgres psql -c "\password"

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"

# 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/bin

# 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=/

# 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=/

# Partie 5 :Vérification du matériel.$ cat /proc/cpuinfo | processeur grep | wc -l$ libre -h

# Partie 6 :Exécuter Bitbucket Server avec Elasticsearch.$ ./atlassian-bitbucket/bin/start-bitbucket.sh$ free -h

# Partie 7 :Exécuter Bitbucket Server sans Elasticsearch.$ ./atlassian-bitbucket/bin/start-bitbucket.sh --no-search$ free -h

# Partie 8 :Aperçu rapide de BITBUCKET_HOME.$ du -sh bitbucket-home$ tree -L 1 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/).

# Affichage des tables$ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"

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.

# Affichage des tables (à nouveau)$ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"

# 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 ' ?'.