一,安装环境
OS:redhat7.4
二,安装依赖包
yum -y groupinstall 'Development Tools' ===>待验证
yum -y install python-docutils
yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel expat-devel byacc sqlite-devel
yum -y install libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui crontabs logwatch logrotate git cmake libcom_err-devel.i686 libcom_err-devel.x86_64
yum -y install postfix
检查git 版本:git --version 如果不是2.9.0 重装git
/*****************************git 2.9.0安装************************/
git依赖包:
yum -y install zlib-devel perl-CPAN gettext curl-devel(rhel7下名字为libcurl-devel) expat-devel gettext-devel openssl-devel
git下载&安装
mkdir /tmp/git && cd /tmp/git
wget https://www.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz
tar xvf git-2.9.0.tar.gz
cd git-2.9.0/
./configure --prefix=/usr/local
make prefix=/usr/local all
make prefix=/usr/local install
退出当前shell窗口,重新进入检查git版本
三,安装ruby
mkdir /tmp/ruby && cd /tmp/ruby
wget https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p237.tar.gz ====》没有的话,就是用p327版本
tar zxvf ruby-1.9.3-p237.tar.gz
cd ruby-1.9.3-p237/
./configure
vim ext/openssl/ossl_pkey_ec.c 修改内容如下:
make
make prefix=/usr/local install
检查ruby版本:ruby --version
四,安装bundler
gem list 检查当前是否安装了bundler
若安装了其他版本则卸载 gem uninstall bundler --version=xxx
安装bundler 1.3.5 版本:
gem install bundler --version=1.3.5
五,设置用户
adduser --system --shell /bin/bash --comment 'gitlab' --create-home --home-dir /home/git git
adduser --create-home --home-dir /home/gitlab gitlab
usermod -a -G git gitlab
passwd git ===>123456
passwd gitlab ===>123456
验证信息:
id git
id gitlab
生产gitlab密钥:
sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
注意:id_rsa id_rsa.pub权限要为600
六,gitolite
cd /home/git
sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
/***********************设置gitlab作为gitolite的管理员:*********************/
sudo -u git -H mkdir /home/git/bin
sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile' sudo -u git -H sh -c 'gitolite/install -to /home/git/bin'sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
sudo chmod 0444 /home/git/gitlab.pubsudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"
=====》如果报指纹无法识别验证:
解决方案:ssh-keygen -l -f gitlab.pub 查看:前两位和后两位的是数字还是字母,注意大小写
vim /home/git/bin/triggers/post-compile/ssh-authkeys
修改:fp_file函数下的 _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-fA-Z][0-9a-fA-Z])+)/;
后面的正则匹配你查看的冒号前后各2位
注意:/home/git/.ssh/authorized_keys权限为600
sudo chmod 750 /home/git/.gitolite/
sudo chown -R git:git /home/git/.gitolite/sudo chmod -R ug+rwXs,o-rwx /home/git/repositories/ sudo chown -R git:git /home/git/repositories/echo "Host localhost
StrictHostKeyChecking no UserKnownHostsFile=/dev/null" | sudo tee -a /etc/ssh/ssh_configecho "Host 主机名
StrictHostKeyChecking no UserKnownHostsFile=/dev/null" | sudo tee -a /etc/ssh/ssh_configcat /etc/hosts 里面的主机名对应的IP,不是localhost
验证配置正常:
sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
####################################ssh 免密登陆失败的话
cat /var/log/secure 查看sshd相关日志 ====》 .ssh所在的家目录不允许组有W权限 chmod 750 /home/git
####################################实在解决不了执行下面步骤
如果这一步出错,需要重新配置ssh密钥,并且删除git下的隐藏目录如.logout .bundle .gitolite .gnome 有就删
sudo rm -rf /tmp/gitolite-admin
七,数据库
安装MySQL数据库,yum或tar包安装都可以
登陆mysql,操作如下:
mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '123456';
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>flush privileges;
mysql>quit;
八,Gitlab
cd /home/gitlab
sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/gitlab/gitlab
sudo -u gitlab -H git checkout 4-0-stable
sudo -u gitlab -H cp config/gitlab.yml.example config/gitlab.yml
sudo -u gitlab -H vim config/gitlab.yml
修改内容如下:
sudo chown -R gitlab log/
sudo chown -R gitlab tmp/ sudo chmod -R u+rwX log/ sudo chmod -R u+rwX tmp/ sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rbsudo -u gitlab cp config/database.yml.mysql config/database.yml
sudo -u gitlab vim config/database.yml
修改内容如下:
安装gem
sudo gem install charlock_holmes --version '0.6.9'
初始化数据库
vim Gemfile 和Gemfile.lock
修改modernizr为modernizr_rails
版本 2.6.2 改为2.6.2.1
sudo -u gitlab -H bundle install --deployment --without development test postgres
sudo -u gitlab -H git config --global user.name "GitLab"
sudo -u gitlab -H git config --global user.email "gitlab@localhost"sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
sudo chown git:git /home/git/.gitolite/hooks/common/post-receive/********************安装redis*************************/
/*******************************************************/
启动redis
/usr/local/bin/redis-server
初始化database&开启高级功能
sudo -u gitlab -H bundle exec rake gitlab:app:setup RAILS_ENV=production
sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/4-0-stable/init.d/gitlab -P /etc/init.d/
sudo chmod +x /etc/init.d/gitlab
检查app状态:
sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production
如果出现gitolite version 看不见:
解决方案:cd /home/git && gitolite/install && cd gitolite/src && chown git:git VERSION
或者是权限的问题 /home/git目录权限应为770 下边的gitolite src都应该是770
sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production
启动gitlab :service gitlab start
再次检查 sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production
九,安装nginx
yum install nginx
sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/4-0-stable/nginx/gitlab -P /etc/nginx/sites-available/
cd /etc/nginx/sites-available
ln -s /etc/nginx/sites-available/gitlab //etc/nginx/conf.d/gitlab.conf
(1)vim /etc/nginx/conf.d/gitlab.conf
修改内容如下:
vim /etc/nginx/nginx.conf
修改内容如下:
usermod -a -G git nginx
(2) 或者直接修改nginx.conf如下:(推荐)
user root git;
worker_processes 2;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events { worker_connections 1024;} http { include /etc/nginx/mime.types; default_type application/octet-stream;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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;keepalive_timeout 65;
#gzip on;
upstream gitlab {
server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket;}server { listen 10.2.177.44:80; # e.g., listen 192.168.1.1:80; server_name bogon; # e.g., server_name source.example.com; root /home/gitlab/gitlab/public; server_tokens off; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; client_max_body_size 5m; 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 10.2.177.44; proxy_set_header X-Real-IP $remote_addr;proxy_pass http://gitlab;
} }# include /etc/nginx/conf.d/*.conf;}如果启动报错:页面出现500 log/production出现
解决方案:检查版本信息:
1)bundler (1.3.5) /charlock_holmes (0.6.9)/rdoc (3.9.4)/rake(0.9.2.2)/json(1.5.4) /minitest(2.5.1)/io-console(0.3)/bigdecimal(1.1.0)
检查发现ruby版本是2.0 重装1.9.3-p237 其他版本不变
gem uninstall bundler --version=1.17.1
gem install bundler --version=1.3.5
gem install charlock_holmes --version=0.6.9
sudo -u gitlab -H bundle install --deployment --without development test postgres
sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
sudo chown git:git /home/git/.gitolite/hooks/common/post-receivesudo -u gitlab -H bundle exec rake gitlab:app:setup RAILS_ENV=production重启gitlab nginx服务
附:bundle show
Gems included by the bundle:
* actionmailer (3.2.11) * actionpack (3.2.11) * activemodel (3.2.11) * activerecord (3.2.11) * activeresource (3.2.11) * activesupport (3.2.11) * acts-as-taggable-on (2.3.3) * arel (3.0.2) * backports (2.6.5) * bcrypt-ruby (3.0.1) * blankslate (3.1.2) * bootstrap-sass (2.2.1.1) * builder (3.0.4) * bundler (1.3.5) * carrierwave (0.7.1) * charlock_holmes (0.6.9) * chosen-rails (0.9.8) * coffee-rails (3.2.2) * coffee-script (2.2.0) * coffee-script-source (1.4.0) * colored (1.2) * daemons (1.1.9) * devise (2.1.2) * diff-lcs (1.1.3) * draper (0.18.0) * erubis (2.7.0) * escape_utils (0.2.4) * eventmachine (1.0.0) * execjs (1.4.0) * faraday (0.8.4) * ffaker (1.15.0) * font-awesome-sass-rails (2.0.0.0) * foreman (0.60.2) * gemoji (1.2.1) * git (1.2.5) * github-linguist (2.3.4) * github-markup (0.7.4) * gitlab_meta (4.0) * gitolite (1.1.0) * grack (1.0.0 ba46f3b) * grape (0.2.2) * gratr19 (0.4.4.1) * grit (2.5.0 7f35cb9) * grit_ext (0.6.1 8e6afc2) * haml (3.1.7) * haml-rails (0.3.5) * hashery (1.5.0) * hashie (1.2.0) * hike (1.2.1) * httparty (0.9.0) * httpauth (0.2.0) * i18n (0.6.1) * journey (1.0.4) * jquery-atwho-rails (0.1.7) * jquery-rails (2.1.3) * jquery-ui-rails (2.0.2) * json (1.7.6) * jwt (0.1.5) * kaminari (0.14.1) * kgio (2.7.4) * libv8 (3.3.10.4) * mail (2.4.4) * mime-types (1.19) * modernizr_rails (2.6.2.1) * multi_json (1.5.0) * multi_xml (0.5.1) * multipart-post (1.1.5) * mysql2 (0.3.11) * net-ldap (0.2.2) * oauth (0.4.7) * oauth2 (0.8.0) * omniauth (1.1.1) * omniauth-github (1.0.3) * omniauth-google-oauth2 (0.1.13) * omniauth-ldap (1.0.2 f038dd8) * omniauth-oauth (1.0.1) * omniauth-oauth2 (1.1.1) * omniauth-twitter (0.0.14) * orm_adapter (0.4.0) * polyglot (0.3.3) * posix-spawn (0.3.6) * pygments.rb (0.3.2 db1da03) * pyu-ruby-sasl (0.0.3.3) * rack (1.4.3) * rack-accept (0.4.5) * rack-cache (1.2) * rack-mount (0.8.3) * rack-protection (1.2.0) * rack-ssl (1.3.2) * rack-test (0.6.2) * rails (3.2.11) * railties (3.2.11) * raindrops (0.10.0) * rake (10.0.3) * raphael-rails (1.5.2) * rdoc (3.12) * redcarpet (2.2.2) * redis (3.0.2) * redis-namespace (1.2.1) * resque (1.23.0) * resque_mailer (2.1.0) * rubyntlm (0.1.1) * sass (3.2.3) * sass-rails (3.2.5) * seed-fu (2.2.0) * settingslogic (2.0.8) * sinatra (1.3.3) * six (0.2.0) * sprockets (2.2.2) * stamp (0.3.0) * therubyracer (0.10.2) * thin (1.5.0) * thor (0.16.0) * tilt (1.3.3) * treetop (1.4.12) * tzinfo (0.3.35) * uglifier (1.3.0) * unicorn (4.4.0) * vegas (0.1.11) * virtus (0.5.2) * warden (1.2.1) * yajl-ruby (1.1.0) * yaml_db (0.2.2 98e9a5d)