在RHEL系统上通过源码安装GITLAB

2022-04-04 14:34:57 浏览数 (1)

从源码安装Gitlab

  Gitlab有著名的一键安装包,点一下脚本自动会帮你装ruby、Redis、Postgresql、Gitlab好方便,而且还会帮你解决Sidekiq无限消耗资源定期重启。有这么多优点为毛还要从源码安装Gitlab。1.CE版本无法使用Mysql库来存储用户数据 2.能了解他的工作机理和细节呗。

官方的文档一直在使用Ubuntu来做例子,但在我们的生产环境全都是RHEL的机器所以这篇文档也以RHEL来进行讲解。此文档写于2015年1月31日,软件版本均为当时最新版本。

安装总览

  1. 更新仓库源
  2. 安装必须的软件包
  3. 安装Ruby
  4. 安装Go语言
  5. 创建系统用户
  6. 安装数据库Mysql
  7. 安装Redis
  8. 安装GitLab 8.5.stable
  9. 安装Nginx

0. 更新仓库源

RHEL操作系统默认仓库源在线更新是收费的,如果没有注册还能使用。我们使用CentOS的YUM源来进行。在中国大陆地区因GFW各种被禁。无奈我们使用网易源来安装各种YUM包。

#删除源仓库

rpm -qa |grep yum|xargs rpm -e --nodeps

mkdir /tmp/yum && cd /tmp/yum

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-69.el6.centos.noarch.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm

wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm

#yum和yum-plugin-fastestmirror需要一起安装,这两个包存在依赖关系,分开安装会失败

rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm

rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

rpm -ivh yum-3.2.29-69.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm

#替换仓库

wget -O /etc/yum.repos.d/CentOS6-Base-163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

#编辑文件CentOS-Base-163.repo,替换整个文件的$releasever为6

#加载扩展名源EPEL

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

#添加PUIAS仓库

wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/install/centos/PUIAS_6_computational.repo

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias

#查看结果

yum repolist

#如果报错可以考虑把PUIAS的仓库从mirrorlist改为使用baseurl

#最后结果应为

仓库标识 仓库名称 状态

PUIAS_6_computational PUIAS computational Base $releasever - x86_64 3,270

base CentOS-6 - Base - 163.com 6,575

epel Extra Packages for Enterprise Linux 6 - x86_64 12,004

extras CentOS-6 - Extras - 163.com 50

updates CentOS-6 - Updates - 163.com 1,218

repolist: 23,117

1.安装必须的软件包

安装需要如下的软件包

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 nodejs

#此步一定要确定所有的包都安装正确,否则下面会报莫明错误。

可选章节:安装Git,截至2016年1月RHEL通过YUM安装的GIT版本已经为1.8.3.1,可以跳过本步。否则

# Install dependencies

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

# Download and compile from source

cd /tmp

curl -O --progress https://www.kernel.org/pub/software/scm/git/git-2.7.0.tar.gz

tar xzf git-2.7.0.tar.gz

cd git-2.7.0/

./configure

make prefix=/usr/local all

# Install into /usr/local/bin

make prefix=/usr/local install

#在第5步的时候要编辑 config/gitlab.yml 文件修改git路径, bin_path to /usr/local/bin/git

接下来我们还要安装一个邮件服务器,官方推荐使用postfix

yum install -y postfix

#Then select 'Internet Site' and press enter to confirm the hostname.

2.安装Ruby

Ruby官方要求使用2.1以上版本,如果系统带低版本,请卸载sudo apt-get remove rubyx.x。我们使用源码进行安装

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

curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz

tar xzf ruby-2.3.0.tar.gz

cd ruby-2.3.0

./configure --disable-install-rdoc

make

make install

Gitlab的包使用bundler进行依赖关系管理,所以还得安装。如果在国内的用户请先修改Ruby的源服务器

gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

#Check ruby source list

gem sources -l

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

3.安装Go语言支持

在GitLab8.0以后HTTP请求开始依赖Go编译,所以我们要进行安装,这里要注意Go会区分操作系统位数

mkdir /tmp/golang && cd /tmp/golang

curl -O --progress https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz

#32bit OS install

#curl -O --progress https://storage.googleapis.com/golang/go1.5.3.linux-386.tar.gz

tar -C /usr/local -xzf go1.5.3.linux-386.tar.gz

sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/

4.创建系统用户

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

#修改git用户的PATH路径

visudo

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

#修改为

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

5.安装数据库

官方默认推荐为PostgreSQLDB但因为没有使用经验备份经验,这里我们改用MySQL.但官方CE一键包不支持MYSQL这也是我们从源码安装的原因之一

# Install the database packages

yum install -y mysql-server mysql-devel

chkconfig mysqld on

service mysqld start

mysql_secure_installation

# Login to MySQL

mysql -u root -p

# Type the MySQL root password

# Create a user for GitLab

# do not type the 'mysql>', this is part of the prompt

# change $password in the command below to a real password you pick

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

# Ensure you can use the InnoDB engine which is necessary to support long indexes

# If this fails, check your MySQL config files (e.g. `/etc/mysql/*.cnf`, `/etc/mysql/conf.d/*`) for the setting "innodb = off"

mysql> SET storage_engine=INNODB;

# Create the GitLab production database

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

# Grant the GitLab user necessary permissions on the database

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

# Quit the database session

mysql> q

# Try connecting to the new database with the new user

sudo -u git -H mysql -u git -p -D gitlabhq_production

# Type the password you replaced $password with earlier

# You should now see a 'mysql>' prompt

# Quit the database session

mysql> q

# You are done installing the database and can go back to the rest of the installation.

6.安装Redis

#设置REDIS为开机启动

chkconfig redis on

修改 /etc/redis.conf 文件,在末尾增加

unixsocket /var/run/redis/redis.sock

unixsocketperm 0770

#重启redis服务

service redis restart

#添加git用户到redis用户组

usermod -aG redis git

7.安装GitLab

cd /home/git

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

#configure it

cd /home/git/gitlab

# Copy the example GitLab config

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

# Update GitLab config file, follow the directions at top of file

sudo -u git -H editor config/gitlab.yml

# Copy the example secrets file

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

sudo -u git -H chmod 0600 config/secrets.yml

# Make sure GitLab can write to the log/ and tmp/ directories

chown -R git log/

chown -R git tmp/

chmod -R u rwX,go-w log/

chmod -R u rwX tmp/

# Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories

chmod -R u rwX tmp/pids/

chmod -R u rwX tmp/sockets/

# Make sure GitLab can write to the public/uploads/ directory

sudo -u git -H mkdir public/uploads

chmod -R u rwX public/uploads

# Change the permissions of the directory where CI build traces are stored

chmod -R u rwX builds/

# Change the permissions of the directory where CI artifacts are stored

chmod -R u rwX shared/artifacts/

# Copy the example Unicorn config

sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# Find number of cores

nproc

# Enable cluster mode if you expect to have a high load instance

# Set the number of workers to at least the number of cores

# Ex. change amount of workers to 3 for 2GB RAM server

sudo -u git -H editor config/unicorn.rb

# Copy the example Rack attack config

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

# Configure Git global settings for git user, used when editing via web editor

sudo -u git -H git config --global core.autocrlf input

# Configure Redis connection settings

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

# Change the Redis socket path if you are not using the default Debian / Ubuntu configuration

sudo -u git -H editor config/resque.yml

Configure GitLab DB Settings

下面的步骤因为我们使用Mysql来安装。

sudo -u git cp config/database.yml.mysql config/database.yml

# Update username/password in config/database.yml

# Change 'secure password' with the value you have given to $password

sudo -u git -H editor config/database.yml

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_url节点,否则在提交时会报错,禁止提交

# Run the installation task for gitlab-shell (replace `REDIS_URL` if needed):

sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

# By default, the gitlab-shell config is generated from your main GitLab config.

# You can review (and modify) the gitlab-shell config as follows:

sudo -u git -H editor /home/git/gitlab-shell/config.yml

安装gitlab-workhorse

cd /home/git

sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git

cd gitlab-workhorse

sudo -u git -H git checkout 0.5.4

sudo -u git -H make

初始化数据库

# Go to GitLab installation folder

cd /home/git/gitlab

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

# Type 'yes' to create the database tables.

# When done you see 'Administrator account created:'

login.........root

password......5iveL!fe

安装初始化脚本

cp lib/support/init.d/gitlab /etc/init.d/gitlab

chkconfig --add gitlab

chkconfig gitlab on

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

#启动服务

service gitlab start

8. 配置WebServer

这里官方建议使用nginx,当然如果你对apache足够熟悉也可以改用apache。

yum -y install nginx

chkconfig nginx on

#如果你的机器上没能IPV6地址,一定要注释掉IPV6协议部分

cp lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf

#添加用户nginx到git组

usermod -a -G git nginx

chmod g rx /home/git/

如果这时访问报502并且在错误日志中提示 failed (13: Permission denied) 请关闭selinux

setenforce 0

9. 测试

http://gitlab.ip/

参考文献:

GitLab Documentation

http://doc.gitlab.com/ce/install/installation.html

0 人点赞