GitLab简介及docker安装
Gitlab简介
https://docs.gitlab.cn/jh/index.html
简介
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
2、gitlab与github的区别
1)github是分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装。
2)gitlab是分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装。
3、git和svn区别
1)git 是分布式的,svn 是中心式的。
2)git 分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看 log。
3)GIT 分支和 SVN 的分支不同:分支在 SVN 中实际上是版本库中的一份 copy,而 git 一个仓库是一个快照,所以 git 切换、合并分支等操作更快速。
4、gitlab的优势
开源免费,社区免费版本适合中小型公司;
差异化的版本管理,离线同步以及强大分支管理功能;
便捷的GUI操作界面以及强大账户权限管理功能;
集成度很高,能够集成绝大多数的开发工具;
支持内置HA,保证在高并发下仍旧实现高可用性。
5、gitlab主要服务构成
GitLab由主要由以下服务构成,他们共同承担了Gitlab的运作需要
nginx: 静态web服务器
gitlab-shell: 用于处理Git命令和修改authorized keys列表
gitlab-workhorse: 轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:HTTP服务,GitLab Rails应用是托管在这个服务器上面的。
6、gitlab的工作流程
创建并克隆项目
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!创建项目某Feature分支
编写代码并提交至该分支
推送该项目分支至远程Gitlab服务器
进行代码检查并提交Master主分支合并申请
项目领导审查代码并确认合并申请
gitlab相关命令
1 2 3 4 5 6 7 8 9 10 11 12 | gitlab-ctl start #启动全部服务 gitlab-ctl restart#重启全部服务 gitlab-ctl stop #停止全部服务 gitlab-ctl restart nginx #重启单个服务,如重启nginx gitlab-ctl status #查看服务状态 gitlab-ctl reconfigure #使配置文件生效 gitlab-ctl show-config #验证配置文件 gitlab-ctl uninstall #删除gitlab(保留数据) gitlab-ctl cleanse #删除所有数据,从新开始 gitlab-ctl tail <service name>查看服务的日志 gitlab-ctl tail nginx #如查看gitlab下nginx日志 gitlab-rails console #进入控制台 |
gitlab常用组件
nginx:静态Web服务器
gitlab-shell:用于处理Git命令和修改authorized keys列表,gitlab是以Git为底层的,操作实际上最后就是调用gitlab-shell命令进行处理。
gitlab-workhorse:轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:GitLab Rails应用是托管在这个服务器上面的
查看服务状态:gitlab-ctl status,可以看到gitlab的依赖组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | root@gitlab1:~# gitlab-ctl status run: alertmanager: (pid 431) 4452s; run: log: (pid 335) 4453s run: gitaly: (pid 384) 4452s; run: log: (pid 345) 4453s run: gitlab-exporter: (pid 6057) 2029s; run: log: (pid 337) 4453s run: gitlab-kas: (pid 353) 4453s; run: log: (pid 341) 4453s run: gitlab-workhorse: (pid 367) 4453s; run: log: (pid 347) 4453s run: grafana: (pid 461) 4452s; run: log: (pid 340) 4453s run: logrotate: (pid 8655) 852s; run: log: (pid 346) 4453s run: nginx: (pid 378) 4453s; run: log: (pid 348) 4453s run: postgres-exporter: (pid 350) 4453s; run: log: (pid 338) 4453s run: postgresql: (pid 6573) 1867s; run: log: (pid 342) 4453s run: prometheus: (pid 376) 4453s; run: log: (pid 343) 4453s run: puma: (pid 6418) 1964s; run: log: (pid 344) 4453s run: redis: (pid 425) 4452s; run: log: (pid 349) 4453s run: redis-exporter: (pid 352) 4453s; run: log: (pid 336) 4453s run: sidekiq: (pid 6051) 2029s; run: log: (pid 339) 4453s run: sshd: (pid 36) 4479s; run: log: (pid 35) 4479s |
gitlab安装目录
以下是gitlab常用的默认安装目录
gitlab组件日志路径:/var/log/gitlab
gitlab配置路径:/etc/gitlab/ 路径下有gitlab.rb配置文件
应用代码和组件依赖程序:/opt/gitlab
各个组件存储路径: /var/opt/gitlab/
仓库默认存储路径 /var/opt/gitlab/git-data/repositories
版本文件备份路径:/var/opt/gitlab/backups/
nginx安装路径:/var/opt/gitlab/nginx/
redis安装路径:/var/opt/gitlab/redis
主要配置文件目录
主配置文件: /etc/gitlab/gitlab.rb
文档根目录: /opt/gitlab
默认存储库位置: /var/opt/gitlab/git-data/repositories
Nginx配置文件: /var/opt/gitlab/nginx/conf/gitlab-http.conf
Postgresql数据目录: /var/opt/gitlab/postgresql/data
gitlab的数据库信息
1 2 3 | gitlab-pg-ctl status gitlab-pg-ctl start gitlab-pg-ctl stop |
postgresql 用户:gitlab-psql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | root@gitlab:/var/opt/gitlab/postgresql/data# cat /etc/passwd |grep gitlab git:x:998:998::/var/opt/gitlab:/bin/sh gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh registry:x:993:993::/var/opt/gitlab/registry:/bin/sh gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh root@gitlab:/var/opt/gitlab/postgresql/data# gitlab-psql psql (13.6) Type "help" for help. gitlabhq_production=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------------+-------------+----------+---------+---------+--------------------------------- gitlabhq_production | gitlab | UTF8 | C.UTF-8 | C.UTF-8 | postgres | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 | template0 | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 | =c/"gitlab-psql" + | | | | | "gitlab-psql"=CTc/"gitlab-psql" template1 | gitlab-psql | UTF8 | C.UTF-8 | C.UTF-8 | =c/"gitlab-psql" + | | | | | "gitlab-psql"=CTc/"gitlab-psql" (4 rows) root@gitlab:/opt/gitlab/bin# gitlab-psql psql (13.6) Type "help" for help. gitlabhq_production=# show port; port ------ 5432 (1 row) gitlabhq_production=# exit root@gitlab:/var/opt/gitlab/postgresql/data# which gitlab-psql /opt/gitlab/bin/gitlab-psql root@gitlab:/var/opt/gitlab/postgresql/data# cd /opt/gitlab/bin/ root@gitlab:/opt/gitlab/bin# ll total 48 drwxr-xr-x 2 root root 4096 Jun 8 05:58 ./ drwxr-xr-x 1 root root 4096 Jun 20 06:58 ../ -rwxr-xr-x 1 root root 3679 Jun 8 05:24 gitlab-backup* -rwxr-xr-x 1 root root 1418 Jun 8 05:24 gitlab-ctl* -rwxr-xr-x 1 root root 722 Jun 8 05:24 gitlab-geo-psql* -rwxr-xr-x 1 root root 250 Jun 8 05:24 gitlab-healthcheck* -rwxr-xr-x 1 root root 702 Jun 8 05:24 gitlab-psql* -rwxr-xr-x 1 root root 1288 Jun 8 05:24 gitlab-rails* -rwxr-xr-x 1 root root 1287 Jun 8 05:24 gitlab-rake* -rwxr-xr-x 1 root root 849 Jun 8 05:24 gitlab-redis-cli* -rwxr-xr-x 1 root root 1287 Jun 8 05:24 gitlab-ruby* root@gitlab:/opt/gitlab/bin# su - gitlab-psql $ psql -h /var/opt/gitlab/postgresql -d gitlabhq_production psql (13.6) Type "help" for help. gitlabhq_production=# select * from identities; id | extern_uid | provider | user_id | created_at | updated_at | secondary_extern_uid | saml_provider_id ----+------------+----------+---------+------------+------------+----------------------+------------------ (0 rows) |
双主同步
https://www.jianshu.com/p/d94d9f1cf744
postgresql同步虽然可以按博主的方法实现,但是从gitlab是无法登录的,会报错: 500 Whoops, something went wrong on our end, 经过检查,是因为从库同步时,表为只读,而登录时是需要update 用户登录表的,因此就直接报错无法登录,解决办法是把postgresql 同步关掉,不要用同步功能,这个postgresql根本不需要实时同步,只需要每天凌晨执行 ./pg_basebackup -h 192.168.1.9 -p 5432 -U gitlab_replicator -F p -P -D /var/opt/gitlab/postgresql/data/ 过来后,重启postgresql即可,这里面数据不大,没必要做成主从同步,这样gitlab就可以登录了。总之,博主的文档很细,只是把postgresql同步改进一下就可以了。谢谢。
另外,可以OGG或burcardo,参考:https://www.xmmup.com/shiyongogg-for-pgweifuwukuaisushuangxiangtongburdsshujukushuangzhu.html
https://www.xmmup.com/shiyongbucardodajianpgdeshuangzhu.html
另外,多个gitlab可以使用同一个PostgreSQL数据库。
使用外部 PostgreSQL 服务配置 GitLab
https://docs.gitlab.cn/omnibus/settings/database.html
在
/etc/gitlab/gitlab.rb
文件中,为您的外部 PostgreSQL 服务配置与 GitLab 应用服务器连接的适当细节:12345678# Disable the bundled Omnibus provided PostgreSQLpostgresql['enable'] = false# PostgreSQL connection detailsgitlab_rails['db_adapter'] = 'postgresql'gitlab_rails['db_encoding'] = 'unicode'gitlab_rails['db_host'] = '10.1.0.5' # IP/hostname of database servergitlab_rails['db_password'] = 'DB password'重新配置以使更改生效:
1sudo gitlab-ctl reconfigure
docker安装使用
官网:https://docs.gitlab.cn/jh/install/docker.html
1 2 3 4 5 6 7 8 9 10 11 | -- 创建实例 docker run --detach \ --hostname gitlab.example.com \ --publish 3443:443 --publish 380:80 --publish 322:22 \ --name gitlab \ --restart always \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:latest -- 密码 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password |
登陆:http://192.168.1.35:380/users/sign_in
使用root和初始密码登陆就行。
支持Markdown