In systeemtechniek is communicatie een sleutelelement voor het behalen van succes bij elk project. Dit komt omdat het van cruciaal belang is voor de hele ontwikkelingscyclus; beginnend met het verzamelen van vereisten tot het leveren van een minimaal levensvatbaar product.
Met behulp van een gedistribueerd versiebeheersysteem (zoals Git - een industriestandaard), kunnen ontwikkelaars kleine stukjes code indienen en samenwerken met services zoals Bitbucket die eromheen zijn gebouwd. Bitbucket hosten is mogelijk wanneer de gegevens die door de gebruikers worden gegenereerd een database hebben om te blijven, net als PostgreSQL, maar de integratie van beide vereist extra configuraties voor uitvoering op verschillende machines.
Netwerkoverzicht
Een lokaal netwerk kan de informatie tussen de programma's doorgeven zonder deze aan het externe netwerk bloot te stellen, afhankelijk van waar de gebruikers zich zouden bevinden.

Met de scheiding van zorgen kunnen Bitbucket en PostgreSQL met elkaar praten om hun gemeenschappelijke doel te bereiken, namelijk het bieden van een gedistribueerd versiebeheersysteemplatform.

PostgreSQL vertrouwt op een socket die wordt geleverd door het besturingssysteem, dus de gegevens van het cluster worden achter een deur bewaard die wordt beschermd door firewallregels.

Aan de slag
Er valt niet veel te zeggen, aangezien dit een vrij eenvoudig proces is. PostgreSQL moet worden ingesteld met een nieuwe gebruiker en database die klaar zijn voor Bitbucket.
PostgreSQL
# Part 1: Preparing the database. $ pg_lsclusters $ sudo systemctl -a | grep postgres $ sudo -u postgres psql -c "\du" -c "\l"

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

# 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

# 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

# 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

# Part 6: Opening the door. $ sudo ufw status $ sudo ufw allow 5432/tcp $ sudo ufw status $ ip addr show

# Part 7: Set a password for the superuser role. $ sudo -u postgres psql -c "\password"

Bitbucket
Dit is wat je dan moet doen aan de Bitbucket-kant.
# 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"

# 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

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

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

# Part 5: Checking the hardware. $ cat /proc/cpuinfo | grep processor | wc -l $ free -h

# Part 6: Running the Bitbucket Server with Elasticsearch. $ ./atlassian-bitbucket/bin/start-bitbucket.sh $ free -h

# Part 7: Running the Bitbucket Server without Elasticsearch. $ ./atlassian-bitbucket/bin/start-bitbucket.sh --no-search $ free -h

# Part 8: Quick look at BITBUCKET_HOME. $ du -sh bitbucket-home $ tree -L 1 bitbucket-home

PostgreSQL en Bitbucket integreren
Na het configureren van PostgreSQL en Bitbucket, moet hun integratie worden gedaan via de browser (http://localhost:7990/).

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

U kunt Bitbucket nu instellen om Java Persistence API te gebruiken, met Hibernate als implementatie, voor het maken van het domeinmodel in de database, met behulp van het PostgreSQL JDBC-stuurprogramma.

# Displaying tables (again) $ psql -h 192.168.0.106 -d bitbucket_db -c "\dt"

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

Conclusie
Houd er rekening mee dat als uw netwerk DHCP gebruikt, het een goed idee is om het IP-adres in uw router op statisch te configureren, anders kan Bitbucket PostgreSQL later misschien niet vinden.
Het grootste deel van deze blog heeft gebruik gemaakt van reguliere expressies voor het wijzigen van configuratiebestanden zonder teksteditors te openen, maar ze kunnen ook worden gebruikt in webbrowsers voor foutopsporingsdoeleinden. Probeer te zoeken naar de foutmelding "kon niet verander de map naar ?:Permissie geweigerd” met dubbele aanhalingstekens, of een ander probleem dat u tegenkomt, waarbij u het computerspecifieke pad vervangt door een jokerteken '?'.