部署自己的gitlab服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部署自己的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"
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]
本文出自 “大風” 博客,请务必保留此出处http://lansgg.blog.51cto.com/5675165/1760578
以上是关于部署自己的gitlab服务器的主要内容,如果未能解决你的问题,请参考以下文章
Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)