环境说明
系统版本 CentOS 7.2 x86_64(较新版本的gitlab集成了更多功能,顺利运行起来的硬件要求较高,这里给了3G内存)
软件版本 gitlab-ce-10.8.4
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
1、安装
Gitlab的rpm包集成了它需要的软件,简化了安装步骤,所以直接安装rpm包即可,rpm包的获取从官方网站或者国内镜像源(如:清华https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/)获取,gitlab又分为社区版和企业版(收费),这里部署的是社区版本10.8.4
[root@gitlab ~]# mkdir -p /service/tools
[root@gitlab ~]# cd /service/tools/
[root@gitlab tools]# yum localinstall -y gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm #安装下载好的rpm包
或者
[root@gitlab ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm #执行rpm -ivh 在线安装
安装完成后出现上面的提示,按照提示修改配置文件中的url地址为本地服务器的地址
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.5'
[root@gitlab tools]# gitlab-ctl reconfigure #重新加载配置
[root@gitlab tools]# gitlab-ctl stop #停止gitlab,进行后面的汉化
[root@gitlab tools]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
10.8.4 #查看版本
或
[root@gitlab tools]# rpm -qa gitlab-ce
gitlab-ce-10.8.4-ce.0.el7.x86_64 #查看版本
[root@gitlab tools]# ls /opt/gitlab/ #相关目录
bin embedded init LICENSES sv version-manifest.json
dependency_licenses.json etc LICENSE service var version-manifest.txt
[root@gitlab tools]# ls /var/opt/gitlab #相关目录
alertmanager git-data gitlab-shell node-exporter public_attributes.json
backups gitlab-ci gitlab-workhorse postgres-exporter redis
bootstrapped gitlab-monitor logrotate postgresql trusted-certs-directory-hash
gitaly gitlab-rails nginx Prometheus
2、汉化
默认的全英文界面对于英文水平低的来讲当然用着很不舒服,于是便需要来一波操作进行汉化,英文好的请自觉忽略
GitLab中文社区的项目,v7-v8.8是由Larry Li发起的"GitLab中文社区版项目"(https://gitlab.com/larryli/gitlab),从v8.9之后由@xhang开始继续汉化项目(https://gitlab.com/xhang/gitlab)
[root@gitlab tools]# pwd
/service/tools
[root@gitlab tools]# mkdir /backup
[root@gitlab tools]# cp /opt/gitlab/embedded/service/gitlab-rails/* /backup #防止汉化失败,备份原文件
[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git #下载最新的汉化包
汉化包的版本更新速度不得而知,所以尽量不要安装最新版本的gitlab。如果是要下载老版本的汉化包,需要加上老版本的分支,如果想下载10.0.2,可以运行如下语句
[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh
[root@gitlab tools]# ls #git下来的文件为gitlab
gitlab gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm
[root@gitlab tools]# \cp -rf gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ #拷贝文件
检验汉化
[root@gitlab tools]# gitlab-ctl reconfigure #加载配置(第一次执行此命令会启动,若只启动执行start)
启动时查看控制台输出,需要等待一段时间,无输出后启动完成,执行free -m命令查看到当前的内存使用情况为
[root@gitlab tools]# free -m
total used free shared buff/cache available
Mem: 2993 2123 156 62 713 597
Swap: 2047 0 2047
[root@gitlab tools]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9100 0.0.0.0:* LISTEN 4319/node_exporter
tcp 0 0 127.0.0.1:9229 0.0.0.0:* LISTEN 4628/gitlab-workhor
tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 4659/ruby
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4191/unicorn master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4223/nginx: master
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 4196/sidekiq 5.0.5
tcp 0 0 127.0.0.1:9236 0.0.0.0:* LISTEN 4642/gitaly
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1439/sshd
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 4223/nginx: master
tcp 0 0 0.0.0.0:6783 0.0.0.0:* LISTEN 4696/alertmanager
tcp 0 0 127.0.0.1:9121 0.0.0.0:* LISTEN 4425/redis_exporter
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 4681/prometheus
tcp 0 0 127.0.0.1:9187 0.0.0.0:* LISTEN 4710/postgres_expor
tcp 0 0 127.0.0.1:9093 0.0.0.0:* LISTEN 4696/alertmanager
tcp6 0 0 ::1:9168 :::* LISTEN 4659/ruby
tcp6 0 0 :::22 :::* LISTEN 1439/sshd
浏览器访问,第一次登录需要修改密码(不小于8位),汉化成功!!!
3、登录并进行基本操作
GitLab终端常用命令
gitlab-ctl start #启动所有 gitlab 组件;
gitlab-ctl stop #停止所有 gitlab 组件;
gitlab-ctl restart #重启所有 gitlab 组件;
gitlab-ctl status #查看服务状态;
gitlab-ctl reconfigure #启动服务;
vim /etc/gitlab/gitlab.rb #修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace #检查gitlab;
gitlab-ctl tail #查看日志;
修改密码后进行登录,登录的用户名为root
3.1 使用前可选操作
3.1.1 修改web端口
如果80和8080端口被占用可以修改
[root@gitlab tools]# vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:8080", :tcp_nopush => true
修改nginx端口
[root@gitlab tools]# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
listen *:80;
3.1.2 修改Prometheus端口
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.5:port' #根据需要修改端口
修改后需要重新加载配置并启动
登录使用
3.2 创建空白项目
选择项目路径,输入项目名称,项目描述,选择项目等级(私人的,内部的,公开的),这里测试时使用网上的开源java cms项目jeesns
创建项目成功,此时若客户端想使用该项目还需要建立与客户端的密钥文件以进行客户端对项目的操作
3.3 客户端生成密钥文件
[root@gitlab-client ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
07:f8:5c:75:83:aa:c2:a6:5c:25:d9:87:d0:4e:7a:1c root@gitlab-client
The key's randomart image is:
+--[ RSA 2048]----+
| . ..o |
| ..E ... . |
| .O.o.. |
| +oBoo |
| . +So. |
| = .. |
| . + . |
| o |
| |
+-----------------+
[root@gitlab-client ~]# cat .ssh/id_rsa.pub #查看公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI5yMQBjSftxN9PHg3ogCwaTxPNZ3n5+TZRwJZBKO5sQGNirAzNdq8wFwbUFqtFDqYFxU3mTBh5LG3Fk1Zh8R8abpzmHijP09gdgB4Ae31axRAPcngXss//flKQCSHoQlvwI+ZWozMGItmFMcmRCla4BTq/e3mVJuIdR8VQwSG32SeRqReZIrjbvsa8hp3D5nbLa5KWRiAuOj4OhPBwHOG8hx/wSnplyI8rtMayj6BjuczDdrZNotyv0IntxFZPoUQJ/+pN1azHGm6tI1TmKyh1lmmc5Tu0a7TxTf7Ve+P/srbxlqb7CWT168fZRzziglXcR5e2Ge7tNrkXo+dl2tf root@gitlab-client
将上面的公钥文件复制到gitlab中
ssh key添加完成
点击项目,查看项目的ssh地址及http地址
按照项目下面的提示进行简单配置
在客户端操作
git全局设置
[root@gitlab-client ~]# git config --global user.name "test" #配置使用Git仓库的人员姓名
[root@gitlab-client ~]# git config --global user.email "test@test.com" #配置使用Git仓库的人员email
设置后提交记录才会在gitlab上显示带名字的记录
[root@gitlab-client ~]# git config --list #检查配置信息
3.4 导入新项目文件到仓库
[root@gitlab-client ~]# cd /service/tools/jeesns/
[root@gitlab-client jeesns]# rm -rf .git #在网站下载的jeesns有.git目录,删除该目录
[root@gitlab-client jeesns]# git init #初始化仓库(创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干)
初始化空的 Git 版本库于 /service/tools/jeesns/.git/
[root@gitlab-client jeesns]# git remote add origin git@10.0.0.5:root/jeesns.git #添加远程项目地址(可从项目主页复制)
[root@gitlab-client jeesns]# git add . #将修改保存到索引区
[root@gitlab-client jeesns]# git commit -m "tijiao" #提交所有代码到本机的版本库
[root@gitlab-client jeesns]# git push -u origin master #将本地的更改提交到远程服务器
The authenticity of host '10.0.0.5 (10.0.0.5)' can't be established.
ECDSA key fingerprint is b7:9c:07:5c:a0:01:c3:00:50:f4:59:8e:e3:f5:f5:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.5' (ECDSA) to the list of known hosts.
Counting objects: 1932, done.
Compressing objects: 100% (1851/1851), done.
Writing objects: 100% (1932/1932), 37.69 MiB | 9.26 MiB/s, done.
Total 1932 (delta 283), reused 0 (delta 0)
remote: Resolving deltas: 100% (283/283), done.
To git@10.0.0.5:root/jeesns.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
此时查看项目,代码已经成功上传到gitlab
3.5 创建一个新的版本库
参照提示进行操作,首先在gitlab上创建新的版本库,接着客户端进行操作
git clone git@10.0.0.5:root/12345.git #将远程服务器项目的内容clone下来
cd 12345 #进入该项目的文件夹
touch README.md #新建readme文件
git add README.md #将新的文件添加到git的暂存区
git commit -m "add README" #将暂存区的文件提交到某一个版本保存下来,并加上注释
git push -u origin master #将本地的更改提交到远程服务器
git 中clone过来的时候,git不会对比本地和服务器的文件,也就不会有冲突,建议确定完全覆盖本地的时候用clone,不确定会不会有冲突的时候用git pull,将远程服务器的代码download下来
3.6 已存在git版本库
cd existing_repo
git remote rename origin old-origin #重命名
git remote add origin git@10.0.0.5:root/12345.git #添加远程项目地址
git push -u origin –all #上传
git push -u origin --tags #上传tag(分支)
3.7 基本操作总结及其他交互操作
git init //初始化
git add main.cpp //将某一个文件添加到暂存区
git add . //将文件夹下的所有的文件添加到暂存区
git commit -m 'note' //将暂存区中的文件保存成为某一个版本
git log //查看所有的版本日志
git status //查看现在暂存区的状况
git diff //查看现在文件与上一个提交-commit版本的区别
git reset --hard HEAD^ //回到上一个版本
git reset --hard XXXXX //XXX为版本编号,回到某一个版本
git pull origin master //从主分支pull到本地
git push -u origin master //从本地push到主分支
git pull //pull默认主分支
git push //push默认主分支
更多git命令可参考:https://www.yiibai.com/git/git_push.html
4、gitlab邮件功能配置
4.1 配置
以163邮箱为例
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '邮件用户名@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab CE'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "邮件用户名@163.com"
gitlab_rails['smtp_password'] = "邮件帐号的授权码"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
user['git_user_email'] = "邮件用户名@163.com"
[root@gitlab tools]# gitlab-ctl reconfigure #重新加载配置
qq邮箱配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "******@qq.com"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '******@qq.com'
4.2 邮箱测试
命令行测试:
执行 gitlab-rails console进入控制台
输入Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
命令行测试成功,可以在邮箱中查收
为用户添加一个邮箱
点击增加,并登陆邮箱查看,点击确认即可增加邮箱
忘记密码邮箱发送邮件测试
查看邮箱信息