`
jsczxy2
  • 浏览: 1275083 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

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-6-5-install-gitlab.zip

先秀下安装完成后的成果。

centos安装gitlab成果

centos安装gitlab成果

开始之前

在开始之前请先查看官方的刚需文档: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md ,该文档说明了系统,软件和硬件等各方面的需求。详细的了解这些,可以避免碰到很多怪异的问题。

安装步骤总览

  • 基础操作系统(CentOS 6.4 Minimal,升级后为6.5)
  • Ruby (版本: 2.0.0p353)
  • 创建项目运行用户(创建git账号,方便权限管理)
  • GitLab Shell(版本:1.8.0)
  • 数据库(可以支持mysql和PostgreSQL,这里使用mysql,版本:5.1.17)
  • GitLab(版本:6.3.1)
  • Web服务器(可支持nginx和apache,这里使用nginx,版本:1.0.15)
  • 防火墙(iptables)

1、安装操作系统

这个比较简单,安装完成之后记的配置下网络,使其可以在启动时自动连接。而后需要升级系统和安装一些相应的软件和依赖包,以下逐一说明。

Tips:如果不能连接国外的网络,经常出现网络错误或者couldn’t not resolve host这样的错误,建议修改dns服务器为8.8.8.8和8.8.4.4。

a、升级操作系统和安装wget

$ sudo yum -y update
$ sudo yum -y install wget

升级完成后,系统版本是6.5。

笔者注:和英文文档不同,笔者这里是先升级系统和安装wget,不然后面的操作会提示wget命令找到。

b、增加EPEL安装源

EPEL,即Extra Packages for Enterprise Linux,这个软件仓库里有很多非常常用的软件,而且是专门针对RHEL设计的,对RHEL标准yum源是一个很好的补充,完全免费使用,由Fedora项目维护,所以如果你使用的是RHEL,或者CentOS,Scientific等RHEL系的linux,可以非常放心的使用EPEL的yum源。

下载并安装GPG key

$ sudo wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

检验下是否安装成功

$ sudo rpm -qa gpg*

安装epel-release-6-8.noarch包

$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

提示:不要在意x86_64,在i686的机器上一样能使用。

c、增加PUIAS安装源

PUIAS Linux是面向桌面和服务器的完整的操作系统,它靠编译Red Hat Enterprise Linux的源代码包来创建。除了这些上游的软件包外,该项目还提供一些其他的软件仓库:“Addons”包含了通常的Red Hat发行中未收入的额外软件包,“Computational”提供专门针对科学计算的软件,“Unsupported”则收入各种各样的测试性软件 包。该发行由美国普林斯顿 大学的高等研究所维护。

创建/etc/yum.repos.d/PUIAS_6_computational.repo,并添加如下内容:

[PUIAS_6_computational]
name=PUIAS computational Base $releasever - $basearch
mirrorlist=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlist
#baseurl=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias

下载并安装GPG key

$ sudo 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
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias

检验下是否安装成功

$ sudo rpm -qa gpg*

Tips:安装完EPEL和PUIAS两个源后,可以检测下:

$ sudo yum repolist

d、安装GitLab的所需依赖包和工具

$ su -
$ yum -y groupinstall 'Development Tools'
$ yum -y install vim-enhanced readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui python-devel redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git

RHEL提示
如果部分包不能安装,例如: eg. gdbm-devel, libffi-devel and libicu-devel,那么增加rhel6的安装源。

$ yum-config-manager --enable rhel-6-server-optional-rpms

e、配置redis

配置redis使其在开机时启动:

$ sudo chkconfig redis on
$ sudo service redis start

f、配置邮件服务器

笔者注:这个过程笔者没有配置,请参考英文文档。

2、安装Ruby

下载并编译:

$ su -
$ mkdir /tmp/ruby && cd /tmp/ruby
$ curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
$ cd ruby-2.0.0-p353
$ ./configure --prefix=/usr/local/
$ make && make install

安装完成后,重新登录终端确保$PATH生效,检测ruby的安装成功与否:

$ which ruby
/usr/local/bin/ruby
$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]

安装bundle:

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

如果提示sudo: gem: command not found,使用root账号登录执行该命令即可。

3、系统用户

创建用户git

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

因为git用户不需要登录,所以这里不需要设置git的密码。

转发所有邮件

笔者注:因为上面没有配置发送邮件,这里也省略。

4、配置GitLab shell

GitLab shell是专门为GitLab开发的提供ssh访问和版本管理的软件。

先使用root登录,而后切换成git

$ su -
$ su - git

克隆gitlab shell

$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell

切换成1.8.0版本,并编辑配置

$ git checkout v1.8.0
$ cp config.yml.example config.yml

这里最重要的是将gitlab_url修改成gitlab的访问域名。形如:http://test.gitlab.com/

笔者注:如果gitlab是使用https访问,则需将http替换成https,配置文件中的self_signed_cert要修改成true,否则gitlab shell在通过api和gitlab进行通信的时候就会出现错误,导致项目push出错。因为后面配置web服务器的时候是使用ssl,所以这里要按照ssl的方式配置。

Tips: 另外如果使用的域名是测试域名,不要忘记在系统的/etc/hosts做域名映射。

安装一些需要的目录和文件

$ ./bin/install

5、安装数据库

笔者这里使用的是msyql,关于PostgreSQL的安装请参考原文档。

安装mysql并设置开机启动:

$ su -
$ yum install -y mysql-server mysql-devel
$ chkconfig mysqld on
$ service mysqld start

设置mysql root账号的密码:

$ /usr/bin/mysql_secure_installation

创建新用户和数据库给gitlab使用

# 登录数据库
$ mysql -u root -p
# 输入root密码
# 为gitlab创建使用用户
CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab账号的密码';

# 创建gitlaba使用的数据库
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

# 给予gitlab用户权限
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

# 登出数据库
\q

6、安装GitLab

将GitLab安装在git的家目录下:

$ su -
$ su - git

a、克隆GitLab并切换分支到6-3-stable

# 克隆GitLab
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
# 进入gitlab目录
$ cd /home/git/gitlab
# 切换到6-3-stable分支
$ git checkout 6-3-stable

b、配置项目

# 复制配置文件
$ cp config/gitlab.yml.example config/gitlab.yml

# 修改配置文件中的访问域名
(your_domain_name为项目的访问域名)
$ sed -i 's|localhost|your_domain_name|g' config/gitlab.yml

# 设定log和tmp目录所有者和权限
$ chown -R git log/
$ chown -R git tmp/
$ chmod -R u+rwX log/
$ chmod -R u+rwX tmp/

# 创建gitlab-satellites目录
$ mkdir /home/git/gitlab-satellites

# 创建tmp/pids/和tmp/sockets/目录,确保gitlab有相应的权限
$ mkdir tmp/pids/
$ mkdir tmp/sockets/
$ chmod -R u+rwX tmp/pids/
$ chmod -R u+rwX tmp/sockets/

# 创建public/uploads目录
$ mkdir public/uploads
$ chmod -R u+rwX public/uploads

# 复制unicorn配置
$ cp config/unicorn.rb.example config/unicorn.rb

# 编辑unicorn配置
(笔者这里采用默认配置)
$ vim config/unicorn.rb

# 配置git的用户和邮件
$ git config --global user.name "GitLab"
$ git config --global user.email "gitlab@your_domain_name"
$ git config --global core.autocrlf input

这边的配置比较复杂,细心些就行了。

c、配置数据库访问文件

$ cp config/database.yml.mysql config/database.yml

编辑config/database.yml,设置其中连接数据库的账号密码,笔者的配置部分如下:

#
# PRODUCTION
#
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: gitlab
  password: "gitlab"
  # host: localhost
  # socket: /tmp/mysql.sock

修改其中username和password就可以了,其中密码就是上面数据库步骤中创建gitlab用户的密码。

确保该文件只有git账号有权限读取。

$ chmod o-rwx config/database.yml

d、安装Gems

$ su -
$ gem install charlock_holmes --version '0.6.9.4'
$ exit

安装mysql包

$ cd /home/git/gitlab/
$ bundle install --deployment --without development test postgres puma aws

e、初始化数据和激活高级功能

$ cd /home/git/gitlab
$ bundle exec rake gitlab:setup RAILS_ENV=production

这步完成后,会生一个默认的管理员账号:

admin@local.host
5iveL!fe

f、安装启动脚本

$ su -
$ wget -O /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init/sysvinit/centos/gitlab-unicorn
$ chmod +x /etc/init.d/gitlab
$ chkconfig --add gitlab

开机时启动

$ chkconfig gitlab on

g、检测应用程序状态

$ su - git
$ cd gitlab/
$ bundle exec rake gitlab:env:info RAILS_ENV=production
$ exit

获取静态文件

bundle exec rake assets:precompile RAILS_ENV=production

 

执行这句可以解决样式问题,因此在service gitlab start之前执行。

 

为防止gitlab出现404或者找不到Files的问题,需要执行:

ln /usr/local/bin/git /usr/bin/git

 

 

可以查看到系统、Ruby、GitLab和GitLab Shell的版本和其他信息。

启动GitLab实例

$ service gitlab start

h、查看应用更加详细的信息

$ su - git
$ cd gitlab/
$ bundle exec rake gitlab:check RAILS_ENV=production

这里会提示一个Init script up-to-date的错误,如下:

Init script up-to-date? ... no
Try fixing it:
Redownload the init script
For more information see:
doc/install/installation.md in section "Install Init Script"
Please fix the error above and rerun the checks.

原文说明不用介意这个问题。

7、安装web服务器

最简单配置:

user              root git;
worker_processes  2;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
# GITLAB
# Maintainer: @randx
# App Version: 5.0

upstream gitlab {
  server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}

server {
  listen *:80 default_server;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  server_name YOUR_SERVER_FQDN;     # e.g., server_name source.example.com;
  server_tokens off;     # don't show the version number, a security best practice
  root /home/git/gitlab/public;

  # Set value of client_max_body_size to at least the value of git.max_size in gitlab.yml
  client_max_body_size 5m;

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  location / {
    # serve static files from defined root folder;.
    # @gitlab is a named location for the upstream fallback, see below
    try_files $uri $uri/index.html $uri.html @gitlab;
  }

  # if a file, which is not found in the root folder is requested,
  # then the proxy pass the request to the upsteam (gitlab unicorn)
  location @gitlab {
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;

    proxy_pass http://gitlab;
  }
}

}

 

 

 

笔者选择的是nginx,关于apache方面的请参考原文档

$ su -
$ yum -y install nginx
$ chkconfig nginx on
$ mkdir /etc/nginx/sites-available
$ mkdir /etc/nginx/sites-enabled
$ wget -O /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/web-server/nginx/gitlab-ssl
$ ln -sf /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

编辑/etc/nginx/nginx.conf,将 include /etc/nginx/conf.d/*.conf; 替换成 include /etc/nginx/sites-enabled/*;,就是修改额外加载的配置文件目录。

编辑/etc/nginx/sites-available/gitlab,将配置中server_name替换成实际访问的域名。

将nginx加入git用户组

$ usermod -a -G git nginx
$ chmod g+rx /home/git/

添加ssl证书或者自己生成一个

$ cd /etc/nginx
$ openssl req -new -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key

启动nginx

$ service nginx start

8、配置防火墙

配置iptables,使用户可以访问http、https和ssh的端口。

$ lokkit -s http -s https -s ssh

重新启动防火墙

$ service iptables restart

至此就算安装完成了。默认的账号密码:

admin@local.host
5iveL!fe

问题记录

a、网站不能添加用户和创建项目问题?

查了下日志,发现是权限的问题:

Errno::EACCES (Permission denied – /home/git/gitlab/log/application.log):

修改用户和所属用户组为git就可以了。

b、无法push?

在上面安装GitLab shell步骤时,一开始笔者是将配置中的gitlab_url设置成http://test.gitlab.com/,结果在push的时候出错了,后来查看GitLab项目日志,才发现GitLab shell和GitLab通信的时候产生了一个301跳转。这点通过GitLab的nginx配置也能看的出来。后来将http替换成https,self_signed_cert设置成true就OK了。

总结

安装的过程比较长,其中大部分时间花在了包的下载上。笔者以前没有接触过ruby,安装的过程中也了解了下Ruby、Gem、Bundle等软件,受益匪浅。一般来讲,照着上面的步骤安装,如果系统,软件等版本都一致的话,应该能成功安装。如果出现问题,可以多查查日志。GitLab项目的日志在该项目的log目录内。GitLab shell的日志在GitLab shell项目中的gitlab-shell.log

感谢

在安装的过程中多亏了朋友雷志伟的帮忙,少走了不少弯路。此外他现在正在汉化GitLab,英文不好的朋友有福了,有兴趣的朋友也可以参与进来,也可以直接使用已经汉化好的文件,地址:http://git.oschina.net/linxuix/Git-Lab-Zh。

本文转自:快乐编程 » centos 6.5安装GitLab全过程和问题记录

执行过程中仍有问题,请查看下面这篇文章:

http://www.linuxyan.com/web-server/353.html

 

关于如何使用,请看http://herry2013git.blog.163.com/blog/static/219568011201341111240751

http://blog.csdn.net/zy416548283/article/details/38057925

http://www.tuicool.com/articles/bEz6Vf

http://blog.163.com/thinki_cao/blog/static/83944875201322615252135/

 

提交所有分支:

git push --all origin

 提交所有tag:

git push origin --tags

 关于使用非标准ssh的端口而导致无法连接git的配置:

可以在.ssh目录中设置一个config文件(无后缀):

Host gitlab.XXX.com
User jsczxy2
Hostname gitlab.XXX.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 12345

 这样配置完成后,就可以直接连接gitlab的git服务器了。

如果是新机器,则最佳安装方式是bitnami的一键安装包。

https://bitnami.com/stack/gitlab/installer

参考: 

一键安装 gitlab7 on rhel6.4 并设置邮件发送

分享到:
评论

相关推荐

    Centos6.5 镜像文件下载

    ### Centos6.5镜像文件下载与安装详解 #### 一、CentOS 6.5简介 CentOS是Community ENTerprise Operating System的缩写,是一个基于Linux内核的操作系统,它主要提供了企业级的计算环境。CentOS 6.5作为CentOS 6...

    CentOS6.5一键安装Mysql5.6

    本文将详细介绍如何在CentOS 6.5上进行MySQL 5.6的一键安装过程,包括必要的环境准备、安装步骤、配置优化以及安全设置。 一、环境准备 在开始安装之前,确保你的CentOS 6.5系统已经更新到最新,运行以下命令进行...

    Centos6.5安装教程for oracle

    本文将详细介绍如何在服务器上安装并配置CentOS 6.5系统,特别是针对Oracle数据库环境的优化和配置方法。CentOS 6.5是一款稳定且广泛使用的Linux发行版,尤其适合企业级应用,包括Oracle数据库部署。 #### 二、安装...

    centos6.5安装教程,绝对详细,内附centos镜像等资源

    CentOS 6.5 是一个稳定、功能强大且广泛应用的 Linux 发行版,本文将详细介绍 CentOS 6.5 的安装步骤,包括虚拟机的安装、CentOS 镜像文件的下载和使用、连接工具的配置等内容。 一、虚拟机安装 虚拟机是安装 ...

    centOS6.5安装Oracle记录

    - CentOS 6.5安装时可以选择安装基础服务器并自定义,取消Java和Perl,但根据需求,可能需要安装Emacs和互联网应用程序,甚至桌面环境。 10. **Oracle数据库安装**: - 安装Oracle之前,必须先执行预安装脚本,这...

    centos6.5安装oracle12c(图形化安装)

    本教程将指导您如何在 CentOS 6.5 操作系统上安装 Oracle 12c 数据库管理系统,旨在帮助读者熟悉 Oracle 数据库安装和配置过程。 一、 安装图形化基础包 在安装 Oracle 12c 之前,需要安装图形化基础包,包括 xdm ...

    CentOs 6.5 telnet 客户端 linux 64(离线安装)

    centos 6.5 telnet 客户端 安装文件 rpm包 centos 6.5 telnet 服务端 安装文件 rpm包 http://vault.centos.org/6.5/os/x86_64/Packages/ 从官网下载亲测可以用

    ansible centos6.5安装及配置详细教程

    ansible centos6.5安装及配置详细教程,亲测可运行。

    centos6.5安装手册

    ### CentOS 6.5 安装手册 #### 一、安装前准备 在开始安装 CentOS 6.5 之前,我们需要准备以下几点:...综上所述,通过详细的步骤和注意事项指导,我们可以顺利完成 CentOS 6.5 的安装,并且能够确保系统的稳定运行。

    VMware安装CentOS6.5教程1.pdf

    CentOS6.5是我们将要安装的特定版本,适合初学者学习和实践。 在开始安装前,确保已安装VMware Workstation,并预留至少20GB的硬盘空间。你需要从官方镜像网站下载CentOS6.5的ISO文件,分为32位(i386)和64位(x86_64...

    CentOS6.5离线安装openssh8.6p1软件包-步骤及依赖.rar

    在本案例中,我们有"CentOS6.5离线安装openssh8.6p1软件包-步骤及依赖.rar"这个压缩包文件,它应该包含了openssh 8.6p1以及所有必需的依赖项。在拥有互联网连接的机器上,你需要访问OpenSSH的官方网站或者通过yum...

    Lancger#opslinux#Centos6.5安装node_exporter1

    一、安装 二、启动脚本 三、设置开机启动

    CentOS 6.5 安装说明.docx

    ### CentOS 6.5 安装说明 #### 创建虚拟机 在进行CentOS 6.5的安装之前,首先需要创建一个虚拟机环境。这里假设使用的是常见的虚拟化软件如VMware Workstation或者VirtualBox。 - **配置硬件资源**:在创建虚拟机...

    CentOs6.5镜像源

    CentOs6.5镜像源

    VMware创建安装CentOS6.5(配截图)

    6. 等待安装过程完成,出现 CentOS6.5 登录界面。 虚拟机网络配置 在 VMware 中,可以选择三种网络模式:NAT、Host-only 和 Bridged。其中,NAT 模式允许虚拟机访问主机的网络,而 host-only 模式则提供了一个私有...

    U盘安装CentOS 6.5

    "U盘安装CentOS 6.5" U盘安装CentOS 6.5是相对于光盘安装的一种更快速、更方便的安装方式。使用U盘安装CentOS 6.5可以跳过刻盘的步骤,速度也更快,而且没有硬件限制(新机器USB口都有,光驱不一定有)。 U盘安装...

    VMware安装CentOS6.5

    VMware安装CentOS6.5的详细教程涵盖了从下载CentOS6.5系统文件到配置虚拟机设置,再到操作系统安装过程中的每一步骤。首先,我们需要了解Linux操作系统和CentOS6.5的基本概念。Linux是一个开源的操作系统内核,而...

    CentOS6.5安装jdk,Tomcat,MYsql.doc

    `yum`是Yellow dog Updater, Modified的简称,是Fedora、Red Hat和CentOS系统中的一个前端软件包管理器,它能自动处理RPM包的依赖关系,方便地下载和安装软件。在确认系统已安装`yum`(可通过`rpm -qa | grep yum`...

    CentOS 6.5 最新可用的 Yum 源

    CentOS 6.5 的 软件源很多官方已经停止维护,该文件包内配置好的yum源是可以正常使用的。将原/etc/yum.repos.d/目录下原来的 .repo 备份, 然后把本文件包内的repo文件复制过去, yum clean all 后,再 yum ...

Global site tag (gtag.js) - Google Analytics