GitLab เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซเช‚ เชฌเชพเชนเซเชฏ PostgreSQL เชชเชฐ เชธเซเชฅเชณเชพเช‚เชคเชฐ

เชนเซ‡เชฒเซ‹ เชฆเชฐเซ‡เช•!

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ GitLab เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เช†เช‚เชคเชฐเชฟเช• PostgreSQL, เชœเซ‡ GitLab เชธเชพเชฅเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡, เชฌเชพเชนเซเชฏ PostgreSQL เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚, เชœเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชฌเซ€เชœเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡.

GitLab เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซเช‚ เชฌเชพเชนเซเชฏ PostgreSQL เชชเชฐ เชธเซเชฅเชณเชพเช‚เชคเชฐ

เชจเซ‹เช‚เชง
เชฌเชงเซ€ เช•เซเชฐเชฟเชฏเชพเช“ CentOS 7.7.1908, PostgreSQL 12 เช…เชจเซ‡ GitLab 12.4.2-ee.0 เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเซˆเชฏเชพเชฐเซ€

เชšเชพเชฒเซ‹ เชคเซเชฐเชฃ เชตเชธเซเชคเซเช“ เช…เช—เชพเช‰เชฅเซ€ เช•เชฐเซ€เช:

1. PostgreSQL เชธเชฐเซเชตเชฐ เชชเชฐ, เชซเชพเชฏเชฐเชตเซ‹เชฒเชฎเชพเช‚ เชเช• เชจเชฟเชฏเชฎ เช‰เชฎเซ‡เชฐเซ‹ เช•เซ‡ เชœเซ‡ PostgreSQL เชชเซ‹เชฐเซเชŸ 5432/TCP เชชเชฐ เช†เชตเชจเชพเชฐเชพ เชœเซ‹เชกเชพเชฃเซ‹เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚:

firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success

2. เชคเซ‡ เชœ เชœเช—เซเชฏเชพเช, เชชเชฐเช‚เชคเซ postgresql.conf เชซเชพเชˆเชฒเชฎเชพเช‚, เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชฌเชนเชพเชฐเชฅเซ€ เช†เชตเชคเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹. postgresql.conf เชซเชพเช‡เชฒ เช–เซ‹เชฒเซ‹, เช•เซ‹เชฎเซ‡เชจเซเชŸ เช•เชฐเซ‡เชฒเซ€ เชฒเชพเช‡เชจ เชถเซ‹เชงเซ‹ "#listen_addresses = 'เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ'" เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชจเซ€เชšเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชœเซ‡เชฎ เชเช• เชฒเซ€เชŸเซ€ เช‰เชฎเซ‡เชฐเซ‹. เชœเซเชฏเชพเช‚ - 10.0.0.2, เชคเชฎเชพเชฐเชพ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚.

เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚:

vi /var/lib/pgsql/12/data/postgresql.conf
# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = 'localhost, 10.0.0.2'
                                        # comma-separated list of addresses;

3. เช•เชพเชฐเชฃ เช•เซ‡ GitLab เชธเชฐเซเชตเชฐ เชฌเชพเชนเซเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชถเซ‡, เช†เชจเซ‡ pg_hba.conf เชซเชพเชˆเชฒเชฎเชพเช‚ PostgreSQL เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเซ€ เชœเซ‹เชˆเช. เชฎเชพเชฐเซเช‚ เช—เชฟเชŸเชฒเซ‡เชฌ เชธเชฐเซเชตเชฐ เชธเชฐเชจเชพเชฎเซเช‚ 10.0.0.4 เช›เซ‡.

เชšเชพเชฒเซ‹ pg_hba.conf เชซเชพเชˆเชฒ เช–เซ‹เชฒเซ€เช เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชฒเซ€เชŸเซ€ เช‰เชฎเซ‡เชฐเซ€เช:

host    all             gitlab               10.0.0.4/24             md5

เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             postgres                                     md5

# IPv4 local connections:
host    all             postgres             127.0.0.1/32            md5
host    all             gitlab               10.0.0.4/24             md5

เช…เชจเซ‡ เช…เช‚เชคเซ‡, เช…เชฎเซ‡ postgresql เชธเซ‡เชตเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เช เช›เซ€เช:

systemctl restart postgresql-12.service

GitLab เชกเซ‡เชŸเชพเชฌเซ‡เช เชจเชฟเช•เชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชšเชพเชฒเซ‹ GitLab เชธเชฐเซเชตเชฐ เชชเชฐ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฌเซ‡เช•เช…เชช เช•เชฐเซ€เช:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql

เชฌเซ‡เช•เช…เชช /tmp เชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏเซ‹:

ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql

เชšเชพเชฒเซ‹ เช† เชจเช•เชฒเชจเซ‡ PostgreSQL เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเซ€เช:

scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql                                                                               100%  835KB  50.0MB/s   00:00

PostgreSQL เชฎเชพเช‚ "internal-gitlab.sql" เชจเซ‡ เช†เชฏเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

PostgreSQL เชฎเชพเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เช เช†เชฏเชพเชค เช•เชฐเซ‹:

sudo -u postgres psql -f /tmp/internal-gitlab.sql

เชคเชชเชพเชธเซ‹ เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชนเชตเซ‡ PostgreSQL เชฎเชพเช‚ เช›เซ‡:

sudo -u postgres psql -l

เชจเซ€เชšเซ‡เชจเซ€ เชฒเซ€เชŸเซ€ เชฆเซ‡เช–เชพเชตเซ€ เชœเซ‹เชˆเช:

gitlabhq_production | gitlab   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

GitLab เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

PostgreSQL เชฎเชพเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เช เช†เชฏเชพเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชเช• gitlab เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชคเชฎเชพเชฐเซ‡ เช† เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‹ เชชเชพเชธเชตเชฐเซเชก เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชชเชพเชธเชตเชฐเซเชก เชฌเชฆเชฒเชตเซ‹:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ะŸะะ ะžะ›ะฌ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE

เชชเช›เซ€, GitLab เชธเชฐเซเชตเชฐ เชชเชฐ, /etc/gitlab/gitlab.rb เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชฎเชพเช‚, เช…เชฎเซ‡ เชฌเชพเชนเซเชฏ PostgreSQL เชจเซ‹ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชธเซ‚เชšเชตเซ€เชถเซเช‚.

เชšเชพเชฒเซ‹ gitlab.rb เชซเชพเช‡เชฒเชจเซ€ เชฌเซ‡เช•เช…เชช เช•เซ‹เชชเซ€ เชฌเชจเชพเชตเซ€เช:

cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig

เชนเชตเซ‡ เช† เชฒเซ€เชŸเซ€เช“เชจเซ‡ gitlab.rb เชซเชพเชˆเชฒเชจเชพ เช…เช‚เชคเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ‹:

# ะžั‚ะบะปัŽั‡ะธั‚ัŒ ะฒัั‚ั€ะพะตะฝะฝั‹ะน PostgreSQL.
postgresql['enable'] = false

# ะ”ะฐะฝะฝั‹ะต ะดะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ะฒะฝะตัˆะฝะตะน ะฑะฐะทะต. ะฃะบะฐะทั‹ะฒะฐะนั‚ะต ัะฒะพะธ.
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_host'] = '10.0.0.2'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = '******'

เชซเชพเช‡เชฒ เชธเชพเชšเชตเซ‹ /etc/gitlab/gitlab.rb เช…เชจเซ‡ GitLab เชชเซเชจเชƒเชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ‹:

gitlab-ctl reconfigure && gitlab-ctl restart

เช†เชŸเชฒเซเช‚ เชœ :)

เชฎเซ‹เชŸเซ€ เชตเชฟเชจเช‚เชคเซ€. เชœเซ‹ เชคเชฎเซ‡ เชฎเชพเชˆเชจเชธ เชฎเซ‚เช•เซ‹ เช›เซ‹, เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เช•เชพเชฐเชฃ เชฒเช–เซ‹.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹