CentOS7下源码方式安装gitlab

环境描述

操作系统: centos7

redis: >=2.8

mysql >=5.5.14

git >=2.7.4

架构设计

一台gitlab服务器 gitlab-master

一台gitlab数据备份 gitlab-backup

一台数据库主库 data-master

一台数据库从库 data-slave

升级yum源与安装依赖 ++所有的机器都需要的安装步骤++

安装mysql+redis ++数据库服务器需要的安装步骤++

data-master data-slave 安装mysql+redis

升级yum源与安装依赖

  1. yum -y update
  2. yum -y groupinstall "Development Tools"
  3. yum install -y cmake python-docutils libarchive python-pillow libwebp zlib zlib-devel libyaml libyaml-devel openssl-devel openssl libffi libffi-devel curl curl-devel openssh-server libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel logrotate python-docutils perl-devel vim
  4. reboot

++所有的机器都需要的安装步骤++


安装mysql+redis

安装数据库服务器.安装gitlab会用到.

也可以把所有的软件都安装到一台机器.

备份的时候可以把备份包上传到其他服务器上.

因为我们把mysql与redis分开分别安装到data-masterdata-slave

两台安装步骤一模一样

安装redis
  1. rpm -i https://mirrors.tuna.tsinghua.edu.cn/epel//epel-release-latest-7.noarch.rpm
  2. sudo yum install redis
  3. systemctl enable redis
  4. systemctl start redis

安装完后

需要将配置文件/etc/redis.conf

bind 127.0.0.1注释掉或者改成gitlab的ip地址

安装mysql
  1. rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
  2. yum install mysql-community-server mysql-community-client
  3. systemctl enable mysqld
  4. systemctl start mysqld
创建gitlab需要的表结构
  1. CREATE USER 'git'@'%' IDENTIFIED BY 'git';
  2. CREATE USER 'git'@'localhost' IDENTIFIED BY 'git';
  3. CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
  4. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `gitlabhq_production`.* TO 'git'@'%';
  5. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `gitlabhq_production`.* TO 'git'@'localhost';

创建完成可以gitlab服务器上

在命令行中用git账号访问mysql数据库测试是否可用

++数据库服务器需要的安装步骤++


安装mysql依赖包

  1. rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
  2. yum install mysql-community-client mysql-community-devel

安装nodejs

  1. rpm -i https://mirrors.tuna.tsinghua.edu.cn/epel//epel-release-latest-7.noarch.rpm
  2. yum -y install nodejs

安装git

  1. yum install asciidoc xmlto texinfo docbook2X perl-devel
  2. cd /usr/bin
  3. ln -s db2x_docbook2texi docbook2x-texi
  4. cd /tmp
  5. curl --remote-name --progress https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz
  6. tar -xzf git-2.7.4.tar.gz
  7. cd git-2.7.4/
  8. ./configure --with-curl=/usr/include/curl
  9. make prefix=/usr install install-doc install-html install-info
  10. make install

安装邮件服务器

  1. yum install postfix
  2. systemctl enable postfix
  3. systemctl start postfix

安装ruby2.3

  1. mkdir /tmp/ruby && cd /tmp/ruby
  2. curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
  3. tar xzf ruby-2.3.1.tar.gz
  4. cd ruby-2.3.1
  5. ./configure --disable-install-rdoc
  6. make && make install

设置环境变量

  1. vim /etc/bashrc
  2. 最后一行添加
  3. export PATH="$PATH:/usr/local/bin"
  4. 关闭selinux
  5. vim /etc/sysconfig/selinux
  6. 最后重启机器
  7. reboot

安装 Bundler Gem:

  1. gem install bundler --no-ri --no-rdoc

安装go语言

  1. mkdir /tmp/go && cd /tmp/go
  2. curl --remote-name --progress https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
  3. tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz
  4. ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/bin

添加git账号

  1. adduser -s /bin/false -m -d /home/git git

下载gitlab源码包

  1. cd /home/git/gitlab
  2. 8-9目前可以汉化的最高版本
  3. git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-9-stable gitlab

配置gitlab

  1. chown -R git:git /home/git/gitlab/
  2. cd /home/git/gitlab
  3. 切换到git账号
  4. sudo su git
  5. 生成配置文件
  6. cp config/gitlab.yml.example config/gitlab.yml
  7. 生成secret文件
  8. cp config/secrets.yml.example config/secrets.yml
  9. chmod 0600 config/secrets.yml
  10. chown -R git log/
  11. chown -R git tmp/
  12. chmod -R u+rwX,go-w log/
  13. chmod -R u+rwX tmp/
  14. chmod -R u+rwX tmp/pids/
  15. chmod -R u+rwX tmp/sockets/
  16. mkdir public/uploads/
  17. chmod 0700 public/uploads
  18. chmod -R u+rwX builds/
  19. 生成unicorn文件
  20. cp config/unicorn.rb.example config/unicorn.rb
  21. cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
  22. git config --global core.autocrlf input
  23. git config --global gc.auto 0
  24. git config --global repack.writeBitmaps true
  25. cp config/resque.yml.example config/resque.yml
  26. 更改redis链接地址
  27. vim config/resque.yml
  28. production: redis://172.16.24.127:6379
  29. 连接mysql 取消注释host 更改passwordgit
  30. cp config/database.yml.mysql config/database.yml
  31. vim config/database.yml

安装Gems

  1. bundle config mirror.https://rubygems.org https://gems.ruby-china.org
  2. bundle install --deployment --without development test postgres aws kerberos -V

安装GitLab Shell

  1. bundle exec rake gitlab:shell:install REDIS_URL=redis://redis的ip地址:端口 RAILS_ENV=production SKIP_STORAGE_VALIDATION=true
  2. 确认一下redis地址正确性
  3. vim /home/git/gitlab-shell/config.yml

安装gitlab-workhorse

  1. cd /home/git
  2. git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
  3. cd gitlab-workhorse
  4. git checkout v0.8.4
  5. make

初始化数据库与高级功能

只需在git-master服务器上执行一次 gitlab-backup无需再次执行该命令.

  1. cd /home/git/gitlab
  2. bundle exec rake gitlab:setup RAILS_ENV=production
  3. # Type 'yes' to create the database tables.
  4. 输入yes
  5. # When done you see 'Administrator account created:'
  6. 表示初始化成功
  7. exit

安装启动脚本

  1. sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
  2. sudo chkconfig gitlab on
  3. 安装logrotate
  4. sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

检测应用状态 编译 Assets

  1. su git
  2. bundle exec rake gitlab:env:info RAILS_ENV=production
  3. bundle exec rake assets:precompile RAILS_ENV=production
  4. exit

启动GitLab

  1. servicce gitlab start

安装nginx

  1. sudo yum install -y nginx
  2. sudo cp lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
  3. 将端口改成8088
  4. sudo vim /etc/nginx/nginx.conf
  5. vim /etc/nginx/conf.d/default.conf
  6. sudo nginx -t
  7. 更改selinux
  8. sudo vim /etc/sysconfig/selinux
  9. sudo service nginx restart
  10. sudo chmod 775 /home/git
  11. vim /etc/group
  12. git组添加nginx

最后检测

  1. su git
  2. bundle exec rake gitlab:check RAILS_ENV=production

备份与恢复

  1. 备份恢复
  2. bundle exec rake gitlab:backup:create RAILS_ENV=production SKIP=uploads,db
  3. bundle exec rake gitlab:backup:restore RAILS_ENV=production BACKUP=timestamp_of_backup

备份时候默认是备份数据库的 不需要时候添加参数SKIP=db

备份会在gitlab/tmp目录下 以时间戳为前缀生成压缩包 恢复同样需要放置在tmp目录下

恢复时候BACKUP=timestamp_of_backup timestamp_of_backup表示是时间前缀 默认恢复最新一次的备份

ldap认证

修改 config/gitlab.yml

  1. ldap设置
  2. enabled: true
  3. host: '172.16.24.55'
  4. port: 389
  5. uid: 'cn' #需要去ldap服务器上看一下uid是什么 可能是uid 可能是cn
  6. method: 'tls' # "tls" or "ssl" or "plain"
  7. bind_dn: 'cn=Manager,dc=xkdx,dc=com'
  8. password: ''
  9. base: 'ou=People,dc=xkdx,dc=com'

发送邮件

修改 config/gitlab.yml

两种方式

一种是使用系统的postfix

一种是使用smtp服务器发送

默认是使用第一种配置比较简单

先说明第一种方式的配置

首先

  1. echo "Test mail from postfix" | mail -s "Test Postfix" bravelib@163.com

然后查看邮件的发件人需要用到 我这边的是root@xkdx.cn

接着 修改 config/gitlab.yml

  1. ## Email settings
  2. # Uncomment and set to false if you need to disable email sending from GitLab (default: true)
  3. email_enabled: true
  4. # Email address used in the "From" field in mails sent by GitLab
  5. email_from: root@xkdx.cn #上边163邮箱收到的邮件的发件人地址
  6. email_display_name: GitLabMaster #显示的收件人昵称
  7. email_reply_to:

怎么测试我们配置的内容成功了呢

每次修改配置文件需要重启gitlab程序

service gitlab restart

监控日志文件

tail -f /home/git/gitlab/log/*.log

tail -f /var/log/maillog

然后测试我们的配置

  1. bundle exec rails console production
  2. 查看发邮件的方法有sendmail smtp(第二种方法)
  3. irb(main):016:0* ActionMailer::Base.delivery_method
  4. => :sendmail
  5. 显示邮件配置
  6. irb(main):017:0> ActionMailer::Base.smtp_settings
  7. => {:address=>"localhost", :port=>25, :domain=>"localhost.localdomain", :user_name=>nil, :password=>nil, :authentication=>nil, :enable_starttls_auto=>true}
  8. 给自己邮箱发送测试文件
  9. irb(main):018:0> Notify.test_email('bravelib@163.com', 'Hello World', 'This is a test message').deliver_now

第二种方式smtp邮件服务器发送

首先修改gitlab.yml的email_from

然后修改

/home/git/gitlab/config/environments/production.rb

config.action_mailer.delivery_method = :sendmail

改成smtp

config.action_mailer.delivery_method = :smtp

最后

cp /home/git/gitlab/config/initializers/smtp_settings.rb.sample /home/git/gitlab/config/initializers/smtp_settings.rb

这个也可用上边的测试方法测试

发邮件时候遇到的问题

很多时候日志只显示已插入到队列 但是邮件收不到

最后终于发现了一个管理页面

http://ip/admin/sidekiq

能显示任务队列的情况

虽然有时候也有邮件发送不成功 至少能看到结果与失败结果了

参考资料

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md

http://docs.gitlab.com/ce/administration/troubleshooting/debug.html

http://wiki.jikexueyuan.com/project/rails-practice/Chapter_6/6.3.html

centos7下源码方式安装gitlab8.9+发送邮件+ldap的更多相关文章

  1. inux centos7下源码 tar安装5.7.26详解

    inux centos7下源码 tar安装5.7.26图文详解 官网地址 https://dev.mysql.com/downloads/mysql/ 1.卸载Linux系统上自带的mysql插件(o ...

  2. Centos6 系统下源码方式安装Mysql 记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...

  3. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  4. Centos7下源码编译安装与配置redis5.0

    1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...

  5. linux centos7下源码 tar安装mysql5.7.23(5.7以上均可试用)

    1.工具:mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz.centos7 2.解压后,将mysql-5.7.22-linux-glibc2.12-x86_64里面 ...

  6. ubuntu下源码方式安装php5.4

    一.安装前准备 下载php-5.4.13.tar.gz最新版本放到/user/src目录下 二.安装 因为在安装php过程中,会依赖安装很多库,为了不让你反复安装,建议按步骤操作 安装autoconf ...

  7. linux centos7下源码 tar安装mysql5.7.22或mysql5.7.20 图文详解

    之前用的rpm安装的每次安装都是最新的,,,导致每次版本不统一... 现在用tar包安装5.7.22和5.7.20一样的   5.7.20之后的和之前的版本还是有点不一样的 官网地址 https:// ...

  8. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

  9. 源码方式安装 lrzsz 库

    我们都知道安装了lrzsz工具的linux系统环境: 在shell里可以非常方便的上传和下载linux里面的文件: 通常的安装方式: yum install lrzsz sudo apt-get in ...

随机推荐

  1. Android Fragment实现button间的切换

    原文地址:http://blog.csdn.net/a123demi/article/details/32693037 Fragment要点 Fragment是activity的界面中的一部分或一种行 ...

  2. Android实战简易教程-第二十四枪(基于Baas的用户表查询功能实现!)

    接着上一篇,我们注冊了几个用户,用户表例如以下: 以下我们用ListView将表中数据显示出来吧. 首先看一下main.xml: <RelativeLayout xmlns:android=&q ...

  3. C# Path 有关于文件路径等问题类(转)

    C# Path 标签:C#, Path C-Sharp  0 Path handles file path processing. The .NET Framework provides effect ...

  4. hibernate初步3

    事务和并发 1.事务概念 一组不可分割的操作,事务有如下属性(ACID 属性:Atomic Consistent Isolated Durable)(1)原子性---Atomic  事务的原子性指的是 ...

  5. python chunk 方式读取大文件——本质上还是file read自身支持

    参考:https://stackoverflow.com/questions/519633/lazy-method-for-reading-big-file-in-python 最优雅方式: file ...

  6. [Apple开发者帐户帮助]六、配置应用服务(3)创建地图标识符和私钥

    要与MapKit JS通信,您将使用Maps私钥对一个或多个开发人员令牌进行签名. 首先注册地图标识符以识别您的应用.为使用MapKit JS的每个应用注册地图标识符.接下来创建并下载启用了MapKi ...

  7. rancher导入k8s集群后添加监控无数据

    1.日志报错 rancher导入k8s集群后添加监控无数据,rancher日志报错: k8s.io/kube-state-metrics/pkg/collectors/builder.go:: Fai ...

  8. python 5:str(某一变量)(将其他数字解释为字符串)

    age = messege = "Your's age is " + str(age) #将其他数字更改为字符串 print(messege) 运行结果应该是: Your's ag ...

  9. POJ 3083 BFS+DFS 40行

    题意:给你一个迷宫. 先输出当左转优先的时候走的路程长度,再输出当右转优先时走的路程长度,最后输出从起点到终点的最短路程长度. 嗯嗯 奴哥活跃气氛的题.随便写了写.. 此题 知道了思路以后就是水题了. ...

  10. html中<a>标签_top和_parent的区别

    在html中,<a>标签有个target属性,而targe属性有四个值,分别是:_blank._self._top._parent.前两个相信很好理解,第一个就是在新窗口中打开的意思,第二 ...