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 рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдпрд╛рдЪреА рдЕрдиреБрдорддреА рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдорд╛рдЭрд╛ GitLab рд╕рд░реНрд╡реНрд╣рд░ рдкрддреНрддрд╛ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛