Centos 安装GitLab(从零开始配置)

pic

前言

上周末公司说要搭建一个Gitlabe用来管理代码,于是自己就开始琢磨了,其中配置邮件这里踩了一个坑,被坑了两天时间,现把搭建过程记录下来。

注意事项:

1.注意你的服务器需要2G以上内存(博主用的虚拟机,当时设置1G的内存然后就访问的时候报个502...)
2.Centos的版本是6.5的,用7.0的小伙伴可能部分有些不一样。

第一种方法

先下载Gitlabe-----Gitlab地址

博主使用的是虚拟机安装所以有远程桌面,这一步可以跳过。

如果链接远程桌面时,提示"远程桌面连接无法验证您希望连接的计算机的身份"
解决方法:
1. 通过连接管理终端功能连接进入云服务器。
2. 点击任务栏powershell,然后输入命令gpedit.msc,输入完成后回车,回车后会显示本地组策略编辑器。
3. 依次找到【计算机配置】->【管理模板】->【windows组件】->【远程桌面服务】->【远程桌面会话主机】->【安全】->【远程(RDP)连接要求使用指定的安全层】
4. 双击【远程(RDP)连接要求使用指定的安全层
5. 修改为已启用,安全层选择 rdp,最后点击应用确认
将系统防火墙打开HTTP和SSH访问
sudo yum install openssh-server
sudo yum install postfix (看情况来,如果你想用163,qq之类的发邮件可以不用执行这句)
sudo lokkit -s http -s ssh 
scp 待上传文件名 linux用户名@服务器IP:存放到服务器的哪个位置

比如:scp /Users/xxx/Downloads/gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm root@10.10.10.70:/home/soft/

也可以用Cyberduck 工具来上传文件

cd 到上传的Gitlabe的目录下,执行命令
rpm -i gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm

配置gitlab

sudo gitlab-ctl reconfigure

第二种方法

将系统防火墙打开HTTP和SSH访问

sudo yum install openssh-server
sudo yum install postfix (看情况来,如果你想用163,qq之类的发邮件可以不用执行这句)
sudo lokkit -s http -s ssh 
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

sudo yum install -y gitlab-ee

配置Gitlab

GitLab默认会占用80、8080和9090端口,如果你想安装Jenkins,会通到端口冲突,Jenkins默认也会使用8080端口,所以,这一步操作将会修改GitLab的默认端口为11000、11001和11002。

sudo vi /etc/gitlab/gitlab.rb

将:
external_url 'http://127.0.0.1'
修改为:
external_url 'http://<你的服务器地址或域名>:11000'

将:
unicorn['port'] = 8080
修改为:
unicorn['port'] = 11001

将:
prometheus['listen_address'] = 'localhost:9090'
修改为:
prometheus['listen_address'] = 'localhost:11002'

每次修改完时,记得要使用reconfigure命令重新配置

sudo gitlab-ctl reconfigure

PS:这里比较重要,如果你的Gitlab是搭建在Centos系统上的,需要开放上面的端口(因为Centos默认开放的端口只有22)

# 开放端口11000(记得还有11001和11002也要设置)
/sbin/iptables -I INPUT -p tcp --dport 11000 -j ACCEPT
# 将修改永久保存到防火墙中(不设置的话,下次重启上面的设置就会失效)
/etc/rc.d/init.d/iptables save
# 查看安装后的程序运行情况
sudo gitlab-ctl status

# 重启Gitlab服务
sudo gitlab-ctl restart

# 启动和关闭Gitlab
sudo gitlab-ctl start/stop

邮箱设置(下面这里需要注意的地方,就是要把#号去掉,默认有#这是被注释的)

PS :这里要说一个坑,就是在安装postfix后,你再去设置其他的邮箱是没有效果的,博主也没有试过两者并存。所以你可以执行yum list | grep postfix查看是否安装了postfix,如果安装了,你可以执行yum remove postfix进行删除

如果你在上面的设置中,选择了postfix发邮件,那么设置方法如下:

执行vi /etc/gitlab/gitlab.rb进入到配置文件,修改下面的参数

external_url 'http://<你的服务器地址或域名>:11000'

# gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'
# gitlab_rails['time_zone'] = 'UTC'

### Email Settings
 gitlab_rails['gitlab_email_enabled'] = true
 gitlab_rails['gitlab_email_from'] = 'gitlab@http://<你的服务器地址或域名>'
 gitlab_rails['gitlab_email_display_name'] = 'GitLab'
# gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'

设置完成后,重配postfix,执行sudo dpkg-reconfigure postfix 或者
sudo vi /etc/postfix/main.cf

执行gitlab-ctl tail实时查看所有执行日志,当然你也可以进入/var/log/maillog,查看log,想了解更多的postfix设置的点这里

163邮箱设置

### Email Settings
 gitlab_rails['gitlab_email_enabled'] = true
 
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.163.com"
 gitlab_rails['smtp_port'] = 25
 gitlab_rails['smtp_user_name'] = "xxxx@163.com"
 gitlab_rails['smtp_password'] = "这里填授权密码"
 gitlab_rails['smtp_domain'] = "163.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
 gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
 user['git_user_email'] = "xxxx@163.com"
 gitlab_rails['gitlab_email_from'] = "xxxx@163.com"

QQ企业邮箱设置

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "xxx@域名.com"
 gitlab_rails['smtp_password'] = "密码"
 gitlab_rails['smtp_domain'] = "域名.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
 gitlab_rails['smtp_openssl_verify_mode'] = 'none'
 user['git_user_email'] = "xxx@域名.com"
 gitlab_rails['gitlab_email_from'] = "xxx@域名.com"

上面两个邮箱的设置,参数user['git_user_email']gitlab_rails['gitlab_email_from']是手动添加上去的。在gitlab.rb里也是有这两个参数的,只不过是被注释了。

测试邮箱

// 进入控制台
gitlab-rails console
// 发送测试邮件
Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now

更多的邮箱设置点这里

其他设置

批量添加用户,下面是批量添加的脚本,复制就可用,也可以从这里下载
private_token可以从root用户Settings-->Account查到。

#!/bin/bash
#批量创建gitlab用户

url_path="http://<地址>/api/v4/users"
private_token="private_token"

userinfo=''
if [[ $# > 0 ]]
  then
  echo "路径:$1"
  userinfo=$1
else
  echo "~~~~~~~~~~~~请输入添加用户文件的地址~~~~~~~~~~~~~~~"
  read path
  userinfo=$path
fi

while read line
do
    password=`echo $line | awk '{print $1}'`
    mail=`echo $line | awk '{print $2}'`
    username=`echo $line | awk '{print $3}'`
    name=`echo $line | awk '{print $4}'`
    curl -d "password=$password&email=$mail&username=$username&name=$name&private_token=$private_token" "$url_path"

done <$userinfo

使用时,需要一个添加用户的text文件,格式如下:

12345678 test123@qq.com testname1 测试1
12345678 528634141@qq.com testname2 测试2

脚本使用,如下

sh /Users/xxx/Desktop/GitLabAddUser.sh

生成ssh

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

pbcopy < ~/.ssh/id_rsa.pub

安装过程中出现的问题:

1.在浏览器中访问GitLab出现502错误
原因:1.内存不足。2.修改了 gitlab.rb配置文件没有执行重新配置命令。
解决办法:1.检查系统的虚拟内存是否随机启动了,如果系统无虚拟内存,则增加虚拟内存,再重新启动系统。
2.使用sudo gitlab-ctl reconfigure重新配置。

2.80端口冲突
原因:Nginx默认使用了80端口。
解决办法:为了使Nginx与Apache能够共存,并且为了简化GitLab的URL地址,Nginx端口保持不变,修改Apache的端口为4040。这样就可以直接用使用ip访问Gitlab。而禅道则可以使用4040端口进行访问,像这样:xxx.xx.xxx.xx:4040/zentao。具体修改的地方在/etc/httpd/conf/httpd.conf这个文件中,找到Listen 80这一句并将之注释掉,在底下添加一句Listen 4040,保存后执行service httpd restart重启apache服务即可。

Listen 4040 

3.GitLab头像无法正常显示

原因:gravatar被墙

解决办法:

编辑 /etc/gitlab/gitlab.rb
将
#gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'
修改为:
gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'
然后在命令行执行:
sudo gitlab-ctl reconfigure 
sudo gitlab-rake cache:clear RAILS_ENV=production

4.EOFError: end of file reached
解决方法:

将
gitlab_rails['smtp_tls']  = false
修改为:
gitlab_rails['smtp_tls'] = true

其他问题

用户之前已经设置了其他的邮箱,修改邮箱后,发现原来的邮箱还是可以用的,你需要在Settings-->Emails里删除原来的邮箱。

Ps:最后有什么不明白的,可以在下方评论或私信博主。

参考文章:

https://segmentfault.com/a/1190000002722631

https://www.douban.com/note/640641236/

https://my.oschina.net/kylinq/blog/868590

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268