在centos6.5中安装 GitLab 全过程和问题记录
如果你想省事,使用最新版本的gitlab,请下载一键安装包,一键安装
脚本:https://bitnami.com/stack/gitlab/installer
下载后安装时候请查看README
readme:https://bitnami.com/stack/gitlab/README.txt
以下是编译安装,真TM麻烦
先秀下安装完成后的成果。
centos安装gitlab成果
开始之前
在开始之前请先查看官方的刚需文档: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md ,该文档说明了系统,软件和硬件等各方面的需求。详细的了解这些,可以避免碰到很多怪异的问题。
安装步骤总览
-
基础操作系统(CentOS 6.4 Minimal,升级后为6.5)
-
Ruby (版本: 2.0.0p353)
-
创建项目运行用户(创建git账号,方便权限管理)
-
GitLab Shell(版本:1.8.0)
-
GitLab(版本:6.3.1)
-
防火墙(iptables)
1、安装操作系统
这个比较简单,安装完成之后记的配置下网络,使其可以在启动时自动连接。而后需要升级系统和安装一些相应的软件和依赖包,以下逐一说明。
Tips:如果不能连接国外的网络,经常出现网络错误或者couldn’t not resolve host这样的错误,建议修改dns服务器为8.8.8.8和8.8.4.4。
a、升级操作系统和安装wget
$sudoyum-yupdate $sudoyum-yinstallwget
升级完成后,系统版本是6.5。
笔者注:和英文文档不同,笔者这里是先升级系统和安装wget,不然后面的操作会提示wget命令找到。
b、增加EPEL安装源
EPEL,即Extra Packages for Enterprise Linux,这个软件仓库里有很多非常常用的软件,而且是专门针对RHEL设计的,对RHEL标准yum源是一个很好的补充,完全免费使用,由Fedora项目维护,所以如果你使用的是RHEL,或者CentOS,Scientific等RHEL系的linux,可以非常放心的使用EPEL的yum源。
下载并安装GPG key
$sudowget-O/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6https://www.fedoraproject.org/static/0608B895.txt $sudorpm--import/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
检验下是否安装成功
$sudorpm-qagpg*
安装epel-release-6-8.noarch包
$sudorpm-Uvhhttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
提示:不要在意x86_64,在i686的机器上一样能使用。
c、增加PUIAS安装源
PUIAS Linux是面向桌面和服务器的完整的操作系统,它靠编译Red Hat Enterprise Linux的源代码包来创建。除了这些上游的软件包外,该项目还提供一些其他的软件仓库:“Addons”包含了通常的Red Hat发行中未收入的额外软件包,“Computational”提供专门针对科学计算的软件,“Unsupported”则收入各种各样的测试性软件 包。该发行由美国普林斯顿 大学的高等研究所维护。
创建/etc/yum.repos.d/PUIAS_6_computational.repo,并添加如下内容:
[PUIAS_6_computational] name=PUIAScomputationalBase $releasever- $basearchmirrorlist= $releasever/$basearch/mirrorlist #baseurl= $basearchgpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias
下载并安装GPG key
$sudowget-O/etc/pki/rpm-gpg/RPM-GPG-KEY-puiashttp://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias $sudorpm--import/etc/pki/rpm-gpg/RPM-GPG-KEY-puias
检验下是否安装成功
$sudorpm-qagpg*
Tips:安装完EPEL和PUIAS两个源后,可以检测下:
$sudoyumrepolist
d、安装GitLab的所需依赖包和工具
$su-$yum-ygroupinstall'DevelopmentTools' $yum-yinstallvim-enhancedreadlinereadline-develncurses-develgdbm-develglibc-develtcl-developenssl-develcurl-develexpat-develdb4-develbyaccsqlite-develgcc-c++libyamllibyaml-devellibffilibffi-devellibxml2libxml2-devellibxsltlibxslt-devellibiculibicu-develsystem-config-firewall-tuipython-develredisudowgetcrontabslogwatchlogrotateperl-Time-HiResgit
RHEL提示
如果部分包不能安装,例如: eg. gdbm-devel,libffi-devel and libicu-devel,那么增加rhel6的安装源。
$yum-config-manager--enablerhel-6-server-optional-rpms
e、配置redis
配置redis使其在开机时启动:
$此处redis是yum安装,为了省事、 $sudochkconfigredison $sudoserviceredisstart
f、配置邮件服务器
笔者注:这个过程笔者没有配置,请参考英文文档。
2、安装Ruby
下载并编译:
$su- $mkdir/tmp/ruby&&cd/tmp/ruby $curl--progressftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz|tarxz $cdruby-2.0.0-p353$./configure--prefix=/usr/local/ $make&&makeinstall
安装完成后,重新登录终端确保$PATH生效,检测ruby的安装成功与否:
$whichruby /usr/local/bin/ruby$ruby-v ruby2.0.0p353(2013-11-22revision43784)[x86_64-linux]
安装bundle:
$sudogeminstallbundler--no-ri--no-rdoc
如果提示sudo: gem: command not found,使用root账号登录执行该命令即可。
3、系统用户
创建用户git
$su- $adduser--system--shell/bin/bash--comment'GitLab'--create-home--home-dir/home/git/git
转发所有邮件
笔者注:因为上面没有配置发送邮件,这里也省略。
4、配置GitLab shell
GitLab shell是专门为GitLab开发的提供ssh访问和版本管理的软件。
先使用root登录,而后切换成git
$su- $su-git
克隆gitlab shell
$gitclonehttps://github.com/gitlabhq/gitlab-shell.git $cdgitlab-shell
切换成1.8.0版本,并编辑配置
$gitcheckoutv1.8.0 $cpconfig.yml.exampleconfig.yml
这里最重要的是将gitlab_url修改成gitlab的访问域名。形如:http://test.gitlab.com/
笔者注:如果gitlab是使用https访问,则需将http替换成https,配置文件中的self_signed_cert要修改成true,否则gitlab shell在通过api和gitlab进行通信的时候就会出现错误,导致项目push出错。因为后面配置web服务器的时候是使用ssl,所以这里要按照ssl的方式配置。
Tips: 另外如果使用的域名是测试域名,不要忘记在系统的/etc/hosts做域名映射。如果自己有DNS服务器,则不需要绑定hosts
安装一些需要的目录和文件
$./bin/install
5、安装数据库
笔者这里使用的是msyql,关于Postgresql的安装请参考原文档。
安装MysqL并设置开机启动:
此处我选择安装MysqL的二进制包:安装参考文档:http://douya.blog.51cto.com/6173221/1579986
设置MysqL root账号的密码:
$MysqLadmin-urootpassword'yourpassword'
#登录数据库 $MysqL-uroot-p #输入root密码 #为gitlab创建使用用户 CREATEUSER'gitlab'@'localhost'IDENTIFIEDBY'gitlab账号的密码'; #创建gitlaba使用的数据库 CREATEDATABASEIFNOTEXISTS`gitlabhq_production`DEFAULTCHARACTERSET`utf8`COLLATE`utf8_unicode_ci`; #给予gitlab用户权限 GRANTSELECT,LOCKTABLES,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTERON`gitlabhq_production`.*TO'gitlab'@'localhost'; #登出数据库 \q
6、安装GitLab
将GitLab安装在git的家目录下:
$su- $su-git
a、克隆GitLab并切换分支到6-3-stable
#克隆GitLab $gitclonehttps://github.com/gitlabhq/gitlabhq.gitgitlab #进入gitlab目录 $cd/home/git/gitlab #切换到6-3-stable分支,需要的可以切换到5.0稳定版 $gitcheckout6-3-stable
b、配置项目
#复制配置文件 $cpconfig/gitlab.yml.exampleconfig/gitlab.yml #修改配置文件中的访问域名(your_domain_name为项目的访问域名) $sed-i's|localhost|your_domain_name|g'config/gitlab.yml\ 设定log和tmp目录所有者和权限 $chown-Rgitlog/ $chown-Rgittmp/ $chmod-Ru+rwXlog/ $chmod-Ru+rwXtmp/ #创建gitlab-satellites目录 $mkdir/home/git/gitlab-satellites #创建tmp/pids/和tmp/sockets/目录,确保gitlab有相应的权限 $mkdirtmp/pids/ $mkdirtmp/sockets/ $chmod-Ru+rwXtmp/pids/ $chmod-Ru+rwXtmp/sockets/ #创建public/uploads目录 $mkdirpublic/uploads $chmod-Ru+rwXpublic/uploads #复制unicorn配置 $cpconfig/unicorn.rb.exampleconfig/unicorn.rb #编辑unicorn配置(笔者这里采用默认配置) $vimconfig/unicorn.rb #配置git的用户和邮件 $gitconfig--globaluser.name"GitLab" $gitconfig--globaluser.email"gitlab@your_domain_name" $gitconfig--globalcore.autocrlfinput
这边的配置比较复杂,细心些就行了。
$cpconfig/database.yml.MysqLconfig/database.yml
编辑config/database.yml,设置其中连接数据库的账号密码,笔者的配置部分如下:
##PRODUCTION#production: adapter:MysqL2 encoding:utf8 reconnect:false database:gitlabhq_production pool:10 username:gitlab password:"gitlab" #host:localhost #socket:/tmp/MysqL.sock
修改其中username和password就可以了,其中密码就是上面数据库步骤中创建gitlab用户的密码。
确保该文件只有git账号有权限读取。
$chmodo-rwxconfig/database.yml
d、安装Gems
$sudogeminstallcharlock_holmes--version'0.6.9.4'此时会遇到一个错误,由于在国内无法访问国外网站原因 [root@gitlabgitlab]#geminstallcharlock_holmes--version'0.6.9.4' ERROR:Couldnotfindavalidgem'charlock_holmes'(=0.6.9.4),hereiswhy: Unabletodownloaddatafromhttps://rubygems.org/-Errno::ECONNRESET:Connectionresetbypeer-SSL_connect(https://rubygems.org/specs.4.8.gz) 解决办法: 1, cd/home/git/gitlab vimGemfile 更改 sourcehttps://rubygems.org/ 为: source"https://ruby.taobao.org/" 2,gemsources-rhttps://rubygems.org/ gemsources-ahttps://ruby.taobao.org/ [root@gitlabgitlab]#gemsources-l ***CURRENTSOURCES*** https://ruby.taobao.org/ $再次运行,便成功安装 [root@gitlabgitlab]#geminstallcharlock_holmes--version'0.6.9.4' $ exit退出root用户
安装MysqL包
$cd/home/git/gitlab/ [git@Gitgitlab]$bundleinstall--deployment--withoutdevelopmenttestpostgrespumaaws 此时还会出现一个问题 [git@Gitgitlab]$bundleinstall--deployment--withoutdevelopmenttestpostgrespumaaws -bash:bundle:commandnotfound 解决方案: [git@Gitgitlab]$sudogeminstallbundler此不需要用root来安装 此时出现第二个错误: [git@Gitgitlab]$bundleinstall--deployment--withoutdevelopmenttestpostgrespumaaws Don'trunBundlerasroot.Bundlercanaskforsudoifitisneeded,andinstallingyourbundleasrootwillbreakthisapplicationforallnon-rootusersonthismachine. FetchinggemMetadatafromhttps://ruby.taobao.org/........ FetchingversionMetadatafromhttps://ruby.taobao.org/.. Couldnotfindmodernizr-2.6.2inanyofthesources 解决方法: 1, [git@gitlabgitlab]$vimGemfile gem"modernizr","2.6.2" 更改改为: gem"modernizr-rails","2.7.1" 2, [git@gitlabgitlab]$vimGemfile.lock 将 modernizr(2.6.2) 更改改为: modernizr-rails(2.7.1) 将 modernizr(=2.6.2) 更改改为: modernizr-rails(=2.7.1) #重新执行: [git@gitlabgitlab]$bundleinstall--deployment--withoutdevelopmenttestpostgrespumaaws 此时遇到新的错误: Anerroroccurredwhileinstallingrake(10.1.0),andBundlercannotcontinue. Makesurethat`geminstallrake-v'10.1.0'`succeedsbeforebundling. 解决办法: su- [root@gitlabgitlab]#geminstallrake-v'10.1.0' 此时用root执行 [root@gitlabgitlab]#bundleinstall--deployment--withoutdevelopmenttestpostgrespumaaws
e、初始化数据和激活高级功能
$cd/home/git/gitlab $bundleexecrakegitlab:setupRAILS_ENV=production
这步完成后,会生一个默认的管理员账号:
Administratoraccountcreated: login.........root password......5iveL!fe
f、安装启动脚本
$su- $wget-O/etc/init.d/gitlabhttps://raw.github.com/gitlabhq/gitlab-recipes/master/init/sysvinit/centos/gitlab-unicorn $chmod+x/etc/init.d/gitlab $chkconfig--addgitlab
开机时启动
$chkconfiggitlabon
g、检测应用程序状态
$su-git $cdgitlab/ bundleexecrakegitlab:checkRAILS_ENV=production先检查安装环境是否成功、 $bundleexecrakegitlab:env:infoRAILS_ENV=production $exit debug模式启动gitlab bundleexecrailss-eproduction
可以查看到系统、Ruby、GitLab和GitLab Shell的版本和其他信息。
启动GitLab实例
$servicegitlabstart 出现问题 [root@git~]#/etc/init.d/gitlabstart Stoppingunicorn:[Failed] Stoppingsidekiq:[Failed] Startingunicorn:bash:bin/web:Nosuchfileordirectory [Failed] Startingsidekiq:bash:bin/background_jobs:Nosuchfileordirectory [Failed] 解决方案 [root@gitgitlab]#cd/home/git/gitlab cp-rscript/bin [root@gitgitlab]#/etc/init.d/gitlabstart Startingunicorn:[OK] Startingsidekiq:[OK]
h、查看应用更加详细的信息
$su-git $cdgitlab/ $bundleexecrakegitlab:checkRAILS_ENV=production [git@gitlabgitlab]$bundleexecrakegitlab:checkRAILS_ENV=production CheckingEnvironment... Gitconfiguredforgituser?...yes Haspython2?...yes python2issupportedversion?...yes CheckingEnvironment...Finished CheckingGitLabShell... GitLabShellversion>=1.7.9?...OK(1.8.0) Repobasedirectoryexists?...yes Repobasedirectoryisasymlink?...no RepobaSEOwnedbygit:git?...yes Repobaseaccessisdrwxrws---?...yes updatehookup-to-date?...yes updatehooksinreposarelinks:...can'tcheck,youhavenoprojects Running/home/git/gitlab-shell/bin/check CheckGitLabAPIaccess:OK Checkdirectoriesandfiles: /home/git/repositories:OK /home/git/.ssh/authorized_keys:OK Testredis-cliexecutable:redis-cli2.4.10 Sendpingtoredisserver:PONG gitlab-shellself-checksuccessful CheckingGitLabShell...Finished CheckingSidekiq... Running?...yes NumberofSidekiqprocesses...1 CheckingSidekiq...Finished CheckingGitLab... Databaseconfigexists?...yes Databaseissqlite...no Allmigrationsup?...yes GitLabconfigexists?...yes GitLabconfigoutdated?...no Logdirectorywritable?...yes Tmpdirectorywritable?...yes Initscriptexists?...yes Initscriptup-to-date?...no Tryfixingit: Redownloadtheinitscript Formoreinformationsee: doc/install/installation.mdinsection"InstallInitScript" Pleasefixtheerroraboveandrerunthechecks. projectshavenamespace:...can'tcheck,youhavenoprojects Projectshavesatellites?...can'tcheck,youhavenoprojects Redisversion>=2.0.0?...yes Yourgitbinpathis"/usr/bin/git" Gitversion>=1.7.10?...no Tryfixingit: Updateyourgittoaversion>=1.7.10from1.7.1 Pleasefixtheerroraboveandrerunthechecks. CheckingGitLab...Finished
这里会提示一个Init script up-to-date的错误,如下:
Initscriptup-to-date?...no Tryfixingit: RedownloadtheinitscriptFormoreinformationsee: doc/install/installation.mdinsection"InstallInitScript"Pleasefixtheerroraboveandrerunthechecks.
原文说明不用介意这个问题,以及git的版本,hooks 咱都不影响使用
7、安装web服务器
笔者选择的是Nginx,关于apache方面的请参考原文档
此处我选择的是tengine编译安装 1,安装省略,因为很简单 2,tengine的配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@H_669_404@
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
userrootgit;
worker_processes2;
error_loglogs
/error
.log;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication
/octet-stream
;
log_formatmain
'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent""$http_x_forwarded_for"'
;
access_loglogs
/access
.logmain;
upstreamgitlab{
serverunix:
/home/git/gitlab/tmp/sockets/gitlab
.socket;
}
server{
listen*:80default_server;
server_nameyour-domain
server_tokensoff;
root
/home/git/gitlab/public
;
client_max_body_size5m;
location/{
#servestaticfilesfromdefinedrootfolder;.
#@gitlabisanamedlocationfortheupstreamfallback,seebelow
try_files$uri$uri
/index
.html$uri.html@gitlab;
}
#ifafile,whichisnotfoundintherootfolderisrequested,
#thentheproxypasstherequesttotheupsteam(gitlabunicorn)
location@gitlab{
proxy_read_timeout300;
#https://github.com/gitlabhq/gitlabhq/issues/694
proxy_connect_timeout300;
#https://github.com/gitlabhq/gitlabhq/issues/694
proxy_redirectoff;
proxy_set_headerX-Forwarded-Proto$scheme;
proxy_set_headerHost$http_host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_passhttp:
//gitlab
;
}
}
}
|
启动Nginx:
访问成果:
去开始哈皮吧~~~
参考资料:http://www.centoscn.com/image-text/install/2015/0320/4929.html
############### 邮件通知########################
你Linux系统使用的是postfix邮箱,而且配置文件能是默认,并且使用mail可以发邮件,所以执行以下,确保可以发邮件
1. 首先是拷贝Gitlab自带的example
cd
/home/git/gitlab
-ugit-H
cp
config
/initializers/smtp_settings
.rb.sampleconfig
.rb
2. 然后用我们自己的邮箱替换example中的邮箱
sudo
-ugit-Hvimconfig
/initializers/smtp_settings
.rb
一键安装路径:
cd /opt/gitlab-8.5.7-0
vim apps/gitlab/htdocs/config/environments/production.rb
这里提供163和腾讯企业邮箱两种配置方式,注意将下面的123456替换成自己的密码
163邮箱:
if
Rails.
env
.production?
Gitlab::Application.config.action_mailer.delivery_method=:smtp
"smtp.163.com"
,
"wpgitlab"
password:
"123456"
domain:
"163.com"
authentication::plain,
true
end
QQ邮箱:
"wangpeng@scnee.com"
"smtp.qq.com"
true
end
3. 修改gitlab.yml
sudo
-ugit-Hvimconfig
/gitlab
.yml
一键安装路径:
cd /opt/gitlab-8.5.7-0
vim apps/gitlab/htdocs/config/gitlab.yml
将默认邮箱修改为自己的邮箱
163:
##Emailsettings
#Emailaddressusedinthe"From"fieldinmailssentbyGitLab
腾讯企业邮箱:
4. 修改后。重启gitlab
本文出自 “crazy_sir” 博客,请务必保留此出处http://www.jb51.cc/article/p-btrpuuer-bmo.html