【git】gitlab基本维护和使用
【git】gitlab基本维护和使用
基本介绍
GitLab是一个自托管的Git项目仓库,可以自己搭建个人代码管理的仓库,功能与github类似。
安装
下载 gitlab下载地址: https://about.gitlab.com/downloads/
安装依赖的包
| 1 2 3 4 5 6 7 8 9 10 11 |
sudo yum install curl-devel
sudo yum install expat-devel
sudo yum install gettext-devel
sudo yum install openssl-devel
sudo yum install zlib-devel
sudo yum install perl-devel
sudo yum install curl
sudo yum install openssh-server
sudo yum install openssh-clients
sudo yum install postfix
sudo yum install croniesudo yum install policycoreutils-python
|
Ubuntu系统使用apt-get方式安装依赖包。
使用gitlab官网的脚本安装
| 1 |
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
|
或者使用gitlab的yum安装gitlab
| 1 |
sudo yum install gitlab-ce
|
配置发邮件
| 1 2 3 |
yum install postfix
systemctl enable postfix
systemctl start postfix
|
安装完毕后,使用Web登录
进入gitlab的管理页面,进行常用的分组,工程,用户等功能点的维护。
安装完gitlab后的运维操作
初次配置服务
| 1 |
sudo gitlab-ctl reconfigure
|
启动服务
| 1 |
sudo gitlab-ctl start
|
停止服务
| 1 |
sudo gitlab-ctl stop
|
重启服务
| 1 |
sudo gitlab-ctl restart
|
备份仓库
先修改 /etc/gitlab/gitlab.rb
配置要备份的路径,然后重新执行命令sudo gitlab-ctl reconfigure,做重新配置更新。
执行如下命令,创建备份
| 1 |
sudo gitlab-rake gitlab:backup:create
|
创建备份是会显示如下信息(会依次备份gitlab上的分组和所有的工程)。
备份文件个格式:Unix时间戳_gitlab_backup.tar,例如下面做的一个备份文件举例。
备份的仓库恢复
| 1 |
gitlab-rake gitlab:backup:restore BACKUP=1483198680
|
恢复时,选择的版本就是备份是产生的Unix时间戳。
注:恢复时,先停掉服务,以免双写导致数据错误。
修改配置/etc/gitlab/gitlab.rb文件
修改数据文件目录
| 1 2 |
查到git_data_dir配置信息,增加
git_data_dir "/data/gitlab-data"
|
修改备份目录
| 1 |
gitlab_rails['backup_path'] = "/data/gitlab-data/backups"
|
配置邮箱
| 1 2 3 4 5 6 7 8 9 10 11 |
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "your.smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "your.smtp user"
gitlab_rails['smtp_password'] = "your.smtp password"
gitlab_rails['smtp_domain'] = "your.demain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
gitlab_rails['gitlab_email_from'] = 'gitlab@mail.domain.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@mail.domain.com'
|
修改git仓库的域名或IP
| 1 2 |
# external_url 'http://192.168.1.100' #替换 #修改成域名访问
external_url 'http://gitlab.your.com'
|
检查服务的日志信息
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 检查redis的日志
sudo gitlab-ctl tail redis
# 检查postgresql的日志
sudo gitlab-ctl tail postgresql
# 检查gitlab-workhorse的日志
sudo gitlab-ctl tail gitlab-workhorse
# 检查logrotate的日志
sudo gitlab-ctl tail logrotate
# 检查nginx的日志
sudo gitlab-ctl tail nginx
# 检查sidekiq的日志
sudo gitlab-ctl tail sidekiq
# 检查unicorn的日志
sudo gitlab-ctl tail unicorn
|
检查服务状态
| 1 |
sudo gitlab-ctl status
|
一般服务状态显示信息
显示格式:
状态 : 进程名称:(进程ID)运行时间(秒);进程的日志服务进程和运行时间
| 1 2 3 4 5 6 7 |
run: gitlab-workhorse: (pid 11892) 281s; run: log: (pid 8630) 4742472s
run: logrotate: (pid 11904) 280s; run: log: (pid 8631) 4742472s
run: nginx: (pid 11911) 280s; run: log: (pid 8796) 4742455s
run: postgresql: (pid 12866) 18s; run: log: (pid 8627) 4742472s
run: redis: (pid 11989) 249s; run: log: (pid 8638) 4742472s
run: sidekiq: (pid 12850) 20s; run: log: (pid 8634) 4742472s
run: unicorn: (pid 12022) 247s; run: log: (pid 8629) 4742472s
|
| 状态 | 说明 |
| run | 运行状态 |
| down | 服务停止 |
常见的问题
1. 页面显示500,Whoops, something went wrong on our end.
| 1 2 3 4 5 6 7 |
500
Whoops, something went wrong on our end.
Try refreshing the page, or going back and attempting the action again.
Please contact your GitLab administrator if this problem persists.
|
如何检查和定位问题?
使用命令检查所有服务的状态
| 1 |
sudo gitlab-ctl status
|
检查服务状态如下
| 1 2 3 4 5 6 7 |
run: gitlab-workhorse: (pid 11892) 91s; run: log: (pid 8630) 4742282s
run: logrotate: (pid 11904) 90s; run: log: (pid 8631) 4742282s
run: nginx: (pid 11911) 90s; run: log: (pid 8796) 4742265s
down: postgresql: 1s, normally up, want up; run: log: (pid 8627) 4742282s
run: redis: (pid 11989) 59s; run: log: (pid 8638) 4742282s
run: sidekiq: (pid 12201) 2s; run: log: (pid 8634) 4742282s
run: unicorn: (pid 12022) 57s; run: log: (pid 8629) 4742282s
|
定位问题
从服务状态信息中显示数据库postgresql的状态是down,即服务停止。
检查数据库postgresql的运行日志,检查出现什么错误?
| 1 2 3 4 5 6 7 8 |
$ sudo gitlab-ctl tail postgresql
==> /var/log/gitlab/postgresql/state <==
==> /var/log/gitlab/postgresql/current <==
2016-12-24_01:39:39.00188 FATAL: data directory "/var/opt/gitlab/postgresql/data" has group or world access
2016-12-24_01:39:39.00190 DETAIL: Permissions should be u=rwx (0700).
2016-12-24_01:39:40.00698 FATAL: data directory "/var/opt/gitlab/postgresql/data" has group or world access
2016-12-24_01:39:40.00700 DETAIL: Permissions should be u=rwx (0700).
|
日志显示,数据库的访问权限应该是只有用户本身有读写执行的权限,用户组和其他用户不能有权限。
修改数据库数据的权限后,检查服务运行正常。
了解了问题的定位和解决方式,其他问题也很容易在日志中发现和解决,问题可能是磁盘空间少,用户权限错误或者其他原因。
2. gitlab管理员密码忘记,怎么重置密码
Gitlab 修改root用户密码
使用rails工具打开终端
| 1 |
sudo gitlab-rails console production
|
查询用户的email,用户名,密码等信息,id:1 表示root账号
| 1 |
user = User.where(id: 1).first
|
重新设置密码
| 1 2 |
user.password = '新密码'
user.password_confirmation = '新密码'
|
保存密码
| 1 |
user.save!
|
完整的操作ruby脚本
| 1 2 3 4 |
user = User.where(id: 1).first
user.password = '新密码'
user.password_confirmation = '新密码'
user.save!
|
然后使用重置过的密码重新登录。
Done.