设为首页 收藏本站
查看: 638|回复: 0

[经验分享] CI 系统搭建:二. GitLab 的安装配置

[复制链接]

尚未签到

发表于 2018-1-10 14:28:16 | 显示全部楼层 |阅读模式

  上一篇文章 CI 系统搭建:一. 基础环境设置、规划 大概规划了下环境,本文主要用来记录安装 Gitlab 的过程,主要参考官方文档 并没有做太多的修改。




  目录


  • 1 设置源
  • 2 安装依赖包
  • 3 系统用户
  • 4 GitLab Shell
  • 5 Mysql
  • 6 GitLab
  • 7 Nginx
  • 8 界面简单使用



设置源


  设置国内 163 apt 源


  

# vim /etc/apt/sources.list  
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
  
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
  
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
  
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
  
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
  

  
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
  
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
  
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
  
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
  
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
  
# apt-get update
  

  





安装依赖包


  Gitlab 依赖包、库


  

sudo apt-get install -y build-essential 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
  

  


  安装 markdown 文档风格依赖包


  

sudo apt-get install -y python-docutils  

  


  安装 git,Gerrit 依赖 gitweb,同时 GitLab 依赖 git 版本 >= 1.7.10,Ubuntu apt-get 默认安装的是 1.7.9.5,当然不升级也是没有问题的


  

sudo apt-get install -y git git-core gitweb git-review  

  


  升级 Git 版本(可选)


  

sudo apt-get install -y git gitweb  
sudo apt-get remove git-core
  
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
  
cd /tmp
  
curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
  
cd git-1.8.4.1/
  
make prefix=/usr/local all
  
sudo make prefix=/usr/local install
  
# * 如果升级了 git 的版本,相应修改 Gitlab.yml 中的 git 脚本位置,这一步在 clone gitlab 后在操作*
  
sudo -u git -H vim /home/git/gitlab/config/gitlab.yml
  
bin_path: /usr/local/bin/git
  

  


  Gitlab 需要收发邮件,安装邮件服务器


  

sudo apt-get install -y postfix  

  


  如果安装了 ruby1.8,卸载掉,Gitlab 依赖 2.0 以上


  

sudo apt-get remove ruby1.8  

  


  下载编译 ruby2.0


  

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 --disable-install-rdoc
  
make
  
sudo make install
  

  


  修改 gem 源指向 taobao


  

gem source -r https://rubygems.org/  
gem source -a http://ruby.taobao.org/
  

  


  安装 Bundel 命令


  

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

  





系统用户


  给 Gitlab 创建一个 git 用户


  

sudo adduser --disabled-login --gecos 'GitLab' git  

  





GitLab Shell


  下载 Gitlab Shell,用来 ssh 访问仓库的管理软件


  

cd /home/git  
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
  
cd gitlab-shell
  
sudo -u git -H cp config.yml.example config.yml
  

  


  修改 gitlab-shell/config.yml


  

sudo -u git -H vim /home/git/gitlab-shell/config.yml  
gitlab_url: "http://gitlab.thstack.com/"
  

  


  安装 GitLab Shell


  

cd /home/git/gitlab-shell  
sudo -u git -H ./bin/install
  

  





Mysql


  安装 Mysql 包


  

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev  

  


  给 Gitlab 创建 Mysql 数据库并授权用户访问


  

sudo mysql -uroot -p  
> create database gitlabdb;

  
> grant all on gitlabdb.* to 'gitlabuser'@'localhost'>  

  





GitLab


  下载 GitLab 源代码,并切换到最新的分支上


  

cd /home/git  
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
  
cd gitlab
  
sudo -u git -H git checkout 6-4-stable
  

  


  配置 GitLab,修改 gitlab.yml,其中 host: 项和 gitlab-shell 中 gitlab_url 的主机一致


  

cd /home/git/gitlab  
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
  
sudo -u git -H vim config/gitlab.yml
  
host: gitlab.thstack.com
  
email_from: gitlab@thstack.com
  
support_mail: gitlab@thstack.com
  
signup_enabled: true             #开启用户注册
  

  


  创建相关目录


  

cd /home/git/gitlab  
sudo -u git -H mkdir tmp/pids/
  
sudo -u git -H mkdir tmp/sockets/
  
sudo -u git -H mkdir public/uploads
  
sudo -u git -H mkdir /home/git/repositories
  
sudo -u git -H mkdir /home/git/gitlab-satellites
  

  


  修改相关目录权限


  

sudo chown -R git:git log/ tmp/  
sudo chmod -R u+rwX  log/ tmp/ public/uploads
  

  


  修改 unicorn.rb 监听端口为:8081


  

cd /home/git/gitlab/  
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
  
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
  
sudo -u git -H vim config/unicorn.rb
  
listen "gitlab.thstack.com:8081", :tcp_nopush => true
  

  


  配置 GitLab 访问 mysql 数据库设置


  

cd /home/git/gitlab/  
sudo -u git cp config/database.yml.mysql config/database.yml
  
sudo -u git -H vim config/database.yml
  
*修改 Production 部分:*
  
production:
  
adapter: mysql2
  
encoding: utf8
  
reconnect: false
  
database: gitlabdb
  
pool: 10
  
username: gitlabuser
  
password: "gitlabpass"
  
host: localhost
  
socket: /var/run/mysqld/mysqld.sock
  

  


  设置 GitLab 使用指定邮箱发送邮件,注意 production.rb 的文件格式,开头空两格


  

cd /home/git/gitlab/  
sudo -u git -H vim config/environments/production.rb
  
#修改 :sendmail 为 :smtp
  
config.action_mailer.delivery_method = :smtp
  
config.action_mailer.smtp_settings = {
  
:address              => "smtp.googlemail.com",
  
:port                 => 587,
  
:domain               => 'thstack.com',
  
:user_name            => 'gitlab@thstack.com',
  
:password             => 'password',
  
:authentication       =>  :plain,
  
:enable_starttls_auto => true
  
}
  
end          # 上面内容加入到 end 里面
  

  


  安装 gem


  修改 Gemfile 文件中源指向为 taobao


  

cd /home/git/gitlab/  
sudo -u git -H vim Gemfile
  
source "http://ruby.taobao.org/"
  

  


  虽然在文件中指向了国内 taobao 源,但是依然会卡一会,耐心等待…


  

cd /home/git/gitlab/  
sudo -u git -H bundle install --deployment --without development test postgres aws
  

  


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


  

cd /home/git/gitlab/  
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
  

  


  输入 yes 来初始化数据库、创建相关表,最后会输出 GitLab Web 管理员用来登录的账号和密码


  

Do you want to continue (yes/no)? yes  
...
  
Administrator account created:
  
login.........admin@local.host
  
password......5iveL!fe
  

  


  设置 GitLab 启动服务


  

cd /home/git/gitlab/  
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
  
sudo update-rc.d gitlab defaults 21
  

  


  设置 GitLab 使用 Logrotate 备份 Log


  

cd /home/git/gitlab/  
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
  

  


  检查GitLab及其环境的配置是否正确:


  

cd /home/git/gitlab/  
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
  
System information
  
System:         Ubuntu 12.04
  
Current User:   git
  
Using RVM:      no
  
Ruby Version:   2.0.0p353
  
Gem Version:    2.0.14
  
Bundler Version:1.3.5
  
Rake Version:   10.1.0
  

  
GitLab information
  
Version:        6.4.2
  
Revision:       214a013
  
Directory:      /home/git/gitlab
  
DB Adapter:     mysql2
  
URL:            http://gitlab.thstack.com
  
HTTP Clone URL: http://gitlab.thstack.com/some-project.git
  
SSH Clone URL:  git@gitlab.thstack.com:some-project.git
  
Using LDAP:     no
  
Using Omniauth: no
  

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

  


  启动 GitLab 服务


  

/etc/init.d/gitlab restart  
Shutting down both Unicorn and Sidekiq.
  
GitLab is not running.
  
Starting both the GitLab Unicorn and Sidekiq..
  
The GitLab Unicorn web server with pid 17771 is running.
  
The GitLab Sidekiq job dispatcher with pid 17778 is running.
  
GitLab and all its components are up and running
  

  


  最后编译一下


  

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production  

  





Nginx


  安装 Nginx 包


  

sudo apt-get install -y nginx  

  


  配置 Nginx


  

cd /home/git/gitlab  
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
  
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
  
sudo vim /etc/nginx/sites-available/gitlab
  
listen *:80 default_server;
  
server_name gitlab.thstack.com;
  
proxy_pass http://gitlab.thstack.com:8081;
  

  


  启动 Nginx


  

/etc/init.d/apache2 stop  
/etc/init.d/nginx restart
  

  


  访问


  

用浏览器访问: http://gitlab.thstack.com  
用户名:admin@local.host
  
密码:5iveL!fe
  

  


  2: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/insta llation.md



界面简单使用


  使用 admin@local.host 账号登录:


  登录后系统让修改密码,先修改密码:


  修改完密码后,用新密码登录一下,然后修改 Admin 用户得邮箱地址为:admin@thstack.com


  点击保存更改后,系统会自动给刚才输入的邮箱地址发送一封确认修改信息,点击邮件内容中的连接后会自动用新账号邮箱登录。


  创建一个 GROUP:





  输入 Group 名字为:DevGroup


  点击创建项目:


  创建一个项目,名为:OpenStack,这个项目属于 DevGroup:


  创建完项目后,点击添加 ssh 密钥:


  生成 admin@thstack.com 邮箱密钥:


  在界面输入刚才生成得密钥:


  再注册一个账号,登录页面点击注册按钮:


  注册一个 Longgeek 用户,输入邮箱、密码,然后去输入得邮箱验证:


  创建一个 Longgeek 用户,并生成密钥:


  用 longgeek@thstack.com 用户登录 GitLab,添加刚才生成得密钥到 sshkey 里:


  用 admin@thstack.com 用户登录 GitLab,把 longgeek@thstack.com 添加到 DevGroup 组中,权限是 Reporter,这样 longgeek 用户也可以访问 OpenStack 这个项目,不过没有权限直接 Push:


  用 longgeek@thstack.com 用户登录就可以看到 OpenStack 项目:


  用 longgeek@thstack.com clone 项目,尝试 push:


  很显然 longgeek 用户是没有 push 到 master 分支得权限。接下来会安装 Gerrit、Jenkins。以及它们三个如何整合成流程。请参考后面得文章


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433570-1-1.html 上篇帖子: centos6搭建gitlab 下篇帖子: 如何创建一个GitLab Web Hooks?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表