GitLab 非常适合代码协作,但我发现它在我写作时对我非常有用。 我用它来跟踪修订和我的总体工作。
但由于我喜欢修补,所以我没有停止在虚拟机上安装 Gitlab CE – 这太简单了。
我选择了合适的 GitLab CE 服务器设置,其中包含单独的 PostgreSQL 数据库服务器和用于故障转移的副本。
在本教程中,我将与您分享相同的设置:
- 在系统上设置 GitLab 服务器
- 外部 PostgreSQL 作为另一台服务器上 GitLab 的主数据库
- 将 PostgreSQL 副本服务器设置为故障转移模式,以便在主数据库丢失或损坏时,副本服务器可以接管
正如您可以想象的那样,该设置需要三台服务器,一台用于主 GitLab 应用程序,一台用于主数据库,一台用于副本。
我将在这个项目中使用 Linode。 您还可以使用 DigitalOcean。 新用户可获得 60 天 100 美元的免费积分。
第1步:安装Gitlab CE
与要安装 GitLab 的服务器建立 SSH 连接。
在安装新软件包之前,最好刷新软件包缓存并更新软件包。
sudo apt update && sudo apt upgrade -y
如果您想知道,额外的 -y
如果您需要手动确认更新过程的开始,则会在末尾自动输入“y”。
接下来,安装依赖包。 您可能已经拥有其中一些软件包。
sudo apt install -y ca-certificates curl lsb-release openssh-server tzdata
debian-archive-keyring apt-transport-https software-properties-common -y
让我们将 GitLab 存储库添加到您的系统中,以便它可以直接从 GitLab 提取包。 有一种特别的 Shell为您完成这一切的脚本。
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
安装 Gitlab Community Edition,这意味着您自己托管 GitLab:
sudo apt install gitlab-ce
编辑Gitlab配置文件以设置主机名和其他参数:
sudo nano /etc/gitlab/gitlab.rb
external_url 'https://gitlab.xxx.com'
第2步:安装PostgreSQL
建立与用于数据库的服务器的 SSH 连接。
刷新包缓存并刷新系统:
sudo apt update && sudo apt upgrade -y
现在安装 PostgreSQL:
sudo apt install postgresql postgresql-contrib -y
确保 PostgreSQL 正在运行:
systemctl status postgresql
root@db1:~# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2023-08-18 16:37:09 UTC; 1h 19min ago
Process: 505 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 505 (code=exited, status=0/SUCCESS)
CPU: 736us
Aug 18 16:37:09 db1.cluster systemd[1]: Starting PostgreSQL RDBMS...
Aug 18 16:37:09 db1.cluster systemd[1]: Finished PostgreSQL RDBMS.
root@db1:~#
使 PostgreSQL 在启动时自动运行:
sudo systemctl enable postgresql
步骤3:配置主数据库
登录 PostgreSQL: postgres
安装期间自动为您创建的用户。
创建 PostgreSQL 将用于连接到副本的副本用户:
su postgres
psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'P@ssword321';
创建主数据库、用户和密码。 当然,请使用您能记住的强密码。
CREATE ROLE gitlab WITH SUPERUSER PASSWORD 'P@ssword321';
CREATE DATABASE gitlabprod;
ALTER DATABASE gitlabprod OWNER TO gitlab;
q
编辑那些 pg_hba.conf
文件输入 /etc/postgresql/xx/main
(将xx更改为适当的版本号):
sudo nano /etc/postgresql/13/main/pg_hba.conf
将此行附加到文件末尾:
host db_name db_user primary_gitlab_server_IP/32 md5
在主 GitLab 服务器上需要对其进行进一步更改 gitlab.rb
配置文件:
sudo nano /etc/gitlab/gitlab.rb
禁用由提供的捆绑综合总线
PostgreSQL postgresql['enable'] = false
PostgreSQL 连接详细信息:
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'unicode' gitlab_rails
['db_host'] = '10.1.0.5' # IP/hostname of database server
gitlab_rails['db_password'] = 'DB password'
返回数据库服务器编辑那些 postgresql.conf
文件并更改以下值:
sudo nano /etc/postgresql/xx/main/postgresql.conf
- 取消注释“listen”部分并将其从“localhost”更改为 *
- 改变那个
wal_level
从“副本”到“逻辑”的指令
在 GitLab 服务器上,重新配置 GitLab 以应用设置。 这大约需要 5 到 6 分钟。 :
gitlab-ctl reconfigure
更改默认密码。 您的用户名是 root。
gitlab-rake "gitlab:password:reset[root]"
步骤 4:配置副本服务器
建立与副本服务器的 SSH 连接。
刷新包缓存并刷新系统:
sudo apt update && sudo apt upgrade -y
现在安装 PostgreSQL:
sudo apt install postgresql postgresql-contrib -y
新安装的 PostgreSQL 将启动。 但是,您必须停止正在运行的服务器以准备与主数据库同步:
sudo systemctl stop postgresql
删除 PostgreSQL 数据目录中的所有当前文件:
sudo rm -rv /var/lib/postgresql/xx/main/
运行 pg_basebackup 将主数据库的数据传输到副本:
sudo pg_basebackup -h <ip of primary node> -U replica_user -X stream -C -S replica_1 -v -R -W -D /var/lib/postgresql/xx/main/
更正权限并将所有权授予正确的用户:
sudo chown postgres -R /var/lib/postgresql/14/main/
重新启动 PostgreSQL:
sudo systemctl start postgresql
在主数据库服务器上输入 psql
并运行此查询来测试:
SELECT client_addr, state
FROM pg_stat_replication;
如果结果是“Streaming’,现在将数据从主机复制到副本。 做得好!
你成功设置了吗?
整个过程需要时间和精力。 但对于经验丰富的系统管理员来说,这不应该构成太大的问题。
我试图列出我使用过的所有步骤。 但是,如果我错过了一个步骤或者您遇到任何问题,请在评论部分告诉我。