前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Ubuntu 14.04上安装GitLab(Trusty Tahr)

在Ubuntu 14.04上安装GitLab(Trusty Tahr)

作者头像
白加黑大人
发布2018-09-07 11:18:41
2.1K0
发布2018-09-07 11:18:41
举报
文章被收录于专栏:我的技术笔记我的技术笔记

GitLab是一个基于Ruby on Rails的免费git存储库管理应用程序。假如您想托管自己的git存储库,这是一个很好的替代方案,因为在编写私有代码或则闭源软件的时候,使用第三方托管并不总是最佳选择。

GitLab提供了一个.deb包,其中包含GitLab社区版及其已编译的所有依赖项(Ruby,PostgreSQL,Redis,Nginx,Unicorn和其他gem)。安装GitLab非常简单。但是由于它会自己安装必要的包依赖项(Nginx,PostgreSQL等),如果所用服务器专用于管理git存储库,那么这种安装方法是很合适的。但如果您希望GitLab使用您现有的资源(即:您已经安装了Nginx和PostgreSQL等依赖项),那么您就需要手动安装GitLab。

本指南将帮助您在安装了Ubuntu 14.04(Trusty Tahr)操作系统的 Linode主机上安装和配置GitLab。在撰写本文时,我们将使用最新版本的Ruby和GitLab,因此请检查当前安装包是否为最新版本。我们假设您会在git.example.com所指向的站点主机上安装GitLab,并且您已经正确地配置了主机DNS。假如您不熟悉Linux操作系统的基本操作,那您可能需要参考下“ Linux基本概念简介和“ Linux系统管理入门”这两篇文章的入门指南。如果您的服务器可以托管自己的软件项目的话,服务器应该会拥有大容量的磁盘空间,因此请考虑使用我们的区块存储服务进行服务器的磁盘设置。

注意

本指南是为非root用户编写的。需要提升权限的命令请以sudo为前缀。如果您不熟悉sudo命令,可以查看我们的“ 用户和组”说明指南。

系统配置要求

GitLab是一个庞大而又繁重的应用程序。为了充分利用GitLab,我们推荐的硬件配置如下:

CPU: 双核,最多可支持500个用户并发。

内存: 2GB,最多可支持500个用户并发。

部署系统的准备工作

在开始安装GitLab之前,请确保系统的软件包数据库是最新的,并且所有已安装的软件都是最新版本。

登录shell终端,输入以下命令更新系统到最新版本:

代码语言:txt
复制
sudo apt-get update 
sudo apt-get upgrade

然后为GitLab创建一个git用户:

代码语言:txt
复制
sudo adduser --disabled-login --gecos 'GitLab' git

安装GitLab的依赖关系

在本节中,将为您介绍如何安装GitLab的开发工具和所需的依赖软件。

安装所需的软件包来编译Ruby及Ruby gems(Ruby 的一个包管理器)的原生扩展:

代码语言:txt
复制
sudo apt-get install build-essential cmake 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

安装Git:

代码语言:txt
复制
sudo apt-get install git

为了接收邮件通知,您需要安装一个邮件服务器。执行以下命令安装来Postfix邮件服务器:

代码语言:txt
复制
sudo apt-get install postfix

选择Internet site并输入您的主机名,完成安装。如果您需要设置一个完整的SMTP / IMAP / POP3服务器,请参阅Postfix、Dovecot和MySQL邮件指南这篇文章。

安装Ruby

虽然GitLab是基于Ruby on Rails实现的应用程序,但其并不支持ruby版本管理器软件,例如RVMrbenv这两款软件均不支持GitLab的版本控制。举例来说,我们一般通过OpenSSH来调用GitLab shell,而版本管理器则可以通过调用openSSH的功能来防止越过SSH进行推送和拉取的操作(由此会带来许多疑难杂症)。因此只能用系统范围的Ruby来安装GitLab。此外,GitLab需要Ruby 最低版本为2.0或者更高版本,而Ubuntu 14.04上的ruby的默认版本是1.9.3。

删除旧的Ruby(如果存在):

代码语言:txt
复制
sudo apt-get remove ruby

在撰写本文时,目前稳定的Ruby版本是2.1.2。如果需要安装Ruby,请下载源代码并编译软件包:

代码语言:txt
复制
mkdir /tmp/ruby && cd /tmp/ruby 
wget http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz 
tar xvzf ruby-2.1.2.tar.gz 
cd ruby-2.1.2 
./configure --disable-install-rdoc --prefix=/usr/local 
make 
sudo make install

通过检查Ruby版本验证安装是否成功:

代码语言:txt
复制
ruby -v

为GitLab配置PostgreSQL数据库

GitLab同时支持MySQL和PostgreSQL作为后端数据库,但我们建议使用后者。此外由于GitLab需要使用其扩展,所以要保证PostgreSQL 的版本为 9.1或更高。

如果尚未安装PostgreSQL,请安装该软件:

代码语言:txt
复制
sudo apt-get install postgresql postgresql-client libpq-dev

通过执行以下命令来创建一个数据库及拥有该数据库权限的用户:

代码语言:txt
复制
sudo -u postgres createuser --createdb git sudo -u postgres createdb --owner=git gitlabhq_production

尝试使用新建用户连接到新建数据库并显示PostgreSQL版本,以方便测试:

代码语言:txt
复制
sudo -u git -H psql -d gitlabhq_production -c "SELECT VERSION()"

如果一切正常,您应该会在控制台上看到如下信息:

代码语言:txt
复制
                                                   version
    ------------------------------------------------------------------------------------------------------
     PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-16ubuntu6) 4.8.2, 64-bit
    (1 row)

安装GitLab

在本节中,将为您介绍如何安装GitLab,以及如何配置。

我们将GitLab安装到用户git的主目录中。首先进入当前工作目录:

代码语言:txt
复制
cd /home/git

下载GitLab源代码:

代码语言:txt
复制
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-9-stable gitlab cd gitlab

执行上面的命令,我们将会从GitLab存储库中下载6-9-stable(稳定版)代码分支。一般来说,我们可以随意选择其他稳定分支,但永远不要在生产服务器上安装主干。

创建GitLab配置文件:

代码语言:txt
复制
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

打开该配置文件:

代码语言:txt
复制
    sudo nano config/gitlab.yml

在这一步,您需要将host的对应值更改为服务器的完全限定域。同时将email_fromsupport_email的值设置为GitLab的电子邮件地址。

代码语言:txt
复制
production: &base
  gitlab:
    host: git.example.com
    port: 80
    https: false
    ...
    email_from: gitlab@example.com
    ...
    support_email: support@example.com

备注:

在上一节中,如果您在创建PostgreSQL数据库gitlabhq_production的同时,还指定了其他的数据库。那您就需要编辑config/database.yml并将指定的其他数据库填入对应位置。

保存文件并退出。

确保GitLab可以写入log /tmp /目录(即GitLab用户拥有这两个目录的权限):

代码语言:txt
复制
sudo chown -R git {log,tmp}
sudo chmod -R u+rwX {log,tmp,tmp/pids,tmp/sockets,public/uploads}

创建gitlab-satellites目录:

代码语言:txt
复制
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo chmod u+rwx,g+rx,o-rwx /home/git/gitlab-satellites

创建UnicornRack攻击和PostgreSQL配置文件:

代码语言:txt
复制
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
sudo -u git cp config/database.yml.postgresql config/database.yml

请确保config / database.yml仅对git用户来说可读:

代码语言:txt
复制
sudo -u git -H chmod o-rwx config/database.yml

安装gems(Ruby Gems,一个ruby包管理工具):

代码语言:txt
复制
sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws

安装GitLab shell,这是个存储库管理软件,一般通过GitLab的SSH访问:

代码语言:txt
复制
sudo -u git -H bundle exec rake gitlab:shell:install[v1.9.4] REDIS_URL=redis://localhost:6379 RAILS_ENV=production

打开GitLab shell配置文件:

代码语言:txt
复制
sudo nano /home/git/gitlab-shell/config.yml

检查值是否gitlab_url与服务器的URL匹配。

代码语言:txt
复制
user: git
gitlab_url: http://git.example.com/
http_settings:
  self_signed_cert: false
repos_path: "/home/git/repositories/"
auth_file: "/home/git/.ssh/authorized_keys"
redis:
  bin: "/usr/bin/redis-cli"
  host: localhost
  port: 6379
  namespace: resque:gitlab
log_level: INFO
audit_usernames: false

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

代码语言:txt
复制
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

该命令将显示以下消息

代码语言:txt
复制
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,按回车键继续。

安装init脚本并在启动时启动GitLab:

代码语言:txt
复制
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

设置logrotate(一个日志管理工具):

代码语言:txt
复制
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

检查申请状态:

代码语言:txt
复制
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

样本输出

代码语言:txt
复制
System information
System:         Ubuntu 14.04
Current User:   git
Using RVM:      no
Ruby Version:   2.1.2p95
Gem Version:    2.2.2
Bundler Version:1.6.3
Rake Version:   10.3.1
Sidekiq Version:2.17.0

GitLab information
Version:        6.9.2
Revision:       e46b644
Directory:      /home/git/gitlab
DB Adapter:     postgresql
URL:            http://git.example.com
HTTP Clone URL: http://git.example.com/some-project.git
SSH Clone URL:  git@git.example.com:some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        1.9.4
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/
Git:            /usr/bin/git

编译静态资源:

代码语言:txt
复制
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

为git用户配置全局属性:

代码语言:txt
复制
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@example.com"
sudo -u git -H git config --global core.autocrlf input

注意:

请根据config/gitlab.yml文件中的值为git用户配置邮箱地址

启动GitLab:

代码语言:txt
复制
sudo service gitlab start

为GitLab设置Nginx虚拟主机

Nginx是唯一支持GitLab的web服务器。在本节中,将为您介绍如何为GitLab部署一个全新的虚拟机环境并激活该站点。

如果你没有安装nginx的话,先安装这个软件:

代码语言:txt
复制
sudo apt-get install nginx

复制一份GitLab的全局配置文件,并将其放到nginx的站点配置目录下:

代码语言:txt
复制
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab

打开这个配置文件:

代码语言:txt
复制
sudo nano /etc/nginx/sites-available/gitlab

将server_name的值修改为服务器的完全限定域名(是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式):

代码语言:txt
复制
listen 80;
server_name git.example.com;
server_tokens off;
root /home/git/gitlab/public;

禁用默认的虚拟站点

代码语言:txt
复制
sudo rm /etc/nginx/sites-enabled/default

将配置文件复制软连接到生效目录下来激活站点,重启nginx后生效

代码语言:txt
复制
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
sudo service nginx restart

如果nginx重启失败并显示以下信息

代码语言:txt
复制
Restarting nginx: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

打开/etc/nginx/nginx.conf并取消注释以下行

代码语言:txt
复制
server_names_hash_bucket_size 64;

重启Nginx。

在浏览器上打开GitLab

再次检查应用的运行状态:

代码语言:txt
复制
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

如果大多数的选项都是绿色的,只有个别选项是紫色的(这是因为您还没有创建任何git项目,所以这是允许的),那就证明您已经成功安装了GitLab。下面是示例输出:

代码语言:txt
复制
Checking Environment ...

    Git configured for git user? ... yes

    Checking Environment ... Finished

    Checking GitLab Shell ...

    GitLab Shell version >= 1.9.4 ? ... OK (1.9.4)
    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
    Satellites access is drwxr-x---? ... 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.8.4
    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
    Database contains orphaned UsersGroups? ... no
    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? ... yes
    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.1)

    Checking GitLab ... Finished

现在您就可以在浏览器中查看这个网址 http://git.example.com了. GitLab会向您展示如图所示的登录页面。

您可以使用root作为用户名登录,使用5iveL!fe作为密码登录。

保护GitLab

现在您已在服务器上运行GitLab,您可能希望添加SSL支持以保护您的GitLab站点。请参阅Nginx的SSL证书配置的指南,这样您就可以使用SSL保护您的站点了。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

GitLab社区版

GitLab文档

GitLab要求

GitLab手动安装

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统配置要求
  • 部署系统的准备工作
    • 安装GitLab的依赖关系
      • 安装Ruby
        • 为GitLab配置PostgreSQL数据库
        • 安装GitLab
        • 为GitLab设置Nginx虚拟主机
        • 在浏览器上打开GitLab
        • 保护GitLab
        • 更多信息
        相关产品与服务
        云数据库 PostgreSQL
        腾讯云数据库 PostgreSQL(TencentDB for PostgreSQL,云 API 使用 postgres 作为简称)能够让您在云端轻松设置、操作和扩展目前功能最强大的开源数据库 PostgreSQL。腾讯云将负责绝大部分处理复杂而耗时的管理工作,如 PostgreSQL 软件安装、存储管理、高可用复制、以及为灾难恢复而进行的数据备份,让您更专注于业务程序开发。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档