Nell'ingegneria dei sistemi, la comunicazione è un elemento chiave per raggiungere il successo in qualsiasi progetto. Questo perché è fondamentale per l'intero ciclo di sviluppo; dalla raccolta dei requisiti alla fornitura di un prodotto minimo praticabile.
Utilizzando un sistema di controllo della versione distribuito (come Git, uno standard del settore), gli sviluppatori possono inviare piccoli pezzi di codice e collaborare con servizi come Bitbucket costruiti attorno ad esso. L'hosting di Bitbucket è possibile quando i dati generati dai suoi utenti hanno un database su cui rimanere, proprio come PostgreSQL, ma l'integrazione di entrambi richiede configurazioni aggiuntive per l'esecuzione su macchine diverse.
Panoramica della rete
Una rete locale può passare le informazioni tra i programmi senza la necessità di esporle alla rete esterna, a seconda di dove si troverebbero gli utenti.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524262.png)
Con la separazione delle preoccupazioni, Bitbucket e PostgreSQL possono dialogare tra loro per raggiungere il proprio obiettivo comune, fornendo una piattaforma del sistema di controllo della versione distribuito.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524361.png)
PostgreSQL si basa su un socket fornito dal sistema operativo, quindi i dati del cluster sono tenuti dietro una porta protetta dalle regole del firewall.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524326.png)
Per iniziare
Non c'è molto da dire in quanto si tratta di un processo piuttosto semplice. PostgreSQL dovrà essere configurato con un nuovo utente e un database pronto per Bitbucket.
PostgreSQL
# Part 1: Preparing the database. $ pg_lsclusters $ sudo systemctl -a | grep postgres $ sudo -u postgres psql -c "\du" -c "\l"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524510.png)
# Part 2: Creating a new user (role) and database. $ sudo -u postgres psql -c "create role thiago with createdb login password 'Th14g0_P4ssw0rd'" $ psql -d postgres -c "create database bitbucket_db" $ psql -d bitbucket_db -c "\du" -c "\l"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524516.png)
# Part 3: Changing the cluster configuration (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
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524692.png)
# Part 4: Changing the cluster configuration (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 # Allow remote connections (listen_addresses = '*') with authentication" /etc/postgresql/11/main/pg_hba.conf $ sudo sed -i "$ a host\tall\t\tall\t\t192.168.0.0/16\t\tmd5" /etc/postgresql/11/main/pg_hba.conf $ sudo sed -i "$ a host\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
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524662.png)
# Part 5: Restarting the 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
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524720.png)
# Part 6: Opening the door. $ sudo ufw status $ sudo ufw allow 5432/tcp $ sudo ufw status $ ip addr show
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524879.png)
# Part 7: Set a password for the superuser role. $ sudo -u postgres psql -c "\password"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524880.png)
Bitbucket
Ecco cosa dovrai fare poi sul lato Bitbucket.
# Part 1: Verifying if the earlier set up was correct. $ telnet 192.168.0.106 5432 # (Optional) Using psql. $ sudo -u postgres psql -h 192.168.0.106 -p 5432 -d bitbucket_db -U thiago -c "\conninfo"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524922.png)
# Part 2: Extracting the Bitbucket Server. $ 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
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214524916.png)
# Part 3: Modifying the 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 | grep BITBUCKET_HOME=/
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525012.png)
# Part 4: Modifying the script (set-jre-home.sh). $ readlink -f $(which 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=/
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525073.png)
# Part 5: Checking the hardware. $ cat /proc/cpuinfo | grep processor | wc -l $ free -h
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525071.png)
# Part 6: Running the Bitbucket Server with Elasticsearch. $ ./atlassian-bitbucket/bin/start-bitbucket.sh $ free -h
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525145.png)
# Part 7: Running the Bitbucket Server without Elasticsearch. $ ./atlassian-bitbucket/bin/start-bitbucket.sh --no-search $ free -h
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525288.png)
# Part 8: Quick look at BITBUCKET_HOME. $ du -sh bitbucket-home $ tree -L 1 bitbucket-home
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525291.png)
Integrazione di PostgreSQL e Bitbucket
Dopo aver configurato PostgreSQL e Bitbucket, la loro integrazione deve essere fatta tramite il browser (http://localhost:7990/).
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525399.png)
# Displaying tables $ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525348.png)
Ora puoi configurare Bitbucket per utilizzare Java Persistence API, con Hibernate come implementazione, per creare il modello di dominio nel database, utilizzando il driver JDBC PostgreSQL.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525339.png)
# Displaying tables (again) $ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525492.png)
# Verifying the connection pool. $ psql -h 192.168.0.106 -d bitbucket_db -c "select pid,usename,application_name,state from pg_stat_activity where datname = 'bitbucket_db'"
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214525500.png)
Conclusione
Tieni presente che se la tua rete utilizza DHCP, è una buona idea configurare l'indirizzo IP su statico nel router, altrimenti Bitbucket potrebbe non riuscire a trovare PostgreSQL in seguito.
La maggior parte di questo blog ha utilizzato le espressioni regolari per modificare i file di configurazione senza aprire editor di testo, ma possono essere utilizzate anche sui browser Web per scopi di debug, prova a cercare il messaggio di errore "non potrebbe cambia directory in ?:Permesso negato" con virgolette doppie o qualsiasi altro problema che potresti riscontrare, sostituendo il percorso specifico del computer con il carattere jolly '?'.