如何安装Gitlab与PostgreSQL和Nginx在Ubuntu 15.04

Gitlab是一个基于Web的git仓库管理应用程序,用Ruby编写。它类似于GitHub并包括一些功能,如项目wiki和iss ...

Gitlab是一个基于Web的git仓库管理应用程序,用Ruby编写。 它类似于GitHub,包括项目wiki和问题跟踪系统等功能。 Gitlab项目由Dmitriy Zaporozhets发起,该软件由包括IBM,StackExchange,NASA,阿里巴巴,红帽等在内的超过100,000家技术公司使用.Gitlab是构建您自己的git服务器的最佳解决方案之一。

Gitlab支持主要的Linux发行版,如Ubuntu,Debian和CentOS。 Gitlab为Debian / Ubuntu和.rpm包提供了一个.deb包,用于Rhel和CentOS。 该软件包包含所有依赖关系,包括Ruby,Redis,Nginx,Unicorn和PostgreSQL。 Gitlab有2个版本,社区版(Gitlab CE)和企业版(Gitlab EE)。 如果您要构建自己的git服务器,那么很可能免费的CE版本将提供您需要的所有功能。

在本教程中,我将逐步引导您使用PostgreSQL作为数据库系统安装Gitlab CE,将Ubuntu 15.04版本的Nginx作为Web服务器。 我们将使用Ruby版本2.xx,gitlab稳定版本8.x.

先决条件

  • Ubuntu 15.04 - 64bit。
  • CPU 2内核 - 从gitlab网站推荐
  • 2 GB RAM /内存 - 从gitlab网站推荐
  • 根权限

第1步 - 更新Linux系统

在安装Gitlab依赖项之前,我们从ubuntu存储库中获取最新的更新。 使用SSH访问登录到ubuntu服务器,成为root用户,然后更新存储库。

sudo su
apt-get update

第2步 - 安装Gitlab依赖关系

Gitlab具有许多软件依赖关系,例如redis-server,git-core,nodejs和postfix来发送电子邮件通知。 我将使用一个apt命令安装它们:

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs git-core postfix

注意:在 postfix安装过程中,选择“internet site”,然后按enter键确认主机名。

如果安装了所有软件包,请检查git版本,并确保git版本是1.7.x或更高版本。

git --version
git version 2.1.4

第3步 - 安装Ruby和Go

Gitlab需要一个ruby版本2.x或更高版本。 在本教程中,我们将使用ruby版本2.7。 在这个阶段,我们必须手动安装ruby(源)。 如果您以前在系统上安装了红Gem,请使用以下命令将其删除:

apt-get remove ruby -y

接下来,我们将手动安装ruby。 为ruby源文件创建新目录:

mkdir -p /tmp/ruby && cd /tmp/ruby

使用curl命令下载ruby源:

curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz

现在验证并提取ruby.tar.gz,然后输入ruby目录:

echo 'e2e195a4a58133e3ad33b955c829bb536fa3c075  ruby-2.1.7.tar.gz' | shasum -c - && \
tar xzf ruby-2.1.7.tar.gz && \
cd ruby-2.1.7

编译并安装Ruby:

./configure --disable-install-rdoc --prefix=/usr/local
make
make install

下一步,我们必须安装Go。 由于gitlab 8.0,git HTTP请求是由Go编写的gitlab-workhorse处理的。 要安装gitlab-workhorse,我们需要go编译器,下载并安装它。

为Go创建新目录:

mkdir -p /tmp/go && cd /tmp/go

下载Go - 我们使用64位版本:

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

验证并将其解压缩到“/ usr / local /”目录中:

echo '46eecd290d8803887dec718c691cc243f2175fe0  go1.5.1.linux-amd64.tar.gz' | shasum -c - && \
sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz

现在在bin目录中创建一个符号链接:

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

现在我们已经安装了Ruby和Go。

测试红Gem和Go安装。

第4步 - 创建一个新的Linux用户并配置PostgreSQL数据库

在这一步中,我们将使用主目录“/ home / git”创建一个名为“git”的新的Linux系统用户 Gitlab稍后将以git用户身份运行。

使用adduser命令创建新的用户git:

sudo adduser --disabled-login --gecos 'GitLab' git

现在我们为gitlab配置数据库。 Gitlab支持MySQL和PostgreSQL,在本教程中我们将使用推荐的数据库类型PostGreSQL。

使用apt命令安装PostgreSQL:

sudo apt-get install -y postgresql postgresql-client libpq-dev

完成之后,登录PostgreSQL并为gitlab创建名为“ git ”的新角色/用户:

sudo -u postgres psql -d template1
CREATE USER git CREATEDB;

然后为gitlab创建名为“ gitlabhq_production ”的新数据库,并将数据库授予git user / role:

CREATE DATABASE gitlabhq_production OWNER git;

现在退出postgresql shell并使用我们创建的数据库测试新角色/用户:

\q
sudo -u git -H psql -d gitlabhq_production

在PostgreSQL中创建数据库。

名为“git”的新系统用户已创建。

已经创建了已经授予gitlab数据库“gitlabhq_production”的psotgreSQL的新角色/用户“git”。

第5步 - 配置Redis服务器

在我们编辑“/ etc / redis”目录中的redis配置文件之前,我们将创建一个名为redis.conf.original的备份副本。

cd /etc/redis/
cp redis.conf redis.conf.original

然后使用vim编辑器编辑文件“redis.conf”:

vim redis.conf


转到第45行并将值更改为0 ,因为我们希望Redis仅在unix套接字上监听而不是端口:

Listen 0

然后转到文件的末尾并添加一个redis套接字及其权限:

unixsocket /var/run/redis/redis.sock
unixsocketperm 777

保存文件并退出。

接下来,在“/ var / run”目录中为redis套接字创建一个新目录,并调整目录的所有者和权限:

mkdir -p /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis

转到redis socket目录并运行以下命令:

cd /var/run/redis
if [ -d /etc/tmpfiles.d ]; then
  echo 'd  /var/run/redis  0755  redis  redis  10d  -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi

如果全部完成,请重新启动redis服务器,并将用户“git”添加到“redis”组中:

sudo service redis-server restart
sudo usermod -aG redis git

第6步 - 安装GitLab

转到目录“/ home / git”并从GIT存储库下载gitlab:

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

注意 :

sudo -u git -H clone command =我们以用户“git”的形式运行命令“clone”。

- 配置GitLab

去gitlab目录配置gitlab:

cd /home/git/gitlab

将gitlab配置文件gitlab.yml.example的示例复制到“config”目录中的gitlab.yml中:

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

在gitlab目录中,将子目录“log和tmp”的所有者更改为git用户:

sudo chown -R git {log,tmp}

然后更改其他目录的权限,以便gitlab(git用户)可以写入它们:

mkdir -p public/uploads/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX {tmp,tmp/pids,tmp/sockets,builds,shared/artifacts}
sudo chmod -R 0750 public/uploads

复制Unicorn和机架攻击配置的示例:

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

现在我们必须使用git命令为git用户配置全局设置:

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

并且我们必须通过将文件“resque.yml”复制到config目录中来配置redis连接,然后使用vim编辑它以更改redis配置,使用unix套接字,因为我们配置了redis来监听套接字:

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

- 数据库配置

下一步是配置GitLab数据库设置,我们使用postgreSQL作为我们的数据库。 复制配置文件并更改权限:

sudo -u git -H cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

- 安装Gem

sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos

等待命令完成。

- 安装Gitlab-shell

Gitlab-shell允许Gitlab进行SSH访问和存储库管理。 我们将使用默认配置,因此我们不需要编辑它。 运行下面的命令来安装gitlab-shell:

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

REDIS_URL =确保在生产环境中使用unix套接字进行redis配置。

- 安装gitlab-workhorse

Gitlab-workhorse是一个小的deamon来处理来自Unicorn的Git HTTP流量,在Go中编码。 克隆并安装它:

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.4.2
sudo -u git -H make

- 初始化数据库并激活gitlab功能

去gitlab安装目录并运行下面的命令:

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

键入“yes”来创建表。

初始化数据库。

结果将是一个gitlab帐户,用户名为“ root ”,密码为“ 5iveL!fe ”。

第7步 - 配置Init脚本

复制gitlab init脚本,形式为gitlab安装目录,并在启动时使用update-rc.d命令添加gitlab来启动:

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

然后复制gitlab logrotate配置进行日志管理:

sudo 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

如果没有错误,请启动gitlab:

/etc/init.d/gitlab start

启动Gitlab

第8步 - 安装和配置Nginx

我们将使用Nginx作为前端Web服务器来处理浏览器请求。 只需用这个apt命令安装它:

apt-get install nginx -y

从gitlab目录复制Nginx虚拟主机配置,并删除默认的Nginx默认虚拟主机:

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo rm /etc/nginx/sites-enabled/default

使用vim编辑配置文件:

sudo vim /etc/nginx/sites-available/gitlab

在HTTP部分中更改Listen和ServerName行的值:

Listen *:80; #Port Default

#Listen 0.0.0.0:80; #comment one of this

ServerName my.gitlab.me; #Gitlab FQDN/Domain

保存并退出。

激活gitlab虚拟主机,启动nginx并重启gitlab:

sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
service nginx start
/etc/init.d/gitlab restart

现在,您可以通过my.gitlab.me(您为服务器选择的主机名)访问gitlab,并使用默认用户名“ root ”和密码“ 5iveL!fe ”登录。

Gitlab登录。

首先你应该用你的密码替换gitlab默认密码。

Gitlab桌面。

Gitlab 8与PostgreSQL和Nginx在ubuntu 15.04上已经成功安装。

Gitlab成功安装

注意 :

如果您有错误,例如“502坏网关”,然后通过增加Unicorn时间或升级硬件进行修复。 请访问gitlab安装目录,并使用vim编辑unicorn.rb文件:

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

Gitlab中的502错误。

有关Gitlab疑难解答的更多信息,请访问https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide

结论

Gitlab是一个用Ruby编写的开源git仓库管理软件。 它是构建您自己的git服务器的最佳解决方案之一。 Gitlab由Dmitriy Zaporozhets创建,有两个版本,Gitlab CE(社区版)和Gitlab EE(企业版)。 Gitlab易于安装和配置,具有美观的接口,由更多的100.000技术公司使用。 它是非常强大的软件,帮助开发人员与其他开发人员一起构建应用程序。