Gitlab完整搭建手册+排错

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
开源项目地址:https://github.com/gitlabhq/gitlabhq

1
2
3
4
5
6
7
8
# Distribution      : CentOS 6.5 Minimal
# GitLab version    : 7.4.5
# GitLab-shell      : 2.0.1
# Ruby version      : ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
# Gem version       : 2.2.2
# Redis-server      : Redis server version 2.4.10 (00000000:0)
# Web Server        : Nginx/1.0.15
# Database          : MySQL/5.5.40

一,安装源和依赖包

1
2
3
4
5
6
7
8
9
cd /usr/local/src
#增epel源,如果你是i686系统,请把x86_64修改下。
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
rpm -Uvh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm

#确认是否安装成功
rpm -qa gpg*
gpg-pubkey-0608b895-4bd22942

二,安装依赖包

1
2
3
yum -y update
yum -y groupinstall ‘Development Tools‘
yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-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 redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64

安装邮件服务
postfix或者sendmail,官网上安装是postfix,本人默认就装来sendmail,所以此步骤省略

三,安装git
默认centos的git版本是1.7.10,所以要先删除,然后再下载源码安装

1
2
3
4
5
6
7
8
9
yum remove git -y

yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel

mkdir /tmp/git && cd /tmp/git

curl --progress https://www.kernel.org/pub/software/scm/git/git-2.1.3.tar.gz | tar xz

cd  git-2.1.3/ && ./configure && make && make prefix=/usr/local install

完成后验证

1
2
3
4
5
which git
/usr/local/bin/git

git --version
git version 2.1.3

四,安装ruby
ruby版本需要2.0+,所以先卸载系统已存在的

1
2
3
4
5
6
7
8
9
yum remove ruby
#如果是源码安装的
cd (your-ruby-source-path) && make uninstall

mkdir /tmp/ruby && cd /tmp/ruby

curl --progress ang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz | tar xz

cd ruby-2.1.2 && ./configure --disable-install-rdoc && make && make prefix=/usr/local install

#引用淘宝ruby源

gem sources --remove https://rubygems.org/

gem sources -a https://ruby.taobao.org/           ##注意加https

gem sources -l

安装bundler

1 gem install bundler --no-doc

完成后验证

1
2
3
4
5
which ruby
/usr/local/bin/ruby

ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

五,创建系统用户

1 adduser --system --shell /bin/bash --comment ‘GitLab‘ --create-home --home-dir /home/git/ git

增加/usr/local/bin

1
2
3
visudo
#修改以下内容
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

六,安装mysql
官网给出两个选择,mysql、postgreSQL,我使用的mysql
centos默认会安装5.1版本的mysql,所以要源码安装,此步骤掠过。。。

1
2
3
#mysql的版本至少5.5.14或更新
mysql --version
mysql  Ver 14.14 Distrib 5.5.40, for Linux (x86_64) using readline 5.1

创建数据库用户并授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql -u root -p

mysql> CREATE USER ‘git‘@‘localhost‘ IDENTIFIED BY ‘gitpwd‘;

mysql> show variables like "%engine";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
| storage_engine         | InnoDB |
+------------------------+--------+
2 rows in set (0.01 sec)

#如果不是InnoDB引擎,需执行下面命令
mysql> SET storage_engine=INNODB;

创建数据库

1 mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

给用户授权

1 mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘git‘@‘localhost‘;

测试是否能够成功登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql -ugit -pgitpwd -D gitlabhq_production
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 30
Server version: 5.5.40-log Source distribution

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> \q

七,配置redis

1
2
3
4
5
6
7
8
9
10
11
chkconfig redis on

cp /etc/redis.conf /etc/redis.conf.orig

#修改监听端口
sed ‘s/^port .*/port 0/‘ /etc/redis.conf.orig |tee /etc/redis.conf

#增加内容
echo ‘unixsocket /var/run/redis/redis.sock‘ |tee -a /etc/redis.conf

echo -e ‘unixsocketperm 0770‘ |tee -a /etc/redis.conf

创建目录改权限

1
2
3
4
5
mkdir /var/run/redis

chown redis:redis /var/run/redis

chmod 755 /var/run/redis

启动服务

1 service redis restart

附加git到redis组

1 usermod -aG redis git

八,安装gitlab

1
2
3
4
cd /home/git

#下载源码
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-4-stable gitlab

修改配置

1
2
3
4
5
6
7
8
9
10
cd gitLab/

sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

sudo -u git -H vim config/gitlab.yml
gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: www.gitlab.com
    port: 80
    https: false

修改目录权限

1
2
3
4
5
6
7
chown -R git log/
chown -R git tmp/
chmod -R u+rwX log/
chmod -R u+rwX tmp/
chmod -R u+rwX tmp/pids/
chmod -R u+rwX tmp/sockets/
chmod -R u+rwX  public/uploads

创建目录

1
2
sudo -u git -H mkdir /home/git/gitlab-satellites
chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites

编辑配置文件unicorn.rb

1
2
3
4
5
6
7
8
9
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

#查看系统核心数
nproc
4

#编辑配置
sudo -u git -H vim config/unicorn.rb
worker_processes 4

拷贝配置文件rack_attack.rb

1 sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

定义全局的用户和邮箱

1
2
3
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "[email protected]"
sudo -u git -H git config --global core.autocrlf input

编辑连接redis配置

1
2
3
4
5
#拷贝配置
sudo -u git -H cp config/resque.yml.example config/resque.yml

#连接redis配置,默认配置,未修改
sudo -u git -H vim config/resque.yml

九,配置gitlab数据库文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo -u git cp config/database.yml.mysql config/database.yml

#编辑配置文件
sudo -u git -H vim config/database.yml
production:
  adapter: mysql2
  encoding: utf8
  collation: utf8_general_ci
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: git
  password: "gitpwd"
  host: localhost
  socket: /var/lib/mysql/mysql.sock

#修改文件权限,只有git用户可读
sudo -u git -H chmod o-rwx config/database.yml

十,安装gem

1
2
3
cd /home/git/gitLab

sudo -u git -H bundle install --deployment --without development test postgres aws

#错误1:

Could not fetch specs from http://ruby.taobao.org/

解决:
修改Gemfile下的http://ruby.taobao.org/

为:

https://ruby.taobao.org/

#出现错误2:Could not find modernizr-2.6.2 in any of the sources#解决办法:[[email protected] gitlab]$ vi Gemfile第114行   gem "modernizr",        "2.6.2"更改改为:第114行   gem "modernizr-rails",  "2.7.1"[[email protected] 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)重新执行su git -c "bundle install --deployment --without development test postgres"

#出现错误3:

执行bundle install进行安装

十一,安装gitlab-shell
官网上给的gitlab-shell版本是2.1.0,后面会有问题(本地到远程不能连接),网上查找问题是版本问题,需要gitlab-shell的版本是2.0.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo -u git -H bundle exec rake gitlab:shell:install[v2.0.1] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

#编辑配置
sudo -u git -H vim /home/git/gitlab-shell/config.yml
---
user: git
gitlab_url: https://localhost/
http_settings:
  self_signed_cert: true
repos_path: "/home/git/repositories/"
auth_file: "/home/git/.ssh/authorized_keys"
redis:
  bin: "/usr/bin/redis-cli"
  namespace: resque:gitlab
  socket: "/var/run/redis/redis.sock"
log_level: INFO
audit_usernames: false

十二,初始化数据库

1
2
3
4
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

#可以设置管理员密码(此步骤可省略。。。)
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword

十三,下载服务脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wget -O /etc/init.d/gitlab  https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab-sslchmod +x /etc/init.d/gitlab

chkconfig --add gitlab

chkconfig gitlab on

#设置logrotate
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

#检测应用状态
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

#启动服务
service gitlab start

##如果出现报错:

Starting unicorn: bin/web: line 21: bundle: command not found

修改/etc/profile

把bundle的路径加到环境变量里

export PATH=/usr/local/mysql/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin

十四,配置web服务

1
2
3
4
5
6
#本人使用的nginx
yum -y install nginx

chkconfig nginx on

wget -O /etc/nginx/conf.d/gitlab.conf https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab-ssl

添加nginx用户到git组

1
2
3
usermod -a -G git nginx

chmod g+rx /home/git/

#修改下server标签监听端口和域名

vim /etc/nginx/conf.d/gitlab.conf

server {

listen x.x.x.x:80;

server_name www.gitlab.com;

#..略..

}

启动服务

1
2
3
4
5
service nginx start

#访问登录
#用户名:root
#密码:5iveL!fe

#问题一
#================================

1
2
3
4
5
6
7
8
9
10
11
#报错信息:
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
    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

Couldn‘t create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "collation"=>"utf8_general_ci", "reconnect"=>false, "database"=>"gitlabhq_production", "pool"=>10, "username"=>"git", "password"=>"gitpwd"}, {:charset=>"utf8", :collation=>"utf8_general_ci"}
    (If you set the charset manually, make sure you have a matching collation)
    -- enable_extension("plpgsql")
    rake aborted!
    Mysql2::Error: Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

1
2
3
4
#解决办法:
vim config/database.yml
    #mysql.sock的位置指定,默认在/tmp目录下
    socket: /var/lib/mysql/mysql.sock

#============================
#问题二
#============================

1
2
3
4
5
6
7
8
9
#报错信息:
    Running /home/git/gitlab-shell/bin/check
    Check GitLab API access: /home/git/gitlab-shell/lib/gitlab_net.rb:122:in `read‘: No such file or directory @ rb_sysopen - /home/git/gitlab-shell/.gitlab_shell_secret (Errno::ENOENT)
        from /home/git/gitlab-shell/lib/gitlab_net.rb:122:in `secret_token‘
        from /home/git/gitlab-shell/lib/gitlab_net.rb:79:in `get‘
        from /home/git/gitlab-shell/lib/gitlab_net.rb:39:in `check‘
        from /home/git/gitlab-shell/bin/check:11:in `<main>‘‘

#之前提到过的,由于gitlab-shell版本问题导致,按照我安装的版本应该没什么问题。

#============================
#问题三
#============================

遇到这类问题仔细检查几个文件

/home/git/gitlab/config/unicorn.rb:配置ruby提供的服务端口,ip

/home/git/gitlab/config/gitlab.yml:配置gitlab服务的端口,ip

/home/git/gitlab-shell/config.yml:配置gitlab-shell要调用的API接口

unicorn.rb:第40行改成

listen ”192.168.0.210:8000″, :tcp_nopush => true

gitlab.yml:第18行和第19行改成

    host: 192.168.0.210
    port: 8000

config.yml:第5行改成

gitlab_url: ”http://192.168.0.210:8000/

切记这个端口不与nginx启动的端口冲突,完成后重启gitlab,登录www.gitlab.com进行登录

时间: 2024-10-06 09:00:53

Gitlab完整搭建手册+排错的相关文章

GitLab完整搭建(版本6.3.1)

CentOS6.7安装gitlab GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找. 前期规划: 1).操作系统Cento

gitlab完整迁移

环境介绍: CentOS 6.7 gitlab:6.3.1 需求:gitlab从A服务器迁移至B服务器 第一.在B服务器上部署gitlab环境 参考<GitLab完整搭建(版本6.3.1)> 第二.备份A服务器上的数据 1).打包仓库文件 #su- git $cd/home/git/ $tarzcvf repositories.tar.gz ./repositories 2).备份sql文件 $mysqldump-uroot -pxxxx gitlabhq_production > /t

Oracle12c Data Guard搭建手册

Oracle12c Data Guard搭建手册 注:本文来源: 红黑联盟 < Oracle12c Data Guard搭建手册 > Oracle 12c 的DataGuard 是在CDB 级别进行的,所以我们的配置都是从CDB角度出发. 测试里主备库的数据库CDB名称相同. 1 环境说明 1 OS Version: 2 3 [[email protected] etc]# cat /etc/oracle-release 4 5 Oracle Linux Server release 6.3

Centos gitlab简单搭建备份及恢复

1.安装配置必须的依赖 yum install curl policycoreutils openssh-server openssh-clients systemctl enable sshd systemctl start sshd yum install postfix systemctl enable postfix systemctl start postfix firewall-cmd --permanent --add-service=http systemctl reload f

ubuntu gitlab服务器搭建

gitlab服务器搭建 1.安装依赖包 sudo apt-get install curl openssh-server ca-certificates postfix 执行完成后,出现邮件配置,选择Internet那一项(不带Smarthost的) 2.下载最新的包 安装gitlab-ce软件包 在https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/链接中下载最新版gitlab-c

SuSE之Gitlab私服搭建

Gitlab私服搭建 Ps:由于是内网使用不存在邮件派发,不配置邮件,且无需异步服务器代理转发 直接过程: 1.下载bitnami-gitlab-8.9.6-0-linux-x64-installer.run(版本自选) 2.安装: YDCK-WXCAPP1:/soft # ./bitnami-gitlab-8.9.6-0-linux-x64-installer.run The installer detects that exists a 'git' user in the system. T

Git工程开发实践(七)——GitLab服务搭建

Git工程开发实践(七)--GitLab服务搭建 操作系统:RHEL 7.3 WorkStation 一.GitLab简介 1.GitLab简介 ?GitLab是一个利用Ruby on Rails开发的开源版本管理系统,是集代码托管.测试.部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开或私人项目.GitLab能够浏览代码,管理缺陷和注释,可以管理团队对仓库的访问,非常易于浏览提交过的版本,并提供一个文件历史库,是目前非常流行的研发版本控制系统.Git:本地版本控制系统工具.G

gitlab的搭建与汉化

gitlab的搭建:内存最好2G以上 yum -y install curl unzip policycoreutils git wget         安装相关依赖包 所有gitlab rpm包的地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/ 下载安装包:wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-10.0.0-ce.0.el6

[转] 基于Gitlab CI搭建持续集成环境

[From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三期Live中提到的关于CI构建的,可能这部分在不同公司由不同的岗位负责,刚好如果你没遇到你可以看看. @赵兵,来自迅雷前端团队.是一个热爱前端技术,喜欢造轮子,爱折腾的人,也是一个奉行"懒惰使人进步"的懒人工程师. 正文从这开始- 本文简单介绍了持续集成的概念并着重介绍了如何基于 Gitl