在生产环境的部署,yum源的配置要相对麻烦一些,可以采用npm 来安装
1、配置yum源
vim /etc/yum.repos.d/gitlab-ce.repo
复制以下内容:
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
2、更新本地yum缓存
sudo yum makecache
3、安装GitLab社区版
sudo yum install gitlab-ce #自动安装最新版
sudo yum install gitlab-ce-x.x.x #安装指定版本
GitLab常用命令
注意,gitlab-ctl start 不是启动gitlab服务,只是启动所有的组件!
gitlab-ctl reconfigure 的时间有点久,要等一下,等到reconfigure完之后就可以打开gitlab
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;
GitLab使用
1、在浏览器的地址栏中输入ECS服务器的公网IP即可登录GitLab的界面,第一次登录使用的用户名和密码为 root 和 5iveL!fe。
我这里遇到一个问题,他报了502错误。可能是虚拟机资源不够,另外访问不用加端口,也就是80端口就可以访问。应该是可以设置端口。
在生产环境中发现,密码不对!果然有些教程还是有水分的,然后用了一套修改密码的方法:
获得用户数据,修改用户密码
[root@svr34 bin]# gitlab-rails console production
Loading production environment (Rails 4.2.5.2)
irb(main):001:0> user = User.where(id: 1).first
=> #
=> 12345678
irb(main):003:0> user.password_confirmation=12345678
=> 12345678
irb(main):004:0> user.save!
=> true
irb(main):005:0> quit
这样就可以将root密码改为12345678
2、首次登录会强制用户修改密码。密码修改成功后,输入新密码进行登录。
创建了一个test仓库后,看看链接:
并不是本机ip,这里需要修改配置文件:
vim /etc/gitlab/gitlab.rb
将这一段的ip改成服务器的就行了,192.168.0.1:8888
另外,企业的80端口一般是比较重要的,不会专门给到gitlab 80端口,因此我们还要修改gitlab的端口设置:
同样这个文件,找到linsten_port这一行:
修改端口:
之后重新reconfigure,这里要注意一点,就是gitlab reconfigure后需要等一段时间再访问,一分钟大概就可以。
针对防火墙(iptables),这么设置就可以了:
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
service iptables restart
Gitlab默认语言是英文,对于想加强英文的同学,建议继续使用英文,但要求使用中文,这里需要下载一个汉化包
下载最新的汉化包:
[root@gitlab ~]# git clone https://gitlab.com/xhang/gitlab.git
如果要下载指定版本的汉化包,需要加上版本号。
例:下载10.5.1,命令如下:
[root@gitlab ~]# git clone https://gitlab.com/xhang/gitlab.git -b v10.5.1-zh
下载完成后,将下载的文件夹内容复制到gitlab目录下
复制前先停止Gitlab
[root@gitlab ~]# gitlab-ctl stop
ok: down: gitaly: 0s, normally up
ok: down: gitlab-monitor: 0s, normally up
ok: down: gitlab-workhorse: 1s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 1s, normally up
ok: down: node-exporter: 0s, normally up
ok: down: postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 1s, normally up
[root@gitlab ~]# cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
复制时可能不断提示是否要覆盖,这时可能是系统每次执行cp命令时,其实是执行了cp -i命令的别名。出现这种情况可以修改~/.bashrc,在“alias cp=’cp -i’”前加#注释,再刷新文件 source ~/.bashrc
在复制过程中提示,以下信息是正常的
复制完成后,需要重新加载配置,并启动Gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
...
... ...
... ... ...
... ... ... ...
...
Running handlers:
Running handlers complete
Chef Client finished, 2/516 resources updated in 09 seconds
gitlab Reconfigured!
[root@gitlab ~]# gitlab-ctl restart
ok: run: gitaly: (pid 42828) 0s
ok: run: gitlab-monitor: (pid 42852) 0s
ok: run: gitlab-workhorse: (pid 42858) 0s
ok: run: logrotate: (pid 42867) 0s
ok: run: nginx: (pid 42874) 0s
ok: run: node-exporter: (pid 42879) 0s
ok: run: postgres-exporter: (pid 42884) 1s
ok: run: postgresql: (pid 42894) 0s
ok: run: prometheus: (pid 42897) 0s
ok: run: redis: (pid 42907) 0s
ok: run: redis-exporter: (pid 42912) 1s
ok: run: sidekiq: (pid 42997) 0s
ok: run: unicorn: (pid 43007) 0s
[root@gitlab ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 42874 root 7u IPv4 125185 0t0 TCP *:http (LISTEN)
nginx 42875 gitlab-www 7u IPv4 125185 0t0 TCP *:http (LISTEN)
[root@gitlab web-demo]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bundle 40358 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
bundle 40650 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
bundle 40652 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
再次访问web界面,显示的已经为汉化熟悉的中文
1、安装Git工具linux:安装Git,使用自带的源安装。
yum install git
2、生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub。
3.在GitLab的主页中新建一个Project
4.添加ssh key导入步骤2中生成的密钥文件内容:
ssh key添加完成:
项目地址,该地址在进行clone操作时需要用到:
简单配置
1、配置使用Git仓库的人员姓名(以上海驻云为例)
git config --global user.name "上海驻云"
2、配置使用Git仓库的人员email,填写自己的公司邮箱
git config --global user.email "[email protected]"
3、克隆项目,在本地生成同名目录,并且目录中会有所有的项目文件
git clone git@iZbp1h7fx16gkr9u4gk8v3Z:root/test.git
上传文件
1、进入到项目目录
cd test/
2、创建需要上传到GitLab中的目标文件
echo “test” > /root/test.sh
3、将目标文件或者目录拷贝到项目目录下
cp /root/test.sh ./
4、将test.sh文件加入到索引中
git add test.sh
5、将test.sh提交到本地仓库
git commit -m “test.sh”
6、将文件同步到GitLab服务器上
git push -u origin master
7、在网页中查看上传的test.sh文件已经同步到GitLab中
什么情况下需要配置邮箱服务?
有合并请求时,邮件通知
账号注册时,邮件验证
修改密码时,通过邮件修改
ok,接下来试试自己设置一个gitlab邮件服务
不建议使用163邮箱,发几次之后,就不能发送
过程概述:设置--》账户--》smtp--》密保验证--》验证成功返回一串字符串,形状如(ausdixersybgcgid)
保存返回的字符串
在qq邮箱的首页找到设置:
之后在设置中找到账户
在账户中找到smtp部分,开启相关服务
设置成功后,会有一串字符形状如(ausdixersybgcgid)
vim /etc/gitlab/gitlab.rb
按/后输入smtp_enable,找到下面这一串文本,进行修改:
改成:
改的具体内容参照如下:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "开通smtp时返回的字符"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
接下来修改成自己的qq邮箱:
user['git_user_email'] = "[email protected]"
gitlab_email_from同样的处理:
gitlab_rails['gitlab_email_from'] = '[email protected]'
按esc退出到命令行模式
之后:wq 保存并退出
gitlab-ctl reconfigure
gitlab-rails console
Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now
按回车,测试发送。
gitlab一开始的注册,只要注册了就可以成功。
因此需要进行设置,进入root账号:
找到settings:
在sign up setting中进行设置:
这个功能就可以设置email认证或者是否能够进行注册了,我直接取消了注册。
如果选择 send confirmaition email 则会发送一个确认信息给邮件
点击groups
创建一个组(new group):
输入组的名字:test1
注意一个可视程度的设置:
private就是组内可见的意思
internal,登录可见
public,不登录就可见,当然企业一般不会用这个
确认即可
另外在member里可以设置group有哪些成员
注意组员身份有这几种:
Guest是游客身份,只能发表评论之类,不能读写我们的项目库
Reporter可以克隆项目,但是不能做项目的提交。
下面的权限依次增大。owner可以删除项目
new 一个project就可以,和github很类似。
注意一点,project也有private权限。
至于设置ssh和github方法是一样的。
其实也是和github一致的,一般开发有主分支(master)、测试分支(test)和开发分支(dev)三条分支。
一般是要保护master分支准确无误。也就是dev分支先通过测试分支通过后合并到master分支。
可以在project setting 中找到 保护分支:
参考文章: https://yq.aliyun.com/articles/74395