部署自己的gitlab服务器

本文系统:centos 6.5 x64

ip: 172.16.162.130

GitLab         8.0.5
GitLab         Shell2.6.6
GitLab         APIv3
Ruby           2.2.3p173
Rails          4.1.12

1、安装依赖包

[[email protected] ~]# yum install gcc* libicu* -y

2、安装git程序,因为系统自带版本太低

[[email protected] ~]# mkdir /opt/src /opt/soft
[[email protected] src]# pwd
/opt/src
[[email protected] src]# ls
git-2.6.2.tar.xz
[[email protected] src]# tar xf git-2.6.2.tar.xz 
[[email protected] src]# cd git-2.6.2
[[email protected] git-2.6.2]# ./configure --prefix=/opt/soft/git --with-curl --with-expat
[[email protected] git-2.6.2]#  make && make install
[[email protected] git-2.6.2]# echo ‘export PATH=/opt/soft/git/bin:$PATH‘ >> /etc/profile 
[[email protected] git-2.6.2]# source ~/.bash_profile 
[[email protected] git-2.6.2]# git --version
git version 2.6.2
[[email protected] git-2.6.2]#

2、安装ruby

[[email protected] src]# tar xf ruby-2.2.3.tar.gz
[[email protected] src]# cd ruby-2.2.3
[[email protected] ruby-2.2.3]# ./configure --prefix=/opt/soft/ruby --disable-install-rdoc
[[email protected] ruby-2.2.3]# make && make install
[[email protected] ruby-2.2.3]# echo ‘export PATH=/opt/soft/ruby/bin:$PATH‘ >> /etc/profile
[[email protected] ruby-2.2.3]# source ~/.bash_profile 
[[email protected] ruby-2.2.3]# gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ 
https://ruby.taobao.org/ added to sources
https://rubygems.org/ removed from sources
[[email protected] ruby-2.2.3]# gem install bundler --no-ri --no-rdoc
Fetching: bundler-1.11.2.gem (100%)
Successfully installed bundler-1.11.2
1 gem installed
[[email protected] ruby-2.2.3]#

3、安装nodejs

[[email protected] src]# tar zxf node-v4.2.2-linux-x64.tar.gz 
[[email protected] src]# mv node-v4.2.2-linux-x64 /opt/soft/nodejs
[[email protected] src]# echo ‘export PATH=/opt/soft/nodejs/bin:$PATH‘ >> /etc/profile

4、安装go

[[email protected] src]# tar xf go1.5.1.linux-amd64.tar 
[[email protected] src]# mv go /opt/soft/
[[email protected] src]# echo ‘export GOROOT=/opt/soft/go‘ >> /etc/profile
[[email protected] src]# echo ‘export GOARCH=amd64‘ >> /etc/profile
[[email protected] src]# echo ‘export GOOS=linux‘ >> /etc/profile
[[email protected] src]# echo ‘export GOBIN=$GOROOT/bin‘ >> /etc/profile
[[email protected] src]# echo ‘export GOPATH=/opt/soft/go/code/go‘ >> /etc/profile
[[email protected] src]# echo ‘export PATH=$GOBIN:$PATH‘ >> /etc/profile

5、安装redis

[[email protected] ~]# yum install redis -y
[[email protected] ~]# /etc/init.d/redis start
启动 :[确定]

6、安装mysql

[[email protected] ~]# yum install mysql-server -y
[[email protected] ~]# /etc/init.d/mysqld start
[[email protected] ~]# mysql
mysql> create database gitlab;
mysql> grant all privileges on gitlab.* to [email protected]‘localhost‘ identified by ‘gitlab‘;

7、安装gitlab

[[email protected] ~]# useradd -d /opt/git git
[[email protected] ~]# chmod 755 /opt/git
[[email protected] ~]# su - git
[[email protected] ~]$ pwd
/opt/git
[[email protected] ~]$ git clone https://gitlab.com/larryli/gitlab.git -b 8-0-zh gitlab
正克隆到 ‘gitlab‘...
remote: Counting objects: 214761, done.
remote: Compressing objects: 100% (45405/45405), done.
remote: Total 214761 (delta 166493), reused 214623 (delta 166408)
接收对象中: 100% (214761/214761), 111.36 MiB | 74.00 KiB/s, 完成.
处理 delta 中: 100% (166493/166493), 完成.
检查连接... 完成。
[[email protected] ~]$ cd gitlab/
[[email protected] gitlab]$ cp config/gitlab.yml.example config/gitlab.yml
[[email protected] gitlab]$ cp config/secrets.yml.example config/secrets.yml
[[email protected] gitlab]$ cp config/unicorn.rb.example config/unicorn.rb
[[email protected] gitlab]$ cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
[[email protected] gitlab]$ cp config/resque.yml.example config/resque.yml
[[email protected] gitlab]$ cp config/database.yml.mysql config/database.yml
[[email protected] gitlab]$ mkdir /opt/git/gitlab-satellites/

8、修改配置文件,因为默认是在 git 账号下的 home 目录,我们这里是在 /opt/git

  • 修改 gitlab.yml 配置,将行host: localhost 修改为本机IP地址或者域名
  • 修改 gitlab.yml ,配置git路径行 bin_path: /usr/bin/git 为 bin_path: /opt/soft/git/bin/git
[[email protected] gitlab]$ grep home config/gitlab.yml
    path: /home/git/gitlab-satellites/
    path: /home/git/gitlab-shell/
    repos_path: /home/git/repositories/
    hooks_path: /home/git/gitlab-shell/hooks/
    secret_file: /home/git/gitlab/.gitlab_shell_secret

分别修改为 /opt 下,并且创建相应目录

[[email protected] gitlab]$ mkdir -p  /opt/git/gitlab-satellites /opt/git/gitlab-shell /opt/git/repositories /opt/git/gitlab-shell/hooks/
[[email protected] gitlab]$ grep home config/unicorn.rb
working_directory "/home/git/gitlab" # available in 0.94.0+
listen "/home/git/gitlab/tmp/sockets/gitlab.socket", :backlog => 1024
pid "/home/git/gitlab/tmp/pids/unicorn.pid"
stderr_path "/home/git/gitlab/log/unicorn.stderr.log"
stdout_path "/home/git/gitlab/log/unicorn.stdout.log"
[[email protected] gitlab]$

9、修改Redis相关配置 config/resque.yml 文件 production: unix:/var/run/redis/redis.sock 为 production: redis://172.16.162.130:6379

数据库配置:

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

10、修改 Gemfile 首行内容 source "https://rubygems.org"  修改为 source "https://ruby.taobao.org"。

安装mysql包

[[email protected] gitlab]$ bundle install --deployment --without development test postgres aws kerberos

当出现下面问题时:

Installing timers 4.0.4
An error occurred while installing charlock_holmes (0.6.9.4), and Bundler cannot continue.
Make sure that `gem install charlock_holmes -v ‘0.6.9.4‘` succeeds before bundling.
[[email protected] gitlab]$ gem install charlock_holmes -v ‘0.6.9.4‘
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org/quick/Marshal.4.8/charlock_holmes-0.6.9.4.gemspec.rz)
[[email protected] gitlab]$

先安装下面的 rpm 包,然后再执行上面的命令

[[email protected] src]# rpm -vhi libicu-devel-4.2.1-9.1.el6_2.x86_64.rpm 
warning: libicu-devel-4.2.1-9.1.el6_2.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
Preparing...                ########################################### [100%]
   1:libicu-devel           ########################################### [100%]
[[email protected] src]#

当出现下面的问题时:

Installing nokogiri 1.6.6.2 with native extensions
An error occurred while installing rugged (0.22.2), and Bundler cannot continue.
Make sure that `gem install rugged -v ‘0.22.2‘` succeeds before bundling.
[[email protected] gitlab]$

先安装下面的 rpm 包,然后再执行上面的命令

[[email protected] src]# yum install cmake -y

11、安装 gitlab-shell

[[email protected] gitlab]$ bundle exec rake gitlab:shell:install[v2.6.6] REDIS_URL=redis://172.16.162.130:6379 RAILS_ENV=production

当出现如下报错:

[[email protected] gitlab]$   bundle exec rake gitlab:shell:install[v2.6.6] REDIS_URL=redis://172.16.162.130:6379 RAILS_ENV=production
WARNING: This version of GitLab depends on gitlab-shell 2.6.5, but you‘re running Unknown. Please update gitlab-shell.
Missing `db_key_base` for ‘production‘ environment. The secrets will be generated and stored in `config/secrets.yml`
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /opt/git/.ssh/environment
/opt/git/gitlab/lib/tasks/gitlab/shell.rake:73:in `initialize‘
/opt/git/gitlab/lib/tasks/gitlab/shell.rake:73:in `open‘
/opt/git/gitlab/lib/tasks/gitlab/shell.rake:73:in `block (3 levels) in <top (required)>‘
Tasks: TOP => gitlab:shell:install
(See full trace by running task with --trace)
[[email protected] gitlab]$

安装如下处理:

[[email protected] ~]$ mkdir /opt/git/.ssh
[[email protected] gitlab]$ bundle exec rake gitlab:shell:install[v2.6.6] REDIS_URL=redis://172.16.162.130:6379 RAILS_ENV=production
WARNING: This version of GitLab depends on gitlab-shell 2.6.5, but you‘re running Unknown. Please update gitlab-shell.
正克隆到 ‘/opt/git/gitlab-shell‘...
remote: Counting objects: 2558, done.
remote: Compressing objects: 100% (895/895), done.
remote: Total 2558 (delta 1607), reused 2501 (delta 1571)
接收对象中: 100% (2558/2558), 360.62 KiB | 241.00 KiB/s, 完成.
处理 delta 中: 100% (1607/1607), 完成.
检查连接... 完成。
HEAD 现在位于 cdaa9ae Merge branch ‘bump_2.6.6‘ into ‘master‘
mkdir -p /opt/git/repositories/: OK
mkdir -p /opt/git/.ssh: OK
chmod 700 /opt/git/.ssh: OK
touch /opt/git/.ssh/authorized_keys: OK
chmod 600 /opt/git/.ssh/authorized_keys: OK
chmod ug+rwX,o-rwx /opt/git/repositories/: OK
[[email protected] gitlab]$

12、安装gitlab-git-http-server

[[email protected] ~]$ git clone https://gitlab.com/gitlab-org/gitlab-git-http-server.git -b 0.2.14 
正克隆到 ‘gitlab-git-http-server‘...
remote: Counting objects: 418, done.
remote: Compressing objects: 100% (169/169), done.
remote: Total 418 (delta 214), reused 417 (delta 213)
接收对象中: 100% (418/418), 63.16 KiB | 0 bytes/s, 完成.
处理 delta 中: 100% (214/214), 完成.
检查连接... 完成。
Note: checking out ‘7c63f08f7051348e56b903fc0bbefcfed398fc1c‘.
You are in ‘detached HEAD‘ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
  git checkout -b <new-branch-name>
[[email protected] ~]$
[[email protected] ~]$ cd gitlab-git-http-server/
[[email protected] gitlab-git-http-server]$ ls
githandler.go  LICENSE  main.go  main_test.go  Makefile  README.md  support  test
[[email protected] gitlab-git-http-server]$ make
go build -ldflags "-X main.Version 0.2.14-20160405.151430" -o gitlab-git-http-server
# _/opt/git/gitlab-git-http-server
link: warning: option -X main.Version 0.2.14-20160405.151430 may not work in future releases; use -X main.Version=0.2.14-20160405.151430
[[email protected] gitlab-git-http-server]$

13、初始化数据库并激活高级功能  (lansgg123为 web管理员root的密码)

[[email protected] gitlab-git-http-server]$ cd ~/gitlab
[[email protected] gitlab]$ bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=lansgg123

14、复制启动脚本等内容:

[[email protected] git]# cp gitlab/lib/support/init.d/gitlab /etc/init.d/   
[[email protected] git]# cp gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/
[[email protected] git]# su - git
[[email protected] ~]$ cd gitlab

检查下应用信息状态:

[[email protected] gitlab]$ bundle exec rake gitlab:env:info RAILS_ENV=production
System information
System:         RedHatEnterpriseServer 6.5
Current User:   git
Using RVM:      no
Ruby Version:   2.2.3p173
Gem Version:    2.4.5.1
Bundler Version:1.11.2
Rake Version:   10.4.2
Sidekiq Version:3.3.0
GitLab information
Version:        8.0.5
Revision:       a6659af
Directory:      /opt/git/gitlab
DB Adapter:     mysql2
URL:            http://172.16.162.130
HTTP Clone URL: http://172.16.162.130/some-group/some-project.git
SSH Clone URL:  [email protected]:some-group/some-project.git
Using LDAP:     no
Using Omniauth: no
GitLab Shell
Version:        2.6.6
Repositories:   /opt/git/repositories/
Hooks:          /opt/git/gitlab-shell/hooks/
Git:            /opt/soft/git/bin/git
[[email protected] gitlab]$

编译静态文件

[[email protected] gitlab]$ bundle exec rake assets:precompile RAILS_ENV=production

15、安装nginx

nginx 安装 --> 传送门

16、编辑配置文件:

[[email protected] conf]# pwd
/opt/soft/nginx/conf
[[email protected] conf]# cat nginx.conf
user  nginx nginx;
worker_processes  auto;
 
error_log  logs/error.log error;
 
pid        logs/nginx.pid;
worker_rlimit_nofile    65536;
 
events
{
    use epoll;
    accept_mutex off;
    worker_connections  65536;
}
 
http
{
    include       mime.types;
    default_type  text/html;
 
    charset UTF-8;
    server_names_hash_bucket_size   128;
    client_header_buffer_size       4k;
    large_client_header_buffers  4 32k;
    client_max_body_size            20m;
 
    open_file_cache max=65536  inactive=60s;
    open_file_cache_valid      80s;
    open_file_cache_min_uses   1;
 
    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 
    access_log  logs/access.log  main;
 
    sendfile    on;
    server_tokens off;
 
    keepalive_timeout  60;
 
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers  4   64k;
    gzip_http_version   1.1;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 
    upstream gitlab 
    {
        server unix:/opt/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
    }
 
    upstream gitlab-git-http-server 
    {
        server unix:/opt/git/gitlab/tmp/sockets/gitlab-git-http-server.socket fail_timeout=0;
    }
 
    server {
        listen      80;
        server_name _;
        root        /opt/git/gitlab/public;
 
        location /
        {
            try_files $uri $uri/index.html $uri.html @gitlab;
        }
 
        location /uploads/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            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_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }
 
        location @gitlab
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            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_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }
 
        location ~ [-\/\w\.]+\.git\/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_buffering off;
            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_set_header    X-Forwarded-Proto   $scheme;
            proxy_pass http://gitlab-git-http-server;
        }
 
        location ~ ^/(assets)/
        {
            root /opt/git/gitlab/public;
            gzip_static on;
            expires max;
            add_header Cache-Control public;
        }
 
        error_page 502 /502.html;
    }
}

17、启动服务,测试:

[[email protected] sbin]# ./nginx 
[[email protected] sbin]# pwd
/opt/soft/nginx/sbin
[[email protected] sbin]# 
[[email protected] sbin]# /etc/init.d/gitlab start
Starting GitLab Unicorn
Starting GitLab Sidekiq
Starting gitlab-git-http-server
The GitLab Unicorn web server with pid 10956 is running.
The GitLab Sidekiq job dispatcher with pid 11004 is running.
The gitlab-git-http-server with pid 10987 is running.
GitLab and all its components are up and running.
[[email protected] sbin]#

启动gitlab前,要修改gitlab的启动程序。 (下面两行)

app_user="git"
app_root="/opt/$app_user/gitlab"

访问地址:http://172.16.162.130/

18、smtp邮件设置,比如用户注册,验证、找回密码、提交等邮件发送设置。

[[email protected] gitlab]$ vim config/environments/production.rb 
  config.action_mailer.delivery_method = :smtp
[[email protected] gitlab]$ cp config/initializers/smtp_settings.rb.sample config/initializers/smtp_settings.rb
[[email protected] gitlab]$ vim config/initializers/smtp_settings.rb

if Gitlab::Application.config.action_mailer.delivery_method == :smtp
  ActionMailer::Base.smtp_settings = {
    address: "smtp.domain.com",
    port: 587,
    user_name: "mail_username",
    password: "mail_password",
    domain: "domain.com",
    authentication: ‘plain‘, 
    enable_starttls_auto: true 
  }end

Tip: 如果没用smtp没有开加密连接的话 enable_starttls_auto 的值应该配置为 false

这里需要注意一个问题, 如果你的smtp服务器做了权限限制,只能以登陆账户的邮件帐号发邮件的话,还需要修改一处地方

编辑 config/gitlab.yml 找到下面两个字段将内容改成你的邮件帐户地址:

    email_from: [email protected]
    email_display_name: GitLab
    email_reply_to: [email protected]
时间: 2024-12-20 18:13:58

部署自己的gitlab服务器的相关文章

Git系列②之部署企业级开源仓库gitlab服务器

上一篇我们介绍了github的常见使用方法,下面开始部署本地开源仓库gitlab GitLab 是一个用于仓库管理系统的开源项目. 1.安装配置gitlab依赖项 如想使用Postfix来发送邮件,在安装期间请选择'Internet Site'. 您也可以用sendmai或者 配置SMTP服务并使用SMTP发送邮件在 Centos7系统上, 下面的命令会在系统防火墙里面开放HTTP和SSH端口. 安装相关依赖,并设置开机自启动 # yum install -y curl policycoreut

centos部署配置gerrit+gitlab实现代码的review与自动同步

编者按: 近期项目需要进行gerrit的调研工作,于是才有了这篇整理性的文章,当然网络上面还有很多其他比较优秀的帖子值得借鉴,这里推荐几个: Gerrit代码审核服务器搭建全过程 Jenkins+Ansible+Gitlab自动化部署三剑客 构建基于Jenkins + Github的持续集成环境 环境准备: mysql  -- yum install mysql* -y java     -- yum install java-1.8.0-openjdk* -y gitweb-- yum ins

gitlab服务器

1.安装软件# yum -y install curl policycoreutils postfix2.设置postfix开机自启,postfix支持gitlab发信功能# systemctl enable postfix# systemctl start postfix3.获取gitlab-ce的rpm包# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.

docker搭建gitlab服务器(Centos7)

系统环境:CentOS Linux release 7.6.1810 (Core) git版本:gitlab/gitlab-ce 一.安装和启动docker 见HTTPRUNNERMANAGER安装部署 二.拉取镜像文件 docker images  #查看镜像文件,没拉取之前是没有任何镜像的 docker search gitlab #搜索镜像 docker pull docker.io/gitlab/gitlab-ce  #下载镜像,下载完成后 docker images #查看镜像文件 三

第十二节 VMware View 6.0 菜鸟入门 部署和安装RDS服务器

第十二节 VMware View 6.0 菜鸟入门 部署和安装RDS服务器

ubuntu14.04搭建gitlab服务器

某日,工作需要,需要搭建一个版本控制器.查看资料,当前比较流行的有gitlab,svn.由于常用github,所以更倾向于gitlab.下面记录了搭建的流程. 1.安装邮件支持的插件: sudo apt-get install curl openssh-server ca-certificates postfix 安装过程中出现的界面均可选择默认. 2.添加官方源,并安装: curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.d

如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法

记一次蛋疼的折腾. 弄了一晚上最后发觉是360浏览器的问题,换个浏览器就好了.垃圾360用什么IE7文档模式.导致界面和功能失效. 建议大家测试的时候用firefox或者chrome. 项目部署到服务器后360浏览器兼容模式显示错误的解决办法:http://www.cnblogs.com/zj917/p/6697724.html -------------------------------------------------- 正文: 上篇博客说临时起意做了个有意思的聊天版,就想把它部署到阿里

首次尝试构建网站并部署到本地IIS服务器上

今天是我第一次接触.NET,尝试着简单地制作一个页面并部署到本地. 这是一个傻瓜式教程,仅作个人记录,见笑了. ------------------------------------------------------------- 本次用到的工具: 1. Win7; 2. Visual Studio 2013: 3. NET Framework 4.0(系统自带); 4. IIS(系统自带): -------------------------------------------------

jenkins在使用maven部署到nginx+tomcat服务器时出现504错误

环境:jenkins+maven+nginx+tomcat 在执行jenkins job发布项目到远程服务器,服务器使用nginx+tomcat.默认使用80端口,通过nginx转发请求.在执行tomcat:redeploy时,出现下面的错误: [ERROR] Failed toexecute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:redeploy (default-cli)on project sgt-node: Cannot invok