CentOS上安装GitLab

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

之前在公司因为工作需要,需要搭建一个基于的git的项目管理平台,最好能够比较贴近GitHub的管理方式,从网上找到了GitLab这个开源项目,无论是从界面上还是从功能上都还不错,结果公司的服务器是win的…就在自己的VPS上搭建了,我的服务器系统版本是Ubuntu 10.04 lts的,很方便地就升级到了12.04 lts,现在的Ubuntu确实很好用,感觉各方面做的都好了很多。不过按照官方的文档搭建GitLab的时候还是遇到了一些问题,主要涉及到的都是软件版本、文件权限等比较蛋疼的配置问题,当然这也和我自己没怎么做过后台有关。这次是在项目组的服务器上搭建GitLab,服务器的系统版本是CentOS,安装的过程和Ubuntu大同小异,这里本着补充后台知识的角度写这篇教程,也希望给别人带来方便(Ubuntu的就直接参照官方的吧,官方有个CentOS的一键安装脚本,不过你要是敢用就用吧)。

安装EPEL和依赖库

首先安装第三方的软件库EPEL和编译的依赖库,EPEL直接安装RPM包就可以了。

¥ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ yum -y update
$ yum -y install gcc gcc-c++ make autoconf libyaml-devel gdbm-devel ncurses-devel openssl-devel zlib-devel readline-devel curl-devel expat-devel gettext-devel  tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel sendmail patch libyaml* pcre-devel sqlite-devel vim

Python2.7+

$ mkdir /tmp/gitlab && cd /tmp/gitlab
$ curl --progress http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz | tar xvf
$ cd Python-2.7.5
$ ./configure --prefix=/usr/local
$ make && make install

安装好了以后需要注意的就是使用ln命令来创建连接,这样系统默认的PATH寻址的时候就能找到最新的版本(默认路径/usr/local/bin)。

$ sudo ln -s /usr/local/bin/python2.7 /usr/local/bin/python

Ruby2.0

$ cd /tmp/gitlab
$ curl --progress http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
$ cd ruby-2.0.0-p247
$ ./configure
$ make
$ make install

ruby2.0已经内置了gem(管理Ruby库和程序的标准包),所以只需要安装bundler(图像处理的一个源码库,这个不知道是干嘛用的)。

$ gem install bundler

如果你出现了Network Connected Error之类的网络问题(你懂得),rubygems.org存放在Amazon S3上的资源文件会间歇性地连接失败,(http://ruby.taobao.org/) 这个镜像源还是挺不错的,把GemFile中的地址修改为这个即可,然后继续添加连接。

$ ln -s /usr/local/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/bin/gem /usr/bin/gem
$ ln -s /usr/local/bin/bundle /usr/bin/bundle

Git和Gitolite

如果系统的已经安装Git,一定要保证版本大于1.7.10,GitHub和许多Git服务依赖的git版本都不能低于这个版本,但是CentOS 6.4默认的epel安装的版本偏偏是低于这个版本的,这里可以通过rpmforge源(和EPEL一样也是个第三方YUM源)的二进制包来更新。

// 安装rpmforge源
$ wget ‘http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm‘
$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ rpm -i ‘http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm‘
$ yum clean all

// change the enabled=0 flag to enabled=1 in the section labelled [rpmforge-extras].
$ cd /etc/yum.repos.d
$ vim (or whatever) rpmforge.repo

// 安装新版本Git
$ yum  update
$ yum provides git
$ yum install git-1.7.11.3-1.el6.rfx.x86_64

$ yum -y install git-all gitolite

MySql和Redis

GitLab支持MySQL和PostgreSQL,而且还必须安装Redis(有点悔恨当年数据库的课没好好学,然后现在有时还得自学)。

$ yum -y install mysql mysql-devel mysql-server redis
$ service mysqld start
$ mysql -u root
$ mysql> CREATE USER ‘gitlab‘@‘localhost‘ IDENTIFIED BY ‘gitlab‘;
$ mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
$ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘gitlab‘@‘localhost‘;
$ mysql> \q
$ service redis start

Nginx

GtiLab当然也支持Apache,但毕竟Nginx的性能要好太多了(据相关测试,高并发连接的情况下,Nginx的性能能胜过10倍的Apache)。

$ yum -y install nginx
$ service nginx start

至此,主要的软件包都已经安装完毕,下面就要进行配置了。

GitLab Uesr

$ useradd -c ‘GitLab‘ git
$ passwd -l git
$ su git

后面就直接切换到git账户下操作,可以省去文件权限的一些问题,如果还是出出现了Permission的一些问题,直接使用chown命令进行修改就可以了。

GitLab Shell

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

通过git tag来查看最新的版本并切换

$ git checkout v1.7.9

修改配置文件,添加自己domain后安装即可。

$ vi config.yml
$ ./bin/install

GitLab

$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd /home/git/gitlab
$ git checkout 6-3-stable
$ cd /home/git/gitlab
$ cp config.yml{.example,}
$ vi config/gitlab.yml

$ mkdir tmp/pids/
$ mkdir tmp/sockets/
$ chown -R git log/
$ chown -R git tmp/
$ chmod -R u+rwX log/
$ chmod -R u+rwX tmp/
$ chmod -R u+rwX tmp/pids/
$ chmod -R u+rwX tmp/sockets/

创建satellites目录,保存各个用户的仓库。

$ mkdir /home/git/gitlab-satellites
$ mkdir public/uploads
$ chmod -R u+rwX  public/uploads

修改unicorn配置文件:

$ cd /home/git/gitlab
$ cp config/unicorn.rb{.example,}
$ vi config/unicorn.rb

设置git的全局配置参数:

$ git config --global user.name "GitLab"
$ git config --global user.email "[email protected]"
$ git config --global core.autocrlf input

设置GitLab的数据库:

$ cp config/database.yml{.mysql,}
$ vi config/database.yml
$ chmod o-rwx config/database.yml

安装相关Ruby Gems依赖包;

$ cd /home/git/gitlab
$ [sudo] gem install charlock_holmes --version ‘0.6.9.4‘
$ bundle install --deployment --without development test postgres aws

// 初始化数据库数据
$ bundle exec rake gitlab:setup RAILS_ENV=production

设置init脚本:

$ sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
$ sudo chmod +x /etc/init.d/gitlab

GitLab Check

$ bundle exec rake gitlab:env:info RAILS_ENV=production
$ sudo service gitlab start
$ bundle exec rake gitlab:check RAILS_ENV=production

一定要通过最后一项的check,注意切换到git账户进行check,特别是进行IP地址和端口修改的时候需要重新进行check。

配置Nginx

这里需要注意的是Ubuntu下默认的下载的Nginx版本和CentOS是不同的,发行版不同配置结构是有一定差异的。

$ mkdir -p /etc/nginx/sites-available/
$ mkdir -p /etc/nginx/sites-enabled/
$ cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
$ ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

在加载配置文件的时候,确定nginx.conf索引的配置文件在哪个目录,包括如果你想修改端口的话(nginx和apaache的80端口冲突了)也是要注意Nginx发布加载的配置文件是监听哪个端口的。我所使用的Nginx的版本是1.0.15,修改了default.conf端口监听和nginx.conf来加载自己的配置文件。

$ http {
$ …
$ # Load config files from the /etc/nginx/conf.d directory
$ # The default server is in conf.d/default.conf
$ include /etc/nginx/conf.d/*.conf;
$ include /etc/nginx/sites-enabled/*;
$ …
$ }

重启各项服务:

$ sudo service nginx restart
$ sudo service gitlab restart

如果Nginx无法重启,提示80端口占用,说明的端口修改还是不正确的。

Done

现在访问自己的domain就可以看到GitLab的登陆界面了,为了加快域名解析的速度可以配置下hosts文件。

$ echo "127.0.0.1 YOUR_DOMAIN" >> /etc/hosts

默认的用户名和密码:

[email protected]
5iveL!fe

修改端口

修改HTTP服务器unicorn的占用端口:

$ vi /home/git/gitlab/config/unicorn.rb
# listen "127.0.0.1:9292", :tcp_nopush => true

修改GitLab的发布端口:

$ vi /etc/nginx/sites-enabled/gitlab
# listen *:888 default_server;
$ vi /home/git/gitlab/config/gitlab.yml
# port: 888
$ vi /home/git/gitlab-shell/config.yml
# gitlab_url: "http://mygitdomain.com:888"

添加SSL

假设我们准备好了服务器的密钥 server.key 和证书 server.crt 和根证书 ca.crt (如何获得证书参考 ssl证书生成 ), 且将这些文件放在/etc/nginx/sites-available/下面。

# 将以下内容添加到 /etc/nginx/sites-available/gitlab 最后。
# 替换 server_name 指定的域名
server {
  listen *:443;
  ssl                  on;
  ssl_certificate      /etc/nginx/sites-available/server.crt;
  ssl_certificate_key  /etc/nginx/sites-available/server.key;  

  server_name mygitdomain.com;
  #ubuntu1204-dell source.cml.com;     # e.g., server_name source.example.com;
  root /home/gitlab/gitlab/public;  

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/gitlab_ssl_access.log;
  error_log   /var/log/nginx/gitlab_ssl_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_pass http://gitlab;
  }
}
时间: 2024-10-12 10:38:18

CentOS上安装GitLab的相关文章

Linux系统入门学习:在CentOS上安装phpMyAdmin

问题:我正在CentOS上运行一个MySQL/MariaDB服务,并且我想要通过网络接口来用phpMyAdmin来管理数据库.在CentOS上安装phpMyAdmin的最佳方法是什么? phpMyAdmin是一款以PHP为基础,基于Web的MySQL/MariaDB数据库管理工具.虽然已经存在着一些诸如Adminer的轻量级数据库管理工具, 但是phpMyAdmin还是更加广泛应用于网站管理员之中来进行各种MySQL/MariaDB的管理任务.它支持几乎所有MySQL数据库/表的相关操作,比如浏

CentOS上安装Hadoop2.7,添加数据节点,运行wordcount

安装hadoop的步骤比较繁琐,但是并不难. 在CentOS上安装Hadoop2.7 1. 安装 CentOS,注:图形界面并无必要 2. 在CentOS里设置静态IP,手工编辑如下4个文件 /etc/hosts /etc/sysconfig/netwok /etc/hostname /etc/sysconfig/network-scripts/ifcfg-eno1677773 3. 关闭防火墙 Close firewalld systemctl stop firewalld.service #

什么是EPEL 及 Centos上安装EPEL

RHEL以及他的衍生发行版如CentOS.Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题. 什么是EPEL? EPEL的全称叫 Extra Packages for Enterprise Linux .EPEL是由 Fedora 社区打造,为 R

NoSql1 在Linux(CentOS)上安装memcached及使用

前言:       今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看下这部分的基础知识,所以现在打算好好把这两部分的基础再看一看.我会把看到的东西努力记录下来,给自己以后留个参考,如果能帮助到大家,自然是更好了~. 1.在Linux(CentOS)上安装memcached及使用.http://www.cnblogs.com/PurpleDream/p/4298208

在Linux(CentOS)上安装MySql详细记录

前记:  毕业两年了,前两天换了份工作,由以前的传统行业跳到了互联网行业.之前的公司一直在用WinServer2003+Tomcat+SqlServer/Oracle这套部署环境.对于Linux+Tomcat(或其他容器)+Mysql这套之前没用用过.所以利用这周末的我在阿里云上49元搞了个linux(centos 64位)的服务器. 刚开始先装了JDK1.6,安装了Tomcat6.0.这过程中没有遇到太大的问题, 小问题也google一下就解决了.而周六晚上开始安装Mysql,于是到今天下午为

centos上安装git

按照这篇文章 安装依赖: yum install curl yum install curl-devel yum install zlib-devel yum install openssl-devel yum install perl yum install cpio yum install expat-devel yum install gettext-devel 下载git源码包: https://github.com/git/git/releases 安装: cd /git源码包解压路径

在centos上安装skyeye

中间遇到的问题:1,make的时候,提示gui/x.cc:42:22: error: X11/Xlib.h: No such file or direct解决:yum install libX11-devel2, error: X11/xpm.h: No such file or directory解决:yum install libXpm-devel 参考:1,SkyEye的使用(一)http://blog.csdn.net/htttw/article/details/72267542,sky

在Centos上安装RabbitMQ流程(转)

在Centos上安装RabbitMQ流程------------------------ 1. 需求 由于项目中要用到消息队列,经过ActiveMQ与RabbitMQ的比较,最终选择了RabbbitMQ做为我们的消息系统,但是ActiveMQ在效率和可扩展性上都不错,只是网上很多人反应它会时常崩溃,而且随着消息并发数的增加,时常会出现连接很慢的情况.   目前我测试的服务器系统信息如下: LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1

CentOS上安装MongoDB速记

测试环境版本CentOS 6.5 先创建安装目标文件夹并进入至该文件夹: mkdir /opt/mongodb cd /opt/mongodb 给mongodb创建用户及用户组: groupadd mongodb useradd -g mongodb mongodb 下载安装所需源文件: 这个下载很慢,我收藏mongodb 2.6.1版本 可以从这里下载:http://pan.baidu.com/s/1nfAA6 或者从mongodb.org下载(很慢) curl -O http://downl