W inżynierii systemów komunikacja jest kluczowym elementem do osiągnięcia sukcesu w każdym projekcie. Dzieje się tak, ponieważ ma kluczowe znaczenie dla całego cyklu rozwoju; począwszy od zbierania wymagań do dostarczenia minimalnego opłacalnego produktu.
Korzystając z rozproszonego systemu kontroli wersji (takiego jak Git – standard branżowy), programiści mogą przesyłać małe fragmenty kodu i współpracować z usługami, takimi jak Bitbucket, które są na nim oparte. Hosting Bitbucket jest możliwy, gdy dane generowane przez użytkowników mają bazę danych, tak jak PostgreSQL, ale integracja obu wymaga dodatkowych konfiguracji do wykonywania na różnych maszynach.
Omówienie sieci
Sieć lokalna może przekazywać informacje między programami bez konieczności udostępniania ich sieci zewnętrznej, w zależności od tego, gdzie byliby użytkownicy.

Dzięki rozdzieleniu obaw Bitbucket i PostgreSQL mogą komunikować się ze sobą, aby osiągnąć swój wspólny cel, zapewniając platformę rozproszonego systemu kontroli wersji.

PostgreSQL opiera się na gnieździe zapewnianym przez system operacyjny, więc dane klastra są przechowywane za drzwiami chronionymi przez reguły zapory.

Pierwsze kroki
Nie ma wiele do powiedzenia, ponieważ jest to dość prosty proces. PostgreSQL będzie musiał być skonfigurowany z nowym użytkownikiem i bazą danych gotową na 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
Oto, co musisz zrobić po stronie 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"

# 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

Integracja PostgreSQL i Bitbucket
Po skonfigurowaniu PostgreSQL i Bitbucket ich integracja musi być wykonana przez przeglądarkę (http://localhost:7990/).

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

Możesz teraz skonfigurować Bitbucket tak, aby używał Java Persistence API, z implementacją Hibernate, do tworzenia modelu domeny w bazie danych przy użyciu sterownika PostgreSQL JDBC.

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

Wnioski
Pamiętaj, że jeśli Twoja sieć używa DHCP, dobrym pomysłem jest skonfigurowanie statycznego adresu IP w routerze, w przeciwnym razie Bitbucket może się nie powieść podczas późniejszego odnalezienia PostgreSQL.
Większość tego bloga używa wyrażeń regularnych do zmiany plików konfiguracyjnych bez otwierania edytorów tekstu, ale można ich również używać w przeglądarkach internetowych do celów debugowania, spróbuj wyszukać komunikat o błędzie „nie można zmień katalog na ?:Permission denied” z podwójnymi cudzysłowami lub innym problemem, który możesz znaleźć, zastępując ścieżkę specyficzną dla komputera symbolem wieloznacznym „?”.