CentOS 自定义安装GitLab

准备工作和说明

说明:

本文主要参考官方文档而来

gitlab 安装路径为/data/git

基于CentOS minimal 系统,系统安装时没有安装依赖包,可以安装开发包,也可依报错信息安装缺少依赖。

主要涉及以下组件安装与配置

  1. 依赖包
  2. Ruby
  3. Go
  4. System Users
  5. Database
  6. Redis
  7. GitLab
  8. Nginx

1. 依赖包安装

更新系统及软件包

#以 root 用户运行
yum update -y
yum upgrade -y

安装 vim wget

yum install vim wget -y

安装软件包

yum install -y zlib-devel libyaml-devel libffi-devel curl openssh-server libxml2-devel libxslt-devel libicu-devel logrotate python-docutils cmake openssh-clients openssl-devel libcurl-devel

安装开发工具

yum install gcc gcc-c++ wget
#或yum groupinstall ‘Development Tools‘

nodjs安装

包管理器安装,源码安装,二进制文件安装任选其一

包管理器

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs
yum install gcc-c++ make
# or: yum groupinstall ‘Development Tools‘

二进制包

wget -c https://nodejs.org/dist/v4.4.1/node-v4.4.1-linux-x64.tar.gz
SHASUMS256:f0a53527f52dbcab3b98921a6cfe8613e5fe26fb796624988f6d615c30305a95  node-v4.4.1-linux-x64.tar.gz
mkdir /usr/local/node 
tar zxvf node-v4.4.1-linux-x64.tar.xz -C /usr/local/node --strip-components 1
ln -s /usr/local/node/bin/{node,npm} /usr/bin/

源码安装

CentOS 6上需要 gcc-c++ 的版本不低于4.8,源码安装单独写篇文章

wget -c https://nodejs.org/dist/v4.4.1/node-v4.4.1.tar.gz
echo ‘f3e604cc4d05a4810c37cd43a838a2dc4399d517bd1e8c53b7670dcffc4dc481  node-v4.4.1.tar.gz‘ | sha256sum -c - && tar zxf node-v4.4.1.tar.gz

Git软件

确认git版本2.7.4或更高,否则源码安装git软件

git --version

安装依赖

yum install perl-devel gettext libcurl-devel

下载并解压git软件

curl -O --progress https://www.kernel.org/pub/software/scm/git/git-2.8.0.tar.gz
echo ‘2c6eee5506237e0886df9973fd7938a1b2611ec93d07f64ed3447493ebac90d1  git-2.8.0.tar.gz‘ | sha256sum -c - && tar zxf git-2.8.0.tar.gz
cd git-2.8.0

配置git准备编译:

./configure

编译软件包:

make prefix=/usr/local all

安装软件包:

make prefix=/usr/local install

建立软链接

ln -sf /usr/local/bin/git /usr/bin

注:一定要装libcurl-devel 开发包

git是报 fatal: Unable to find remote helper for ‘https‘

就是没装libcurl-devel开发包的原因

安装邮件服务

yum install -y postfix

2. Ruby

注:目前支持的Ruby 版本是 2.1.x, 2.2和2.3暂不支持

下载Ruby 并校验文件:

wget -c https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz
echo ‘034cb9c50676d2c09b3b6cf5c8003585acea05008d9a29fa737c54d52c1eb70c  ruby-2.1.9.tar.gz‘ | sha256sum -c - && tar zxf ruby-2.1.9.tar.gz

cd ruby-2.1.9

配置Ruby准备编译:

./configure --disable-install-rdoc

配置选项含义:

--disable-install-rdoc

禁用rdoc

编译软件包:

make

安装软件包:

make install

创建软链接:

ln -sv /usr/local/bin/{ruby,gem,bundler} /usr/bin

更换Ruby源为国内镜像源:

sudo -u git -H gem sources --add  --remove https://rubygems.org

安装bundler:

sudo gem install bundler --no-ri --no-rdoc

更改bundler 源:

sudo -u git -H bundle config mirror.https://rubygems.org https://ruby.taobao.org

3. Go

国内原因,只能使用国内的资源下载go了

由于国内网站没有提供sha256校验码,无从校验了

wget http://www.golangtc.com/static/go/1.6/go1.6.linux-amd64.tar.gz
 tar -C /usr/local -zxf go1.6.linux-amd64.tar.gz
 ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
 ln -sv /usr/local/go/bin/go /usr/bin/
 rm go1.6.linux-amd64.tar.gz

4. System Users

创建一个使用GitLab的git用户:

useradd -c ‘GitLab‘ git

5. Database

本文使用MySQL数据库,版本不能高于5.5.14

yum install -y mysql mysql-server mysql-devel

确认MySQL版本:

mysql --version

设置MySQL 安全:

mysql_secure_installation

会要求设置mysql root口令,删除空密码用户,删除测试数据库

创建GitLab 仓库的用户,并设置密码(替换$password变量):

mysql> CREATE USER ‘git‘@‘localhost‘ IDENTIFIED BY ‘$password‘;

#设置数据库存储类型为INNODB
mysql> SET storage_engine=INNODB;

#创建GitLab 数据库 gitlabhq
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

#赋予GitLab 用户对gitlabhq的操作权限
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES,  DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq`.* TO ‘git‘@‘localhost‘;

#退出数据库管理
mysql> \q

#验证用户登录
sudo -u git -H mysql -u git -p -D gitlabhq
# 登录成功会显示 ‘mysql>‘ 提示符号
#退出数据库
mysql> \q

设置开机启动

chkconfig --add mysqld
chkconfig --level 2345 mysqld

6. Redis

GitLab 使用的Redis 不能低于 2.8版本

下载Redis,并解压文件:

wget -c  http://download.redis.io/releases/redis-3.0.7.tar.gz| tar -C /tmp -xzf redis-3.0.7.tar.gz
cd /tmp/redis-3.0.7

安装软件:

make install

配置redis 使用sockets:

如已有redis服务,可更改以下redis文件名增加一个redis-gitlab服务(既将redis.conf,redis替换为redis-gitlab.conf,redis-gitlab)

#创建redis配置文件目录,并拷贝配置文件
mkdir /etc/redis && cp redis.conf /etc/redis/redis.conf

#禁用redis 监听TCP端口
sed -i ‘s/port .*/port 0/‘ /etc/redis/redis.conf

#后台方式运行
sed -i ‘s/^daemonize .*/daemonize yes/‘ /etc/redis/redis.conf
#配置redis 日志
sed -i ‘s/^logfile.*/logfile "\/data\/redis\/redis.log"/‘ /etc/redis/redis.conf
#配置redis存储路径
sed -i ‘s/^dir.*/dir \/data\/redis/‘ /etc/redis/redis.conf
#创建redis目录
mkdir /data/redis
chown redis.redis /data/redis

#启用redis socket
echo ‘unixsocket /var/run/redis/redis.sock‘ | sudo tee -a /etc/redis/redis.conf

#赋予socket redis组的所有权限
echo ‘unixsocketperm 770‘ | sudo tee -a /etc/redis/redis.conf

#创建socket目录,添加redis用户
mkdir /var/run/redis
useradd -M redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis

#添加git到redis组
usermod -aG redis git

#创建启动脚本
vim /etc/init.d/redis
#!/bin/sh
#
# redis        init file for starting up the redis daemon
#
# chkconfig:   - 20 80
# description: Starts and stops the redis daemon.

# Source function library.
. /etc/rc.d/init.d/functions

name="redis-server"
exec="/usr/local/bin/$name"
pidfile="/var/run/redis.pid"
REDIS_CONFIG="/etc/redis/redis.conf"

[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

start() {
    [ -f $REDIS_CONFIG ] || exit 6
    [ -x $exec ] || exit 5
    echo -n $"Starting $name: "
    daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $name: "
    killproc -p $pidfile $name
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

reload() {
    false
}

rh_status() {
    status -p $pidfile $name
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
        exit 2
esac
exit $?

设置开机启动

chkconfig --add redis
chkconfig --level 2345 redis

7.GitLab

安装GitLab 到自定义目录,这里以data 目录为例:

mkdir -vp /data/git && cd /data/git
sudo chown git:git /data/git/

克隆源:

sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-6-stable gitlab

配置GitLab:

cd /data/git/gitlab
#复制配置示例文件
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

修改配置文件host,email_from,GitLab 主目录参数为实际值

注:本例全文采用原始文件内容做展示,实际/home/git 应为/data/git

sudo -u git -H vim config/gitlab.yml
32>     host: localhost
33>    port: 80 #如使用HTTPS,则将此端口修改为443
34>    https: false #启用或禁用HTTPS,默认false禁用,启用则改为true
61>     email_from: [email protected]

satellites:
386>     path: /home/git/gitlab-satellites/

gitlab_shell:
411>     path: /home/git/gitlab-shell/
414>     repos_path: /home/git/repositories/
415>     hooks_path: /home/git/gitlab-shell/hooks/
#复制secrets示例文件
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml

#确认GitLab 对log  、tmp 目录可写
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/

#确认GitLab 对 tmp/pids/ 和tmp/sockets/ 目录可写
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/

#创建插件上传目录
sudo -u git -H mkdir public/uploads/

#确认Gitlab 用户只能访问public/uploads/ 目录
#上传文件由gitlab-workhorse 服务
sudo chmod 0700 public/uploads

#修改CI 构建目录权限
sudo chmod -R u+rwX builds/
sudo chmod -R u+rwX shared/artifacts/

拷贝Unicorn配置示例,并修改配置文件

sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H vim config/unicorn.rb
36> working_directory "/home/git/gitlab" # available in 0.94.0+
41> listen "/home/git/gitlab/tmp/sockets/gitlab.socket", :backlog => 1024
62> pid "/home/git/gitlab/tmp/pids/unicorn.pid"
67> stderr_path "/home/git/gitlab/log/unicorn.stderr.log"
68> stdout_path "/home/git/gitlab/log/unicorn.stdout.log"
#确认内核数
nproc

#如果是高负载,可以开启cluster 集群模式
#设置工作线程数小于内核数
#示例的工作线程数为3 运行在2GB内存的服务上
sudo -u git -H vim config/unicorn.rb

# 复制rack_attack配置示例
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

# 配置gitlab 全局用户设置
sudo -u git -H git config --global core.autocrlf input

# redis 配置文件
sudo -u git -H cp config/resque.yml.example config/resque.yml

# 修改redis 服务路径为实际值
sudo -u git -H editor config/resque.yml
development: redis://localhost:6379
test: redis://localhost:6379
production: unix:/var/run/redis/redis.sock

GitLab 数据库配置文件:

sudo -u git cp config/database.yml.mysql config/database.yml
#更新配置文件的‘database‘,‘username‘,‘password‘,‘host‘,‘socket‘为实际数值
#生产环境只需配置第一段
vim config/database.yml
#设置文件为git 用户只读权限
sudo -u git -H chmod o-rwx config/database.yml

安装Gems:

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

安装 GitLab Shell :

GitLab Shell 是专门用于gitlab的 SSH 和存储管理软件

#运行安装gitllab-shell 任务,使用你的redis sockte链接
sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

#默认gitlba-shell 配置信息是从GitLab 主配置文件读取生产,并修改为安装路径
sudo -u git -H vim /home/git/gitlab-shell/config.yml
user: git
gitlab_url:   #对应gitlab.yml 中的‘host:‘ 值若,启用了HTTPS协议,则此url应使用HTTPS协议而非HTTP  
http_settings:
  self_signed_cert: false
repos_path: "/home/git/repositories/" #仓库文件目录
auth_file: "/home/git/.ssh/authorized_keys" 
redis:
  bin: ‘‘ #redis 执行文件
  namespace: resque:gitlab
  socket: "/var/run/redis/redis.sock" #redis socket路径
log_level: INFO
audit_usernames: false

安装gitlab-workhorse:

cd /data/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout v0.7.1
sudo -u git -H make

初始化数据库并激活高级功能:

cd /data/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production --trace
#--trace 可跟踪初始化过程,便于查看错误
#‘yes‘ 创建数据库表。
#创建完会看到登录帐号,并说明首次登录时创建密码

下面为初始化时指定root 口令和email

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail

secrets.yml:

此文件存储着对话加密密钥和安全设置,将此文件备份到安全地方,备份位置要以防泄漏。

安装启动脚本并修改参数为安装路径:

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo vim /etc/init.d/gitlab
33> app_root="/home/$app_user/gitlab"

sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
sudo vim /etc/default/gitlab
14> app_root="/home/$app_user/gitlab"

GitLab开机启动:

sudo chkconfig --add gitlab
sudo chkconfig --level 2345 gitlab on

安装 Logrotate,并修改为安装路径:

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
sudo vim /etc/logrotate.d/gitlab
4> /home/git/gitlab/log/*.log {
13> /home/git/gitlab-shell/gitlab-shell.log {

检查应用状态:

检查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

启动GitLab 服务:

sudo service gitlab start

8.Nginx

由于centos默认没有nginx源,可采用源码编译安装,亦可添加yum源

此处采用添加nginx yum源(可参考nginx官方设置)

#echo "[nginx]
>name=nginx repo
>baseurl=http://nginx.org/packages/centos/6/$basearch/
>gpgcheck=0
>enabled=1" > /etc/yum.repos.d/nginx.repo

#yum -y install nginx
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
这里使用centos替换里OS,6替换了OSRELEASE

站点配置:

复制站点配置示例文件

sudo cp lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
#若使用HTTPS协议,则复制gitlab-ssl,配置对应内容及证书即可
sudo cp lib/support/nginx/gitlab-ssl /etc/nginx/conf.d/gitlab-ssl.conf

创建SSL 证书:

mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key
sudo chmod o-r gitlab.key

编辑配置文件,确认设置正确

vim /etc/nginx/conf.d/gitlab.conf
upstream gitlab-workhorse {
  server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0;
}

server_name YOUR_SERVER_FQDN; #修改YOUR_SERVER_FQDN为实际域名

  location ~ ^/(404|422|500|502)\.html$ {
    root /home/git/gitlab/public;
    internal;
  }

测试配置

nginx -t

重启nginx服务

service nginx restart

测试应用状态

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

自定义SSH 连接

如果SSH 服务没有运行在默认端口,则必须修改GitLab SSH配置,参照如下格式添加配置

# Add to /home/git/.ssh/config
host localhost          # Give your setup a name (here: override localhost)
    user git            # Your remote git user
    port 2222           # Your port number
    hostname 127.0.0.1; # Your server name or IP
时间: 2024-10-09 22:02:12

CentOS 自定义安装GitLab的相关文章

centos 7 安装gitlab

#配置安装EPEL及依赖环境 #更新包     yum update      yum -y install wget yum -y --nogpgcheck install http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm#添加epel源      http://www.cnblogs.com/Irving/p/3729074.html    #安装所需依赖包     yum -y

CentOS 7 安装 Gitlab

安装基本系统与依赖包 安装 Gitlab 依赖的工具 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-d

CentOS上安装GitLab

description: 之前在公司因为工作需要,需要搭建一个基于的git的项目管理平台,最好能够比较贴近GitHub的管理方式,从网上找到了GitLab这个开源项目,无论是从界面上还是从功能上都还不错,结果公司的服务器是win的- 之前在公司因为工作需要,需要搭建一个基于的git的项目管理平台,最好能够比较贴近GitHub的管理方式,从网上找到了GitLab这个开源项目,无论是从界面上还是从功能上都还不错,结果公司的服务器是win的-就在自己的VPS上搭建了,我的服务器系统版本是Ubuntu

centos自定义安装pip3

题记 在之前的文章centos云服务器安装Python3记录 记录了怎么自定义安装 Python3 ,在后边测试pip3的时候发现了个问题: pip --version terminal 打印: pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) 如上:pip版本还是 Python2.7 版本 解决 由于对于系统和Python并不是特别熟悉,首先想到的是问下度娘.度娘给了几种建议全部是下载pip再安装.我没有急于执行而是去看了

CentOS下安装Gitlab

环境 Requirements 软件 版本 CentOS 6.6 Python 2.6 Ruby 2.1.5 Git 1.7.10+ Redis 2.0+ MySQL   GitLab 7-8-stable GitLab Shell v2.6.0 yum源 为了提高软件安装速度,将yum源设置为阿里云开源镜像 $ cd /etc/yum.repos.d $ wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

Centos编译安装gitlab版本控制系统

[本文档所介绍的内容适用于公司测试/生产常见的gitlab,svn等版本控制环境部署,即常见的代码管理环境部署] 一:gitlab环境部署前准备: 1.1 基础系统要求: 系统要求:Centos 6 x86_64 (这里 以centos6.6为例) 1.2 相关软件要求: * 系统开发环境工具即"Development Tools" * Ruby环境:(版本不低于2.0,这里为2.3.0) * gitlab服务运行用户:git系统账号 * Gitlab Shell环境:(版本不低于2.

CentOS源码安装GitLab汉化版

示例环境: 软件 版本 CentOS 6.5 x86_64 Git 2.6.2 Ruby 2.2.3 Node.js 4.2.1 Redis 3.0.5 MariaDB 10.0.21 GitLab 8.0.5汉化版 GitLab Shell 2.6.6 Nginx 1.8.0 Go 1.5.1 Gitlab-git-http-server 0.2.14 一.修改Yum源为阿里云提高下载速度 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.

centos 6.5安装GitLab全过程和问题记录

GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. 官方只提供了Debian/Ubuntu系统下的安装说明文档,如果需要在centos下安装,可以参考这篇:https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos,笔者依照这篇文章的说明,成功的在centos系统上安装了gitlab,分享一下自己的安装过程和碰到的问题

转载:centos安装gitlab详解

原文地址:http://blog.csdn.net/jiangtao_st/article/details/73612298 一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程centos7安装gitlab:https://www.gitlab.cc/downloads/#centos7centos6安装gitlab:https://www.gitlab.cc/downloads/#centos6如下方法按照官网来操作,手工安装过于麻烦.当前测试平台为小鸟云的三个月cen