一、服务器直接部署GitLab
1、下载GitLab
下载地址:https://mirror.tuna.tsinghua.edu.cn/
2、下载GitLab汉化包
汉化包地址:https://gitlab.com/xhang/gitlab
3、安装步骤
- 安装GitLab服务依赖包:https://about.gitlab.com/install/#centos-7
#安装邮箱等依赖包
[root@localhost ~]# sudo yum install -y curl policycoreutils-python openssh-server postfix wget
- 下载GitLab服务,安装GitLab服务
具体可以参照1步骤,在清华快速下载文件,然后本地安装
#本地安装可方便解决依赖问题
[root@localhost ~]# yum localinstall gitlab-ce-12.3.4-ce.0.el6.x86_64.rpm
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
- 配置GitLab服务,访问域名及邮箱
[root@localhost ~]# vi /etc/gitlab/gitlab.rb
#这里修改的是gitlab的url地址http://gitlab.xtank.com
external_url 'http://gitlab.xtank.com'
#配置邮箱
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com" #发送邮箱的smtp
gitlab_rails['smtp_port'] = 25 #目前大部分IDC 都封了25端口,需要配置465加密端口才可以发送邮件,这也是为什么不用postfix的原因,以下为阿里云企业邮配置(和腾讯企业邮相同):
gitlab_rails['smtp_user_name'] = "[email protected]" #发送邮箱地址
gitlab_rails['smtp_password'] = "xxxxxxxpassword" #发送邮箱的密码
gitlab_rails['smtp_domain'] = "163.com" #发送邮箱的后缀
gitlab_rails['smtp_authentication'] = :login #开启日志记录
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "[email protected]" #配置gitlab的配置的发信人
user["git_user_email"] = "[email protected]"
- 初始GitLab服务,启动GitLab服务
[root@localhost ~]# gitlab-ctl reconfigure
[root@localhost ~]# gitlab-ctl restart
[root@localhost ~]# gitlab-ctl status
若是windows系统需要配置域名,否则无法解析
- 访问GitLab服务,以及GitLab邮箱测试
#访问GitLab服务初始密码
初始用户名:root
初始密码:12345678
GitLab邮箱测试
#配置完成,并重新启动服务后执行命令
[root@localhost ~]# gitlab-rails console
irb(main):003:0> Notify.test_email('[email protected]','email title','邮箱测试').deliver_now
4、汉化GitLab
- 解包
[root@localhost ~]# tar -xvf gitlab-12-3-stable-zh.tar.gz
- 比较汉化版本与GitLab是否匹配
[root@localhost ~]# cat gitlab-12-3-stable-zh/VERSION
12.3.5
- 停止GitLab服务
[root@localhost ~]# gitlab-ctl stop
- 先备份,汉化失败后,可以及时恢复;
[root@localhost ~]#cp -r /opt/gitlab/embedded/service/gitlab-rails/* /home/my_gitlab_bak
- 查看别名alias
若出现下图,则执行下一步操作,若不修改别名,那么在复制的时候会不断提示覆盖信息。
修改后再重新登录。
vi ~/.bashrc
- 拷贝汉化包
[root@localhost ~]# \cp -rf gitlab-12-3-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
注意:在cp前加\后就不会用别名。
- 重新配置gitlab
[root@localhost ~]#gitlab-ctl reconfigure
- 重启gitlab
[root@localhost ~]#gitlab-ctl restart
- 访问服务
可以发现已经汉化,但有一部分任然没有汉化,这是因为设置的默认语言是英语,所以需要在这只栏进行设置。
5、存在问题
- Connection refused - connect(2) for "smtp.163.com" port 456
端口一开始填写为:456,这是不对的。163邮箱的端口是25.
- User has no permission
登陆163邮箱,开启SMTP服务。
- 535 Error: authentication failed
# 用户名或密码不正确,注意这里的是163邮箱的“客户端授权密码 ”
[root@localhost ~]# vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_password'] = "xxpassword"
- 553 Mail from must equal authorized use
# 网易服务器smtp机器要求身份验证帐号和发信帐号必须一致
#修改gitlab配置
[root@localhost ~]# vi /etc/gitlab/gitlab.rb
gitlab_rails['gitlab_email_from'] = "[email protected]"
user["git_user_email"] = "[email protected]"
- 修改管理员密码
a、切换目录:cd /opt/gitlab/bin
b、执行 :sudo gitlab-rails console production 命令 开始初始化密码
c、在irb(main):001:0> 后面通过 u=User.where(id:1).first 来查找与切换账号(User.all 可以查看所有用户)
d、通过u.password='12345678'设置密码为12345678(这里的密码看自己喜欢):
e、通过u.password_confirmation='12345678' 再次确认密码
f、通过 u.save!进行保存(切记切记 后面的 !)
g、如果看到上面截图中的true ,恭喜你已经成功了,执行 exit 退出当前设置流程即可。
h、回到gitlab ,可以通过 root/12345678 这一超级管理员账号登录了
二、docker部署GitLab
https://www.jianshu.com/p/c99a40e5255d
1、使用Docker Compose安装
version: '2'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
restart: unless-stopped
hostname: 'gitlab.example.com'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
# 比如下面的电子邮件的配置:
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "[email protected]"
# gitlab_rails['smtp_password'] = "password"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['gitlab_email_from'] = '[email protected]'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- config:/etc/gitlab
- data:/var/opt/gitlab
- logs:/var/log/gitlab
volumes:
config:
data:
logs:
2、使用Docker命令启动
直接使用 docker 命令要比使用 docker-compose 繁琐一些,但是可以达到一样的效果。
首先,Docker 容器数据应该存储于卷中,在这里我们使用最简单的本地命名卷:
- gitlab-config 存储 GitLab 配置信息
- gitlab-data 存储数据库
- gitlab-logs 存储日志
然后,我们需要创建自定义网络,从而让容器运行于独立的网络中,区别于默认网桥。
docker network create gitlab-net
准备好后,开始运行 Gitlab 容器:
docker run -d \
--hostname gitlab.example.com \
-p 80:80 \
-p 443:443 \
-p 22:22 \
--name gitlab \
--restart unless-stopped \
-v gitlab-config:/etc/gitlab \
-v gitlab-logs:/var/log/gitlab \
-v gitlab-data:/var/opt/gitlab \
--network gitlab-net \
twang2218/gitlab-ce-zh:11.1.4
如果需要进入容器修改配置文件,可以用 docker exec
命令进入容器:
$ docker exec -it gitlab bash
root@09f6e32c528c:/# vi /etc/gitlab/gitlab.rb
root@09f6e32c528c:/# gitlab-ctl reconfigure
Starting Chef Client, version 12.12.15
resolving cookbooks for run list: ["gitlab"]
三、删除GitLab
1、停止gitlab
gitlab-ctl stop
2、卸载gitlab
rpm -e gitlab-ce
3、查看gitlab进程
ps aux | grep gitlab
4、杀掉第一个进程
kill -9 18777
杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程
5、删除所有包含gitlab文件
find / -name gitlab | xargs rm -rf