共计 15159 个字符,预计需要花费 38 分钟才能阅读完成。
前言:
官方上面说并不推荐在 CentOS 上面安装 GitLab,无奈公司的服务器都是 CentOS 的系统。不过,好在经历了三天才算把 GitLab 搭建起来,查了 N 多参考教程,发现一个问题,并不是每个教程都是通用的、总会遇到某些未知的错误是其他作者没有碰到的,毕竟每台服务器的环境是不一样的,问题百出,很是让人很是头痛。
下面总结了自己在 CentOS 搭建 GitLab 的教程以及某些错误的解决办法,算是对自己的总结吧!或许那天就用到了 ……
——安装前准备工作
1)添加 epel 源
[root@Git ~]# mkdir /tmp/soft/
[root@Git ~]# cd /tmp/soft/
[root@Git soft]# wget http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@Git soft]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing… ########################################### [100%]
1:epel-release ########################################### [100%]
2)配置 epel 源
[epel]
name=Extra Packages for Enterprise Linux 6 – $basearch
#download.fedoraproject.org 域名已经失效
# 去掉 #号将 download.fedoraproject.org 变更为 dl.fedoraproject.org
baseurl=http://dl.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
3)执行 yum makecache 更新
[root@Git soft]# yum makecache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.7 kB 00:00
base/group_gz | 220 kB 00:00
base/filelists_db | 5.9 MB 00:03
base/other_db | 2.8 MB 00:01
epel | 4.4 kB 00:00
epel/group_gz | 237 kB 00:05
epel/filelists_db | 8.4 MB 05:56
epel/primary_db | 6.1 MB 03:36
epel/other_db | 3.6 MB 01:22
epel/updateinfo | 780 kB 00:11
extras | 3.4 kB 00:00
extras/filelists_db | 11 kB 00:00
extras/prestodelta | 907 B 00:00
extras/other_db | 5.8 kB 00:00
mariadb | 1.9 kB 00:00
mariadb/filelists_db | 47 kB 00:01
mariadb/primary_db | 15 kB 00:00
mariadb/other_db | 1.2 kB 00:00
updates | 3.4 kB 00:00
updates/filelists_db | 1.7 MB 00:01
updates/prestodelta | 249 kB 00:00
updates/primary_db | 2.6 MB 00:02
updates/other_db | 21 MB 00:15
epel/pkgtags | 1.0 MB 00:36
Metadata Cache Created
4)安装软件所需依赖包
[root@Git soft]# yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui Python-devel redis wget crontabs logwatch logrotate perl-Time-HiRes git gettext-devel libel openssl-devel zlib-devel gcc gcc-c++ make autoconf readline-devel expat-devel gettext-devel tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel python-pip sqlite-devel patch libyaml* pcre-devel
——安装 Git Server
[root@Git soft]# yum -y install git perl-ExtUtils-MakeMaker
[root@Git soft]# git clone git://github.com/git/git
Initialized empty Git repository in /tmp/soft/git/.git/
remote: Counting objects: 171891, done.
remote: Compressing objects: 100% (46560/46560), done.
remote: Total 171891 (delta 123695), reused 171404 (delta 123322)
Receiving objects: 100% (171891/171891), 60.16 MiB | 571 KiB/s, done.
Resolving deltas: 100% (123695/123695), done.
[root@Git soft]# cd git/
[root@Git git]# git checkout v1.9.2
[root@Git git]# autoconf
[root@Git git]# make prefix=/usr/local/git all
[root@Git git]# make prefix=/usr/local/git install
[root@Git git]# yum erase git
[root@Git git]# ln -s /usr/local/git/bin/* /usr/bin/
[root@Git git]# git –version
git version 1.9.2 #表示安装成功
# 删除 git 安装包
[root@Git git]# cd ..
[root@Git soft]# rm -rf git/
——安装配置 ruby
1)下载 ruby
[root@Git soft]# wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz
2)编译安装 ruby
[root@Git soft]# tar zfvx ruby-2.1.1.tar.gz
[root@Git soft]# cd ruby-2.1.1
[root@Git ruby-2.1.1]# ./configure
[root@Git ruby-2.1.1]# make && make install
# 安装 bundler 需要添加 rubygems 的国内镜像
[root@Git ruby-2.1.1]# gem sources –remove https://rubygems.org/
[root@Git ruby-2.1.1]# gem source -a http://ruby.taobao.org/
[root@Git ruby-2.1.1]# gem sources -l
*** CURRENT SOURCES ***
http://ruby.taobao.org/
[root@Git ruby-2.1.1]# gem install bundler
Fetching: bundler-1.6.2.gem (100%)
Successfully installed bundler-1.6.2
Parsing documentation for bundler-1.6.2
Installing ri documentation for bundler-1.6.2
Done installing documentation for bundler after 2 seconds
1 gem installed
[root@Git ruby-2.1.1]# ln -s /usr/local/bin/ruby /usr/bin/ruby
[root@Git ruby-2.1.1]# ln -s /usr/local/bin/gem /usr/bin/gem
[root@Git ruby-2.1.1]# ln -s /usr/local/bin/bundle /usr/bin/bundle
3)创建一个 Git 用户供 GitLab 使用
# 之前已经搭建过 Git Server 不需要再次创建 Git 用户
[root@Git ruby-2.1.1]# adduser –comment ‘GitLab’ git
[root@Git ruby-2.1.1]# passwd git
# 为了方便添加 git 用户拥有 root 权限 [sudoers 文件默认没有写权限需要强制保存:wq!]
[root@Git ruby-2.1.1]# vi /etc/sudoers
git ALL=(ALL) ALL
[root@Git ruby-2.1.1]# chmod -R 755 /home/git
[root@Git ruby-2.1.1]# vi /home/git/.bash_profile
export GIT_SSL_NO_VERIFY=1
[root@Git ruby-2.1.1]# source /home/git/.bash_profile
# 不添加变量的话使用 https 链接会报如下错误
fatal: unable to access ‘https://github.com/gitlabhq/grit.git/’: Peer certificate cannot be authenticated with known CA certificates
4)安装 GitLab 的 Shell
[root@Git git]# su – git
# 克隆 gitlab 的 shell
[git@Git ~]$ git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
正克隆到 ‘gitlab-shell’…
remote: Reusing existing pack: 1222, done.
remote: Total 1222 (delta 0), reused 0 (delta 0)
接收对象中: 100% (1222/1222), 218.70 KiB | 16.00 KiB/s, done.
处理 delta 中: 100% (620/620), done.
检查连接 … 完成。
[git@Git ~]$ cd gitlab-shell/
[git@Git gitlab-shell]$ cp config.yml.example config.yml
[git@Git gitlab-shell]$ vi config.yml
# 自己的 gitlab 域名
gitlab_url: “http://git.test.com/”
# 完成配置
[git@Git gitlab-shell]$ ./bin/install
mkdir -p /home/git/repositories: true
mkdir -p /home/git/.ssh: true
chmod 700 /home/git/.ssh: true
touch /home/git/.ssh/authorized_keys: true
chmod 600 /home/git/.ssh/authorized_keys: true
chmod -R ug+rwX,o-rwx /home/git/repositories: true
find /home/git/repositories -type d -print0 | xargs -0 chmod g+s: true
5)建立 gitlab 数据库并授权
[git@Git gitlab-shell]$ mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.36-MariaDB-wsrep MariaDB Server, wsrep_25.9.r3961
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]> CREATE USER ‘gitlab’@’localhost’ IDENTIFIED BY ‘gitlab’;
Query OK, 0 rows affected (0.20 sec)
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
Query OK, 1 row affected (0.11 sec)
MariaDB [(none)]> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘gitlab’@’localhost’;
Query OK, 0 rows affected (0.06 sec)
MariaDB [(none)]> quit
Bye
6)克隆 GitLab 源
[git@Git gitlab-shell]$ cd ..
[git@Git ~]$ git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab
正克隆到 ‘gitlab’…
remote: Reusing existing pack: 77202, done.
remote: Counting objects: 67, done.
remote: Compressing objects: 100% (65/65), done.
remote: Total 77269 (delta 25), reused 1 (delta 0)
接收对象中: 100% (77269/77269), 75.26 MiB | 241.00 KiB/s, done.
处理 delta 中: 100% (53687/53687), done.
[git@Git ~]$ cd gitlab
[git@Git gitlab]$ cp config/gitlab.yml.example config/gitlab.yml
[git@Git gitlab]$ vi config/gitlab.yml
## GitLab settings
gitlab:
## Web server settings
host: git.test.com
port: 80
https: false
[git@Git gitlab]$ chown -R git log/
[git@Git gitlab]$ chown -R git tmp/
[git@Git gitlab]$ chmod -R u+rwX log/
[git@Git gitlab]$ chmod -R u+rwX tmp/
[git@Git gitlab]$ mkdir tmp/pids/
[git@Git gitlab]$ mkdir tmp/sockets/
[git@Git gitlab]$ chmod -R u+rwX tmp/pids/
[git@Git gitlab]$ chmod -R u+rwX tmp/sockets/
[git@Git gitlab]$ mkdir public/uploads
[git@Git gitlab]$ chmod -R u+rwX public/uploads
[git@Git gitlab]$ cp config/unicorn.rb.example config/unicorn.rb
[git@Git gitlab]$ cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
[git@Git gitlab]$ git config –global user.name “GitLab”
[git@Git gitlab]$ git config –global user.email “gitlab@localhost”
[git@Git gitlab]$ git config –global core.autocrlf input
7)配置 gitlab 数据库
[git@Git gitlab]$ cp config/database.yml.mysql config/database.yml
[git@Git gitlab]$ vi config/database.yml
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: gitlabhq_production
pool: 5
username: gitlab
password: “gitlab”
# host: localhost
# socket: /tmp/mysql.sock
8)安装 gems
[git@Git gitlab]$sudo gem install charlock_holmes –version ‘0.6.9.4’
Fetching: charlock_holmes-0.6.9.4.gem (100%)
Building native extensions. This could take a while…
Successfully installed charlock_holmes-0.6.9.4
Parsing documentation for charlock_holmes-0.6.9.4
Installing ri documentation for charlock_holmes-0.6.9.4
Done installing documentation for charlock_holmes after 0 seconds
1 gem installed
[git@Git gitlab]$ vi Gemfile
source “https://rubygems.org” 改为 source “http://rubygems.org”
[git@Git gitlab]$ bundle install –deployment –without development test postgres
Fetching source index from http://rubygems.org/
Fetching https://github.com/gitlabhq/grit.git
Could not find modernizr-2.6.2 in any of the sources
# 出现错误:Could not find modernizr-2.6.2 in any of the sources
# 解决办法:
[git@Git gitlab]$ vi Gemfile
第 114 行 gem “modernizr”, “2.6.2”
更改改为:
第 114 行 gem “modernizr-rails”, “2.7.1”
[git@Git gitlab]$ vi Gemfile.lock
第 252 行 modernizr (2.6.2)
更改改为:
第 252 行 modernizr-rails (2.7.1)
第 523 行 modernizr (= 2.6.2)
更改改为:
第 523 行 modernizr-rails (= 2.7.1)
# 重新执行:
[git@Git gitlab]$ bundle install –deployment –without development test postgres puma aws
9)启动 redis
[git@Git gitlab]$ sudo /etc/init.d/redis start
启动:[确定]
[git@Git gitlab]$ sudo chkconfig redis on
10)对数据库进行初始化
[git@Git gitlab]$ bundle exec rake gitlab:setup RAILS_ENV=production –verbose
This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? yes
# 最后初始化成功后会获得账号和密码
Administrator account created:
login………admin@local.host
password……5iveL!fe
11)检查 GitLab 及其环境的配置是否正确
[git@Git gitlab]$ bundle exec rake gitlab:env:info RAILS_ENV=production
System information
System: CentOS release 6.5 (Final)
Current User: git
Using RVM: no
Ruby Version: 2.1.1p76
Gem Version: 2.2.2
Bundler Version:1.6.2
Rake Version: 10.1.0
GitLab information
Version: 6.4.3
Revision: 3173626
Directory: /home/git/gitlab
DB Adapter: mysql2
URL: http://git.yingtao.com
HTTP Clone URL: http://git.yingtao.com/some-project.git
SSH Clone URL: git@git.yingtao.com:some-project.git
Using LDAP: no
Using Omniauth: no
GitLab Shell
Version: 1.9.3
Repositories: /home/git/repositories/
Hooks: /home/git/gitlab-shell/hooks/
Git: /usr/bin/git
[git@Git gitlab]$ bundle exec rake sidekiq:start RAILS_ENV=production
rake aborted!
SIGTERM
/home/git/gitlab/lib/tasks/sidekiq.rake:9:in `system’
/home/git/gitlab/lib/tasks/sidekiq.rake:9:in `block (2 levels) in <top (required)>’
Tasks: TOP => sidekiq:start
(See full trace by running task with –trace)
[git@Git gitlab]$ bundle exec rake gitlab:check RAILS_ENV=production
Checking Environment …
Git configured for git user? … yes
Has python2? … yes
python2 is supported version? … yes
Checking Environment … Finished
Checking GitLab Shell …
GitLab Shell version >= 1.7.9 ? … OK (1.9.3)
Repo base directory exists? … yes
Repo base directory is a symlink? … no
Repo base owned by git:git? … yes
Repo base access is drwxrws—? … yes
update hook up-to-date? … yes
update hooks in repos are links: … can’t check, you have no projects
Running /home/git/gitlab-shell/bin/check
Check GitLab API access: OK
Check directories and files:
/home/git/repositories: OK
/home/git/.ssh/authorized_keys: OK
Test redis-cli executable: redis-cli 2.4.10
Send ping to redis server: PONG
gitlab-shell self-check successful
Checking GitLab Shell … Finished
Checking Sidekiq …
Running? … yes
Number of Sidekiq processes … 1
Checking Sidekiq … Finished
Checking LDAP …
LDAP is disabled in config/gitlab.yml
Checking LDAP … Finished
Checking GitLab …
Database config exists? … yes
Database is SQLite … no
All migrations up? … yes
GitLab config exists? … yes
GitLab config outdated? … no
Log directory writable? … yes
Tmp directory writable? … yes
Init script exists? … yes
Init script up-to-date? … no
Try fixing it:
Redownload the init script
For more information see:
doc/install/installation.md in section “Install Init Script”
Please fix the error above and rerun the checks.
#原文说可以忽略上面的错误,不影响使用
projects have namespace: … can’t check, you have no projects
Projects have satellites? … can’t check, you have no projects
Redis version >= 2.0.0? … yes
Your git bin path is “/usr/bin/git”
Git version >= 1.7.10 ? … yes (1.9.2)
Checking GitLab … Finished
11)下载启动脚本
[git@Git gitlab]$ sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init/sysvinit/centos/gitlab-unicorn -P /etc/init.d/
[git@Git gitlab]$ sudo mv /etc/init.d/gitlab-unicorn /etc/init.d/gitlab
[git@Git gitlab]$ sudo chmod +x /etc/init.d/gitlab
[git@Git gitlab]$ sudo chkconfig –add gitlab
[git@Git gitlab]$ sudo chkconfig gitlab on
[git@Git gitlab]$ sudo /etc/init.d/gitlab start
12)复制配置文件 [这里使用 nginx 做为 WEB 服务]
[git@Git gitlab]$ cp lib/support/nginx/gitlab /usr/local/nginx/conf/conf.d/
[git@Git gitlab]$ cd /usr/local/nginx/conf/conf.d/
[git@Git gitlab]$ sudo chown -R git:git .
[git@Git conf.d]$ cp gitlab gitlab.conf
[git@Git conf.d]$ vi gitlab.conf
upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}
server {
listen *:80 default_server; # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
server_name git.test.com; # e.g., server_name source.example.com;
server_tokens off; # don’t show the version number, a security best practice
root /home/git/gitlab/public;
client_max_body_size 5m;
access_log logs/gitlab_access.log;
error_log logs/gitlab_error.log;
location / {
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://gitlab;
}
}
[git@Git conf.d]$ sudo service nginx restart
13)拉取 GitLab 静态文件
[git@Git conf.d]$ cd /home/git/gitlab
[git@Git gitlab]$ bundle exec rake assets:precompile RAILS_ENV=production
[git@Git gitlab]$ sudo service gitlab restart
14)访问测试
初始管理员帐号和密码为:
admin@local.host
5iveL!fe
1)访问 http://IP 如果配置正常会显示如下页面:
2)输入默认的登陆账号和密码,会提示你修改默认密码:
3)密码修改后,会重新跳回到登陆界面:
4)重新输入登陆账号和新密码,登陆成功后显示如下:
在 Ubuntu 12.04 上安装 GitLab http://www.linuxidc.com/Linux/2012-12/75249.htm
GitLab 5.3 升级注意事项 http://www.linuxidc.com/Linux/2013-06/86473.htm
在 CentOS 上部署 GitLab (自托管的 Git 项目仓库) http://www.linuxidc.com/Linux/2013-06/85754.htm
在 RHEL6/CentOS6/ScientificLinux6 上安装 GitLab 6.0.2 http://www.linuxidc.com/Linux/2014-03/97831.htm
CentOS 6.5 安装 GitLab 教程及相关问题解决 http://www.linuxidc.com/Linux/2014-05/101526.htm
GitLab 的详细介绍 :请点这里
GitLab 的下载地址 :请点这里
更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-07/120401.htm