1. 程式人生 > >Centos6.8從原始碼安裝Gitlab詳細教程

Centos6.8從原始碼安裝Gitlab詳細教程

本人用的是1核2G的阿里雲伺服器,從原始碼安裝Gitlab中文版(英文版的安裝幾乎沒有差別,下詳)。安裝過程對於像我這樣的新手來說十分艱辛,中間遇到不少問題,但功夫不負有心人,最終還是安裝成功了。現分享安裝步驟。

各位覺得麻煩,建議用官網推薦的Omnibus 安裝方式。

安裝的環境如下圖所示,另,安裝Gitlab必須要有至少1G的記憶體,否則安裝之後無法執行;還有本人使用Mysql資料庫,比較順手。

執行效果如圖——


安裝所需工具——

XSHELL    用來連線阿里雲伺服器,這個沒什麼好說的。

XFTP          由於網路原因,許多包我都直接下載到本地再上傳到伺服器的,上傳的路徑皆為/usr/etc。

Emacs       建議大家學習至少一個編輯器。

參考網站——

主要是官網,其實按照官網一步步來安裝成功的機率也是蠻大的。但是有一些坑。

https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos  centos安裝Gitlab的指導

https://gitlab.com/larryli/gitlab/wikis/home  漢化版Gitlab的安裝指導

http://blog.csdn.net/h348592532/article/details/53706786 有點過時的教程,但是還是很大幫助,如果和本教程不同,請按本教程來,命令的作用可以參考該網頁。

安裝步驟

·重要準備工作

開闢SWAP記憶體,這一點對阿里雲伺服器來說很重要

yum -y update

yum -y install nano

yum -y install emacs

執行以下命令並得到如下結果,證明不存在SWAP記憶體

free -h

sudo swapon -s

開闢記憶體

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k


sudo mkswap -f /swapfile
sudo swapon /swapfile sudo swapon -s

使開闢記憶體在重啟機器後仍有效

sudo nano /etc/fstab

[加入如圖所示內容]


[按Ctrl+X,輸入Y,回車退出]

echo 10 | sudo tee /proc/sys/vm/swappiness

echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

sudo chown root:root /swapfile

sudo chmod 0600 /swapfile

[重啟]

free -h


·安裝依賴

su -
yum -y groupinstall 'Development Tools'
yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs
yum -y install python-docutils

注意到redis,按照官方的安裝方式,安裝的redis版本為2.4.10好像,不符合要求,所以待會要解除安裝,並且不按照官方的方式

·安裝Git

要求Git版本在2.7.4或以上

在官網下載壓縮包(Tarballs), 上傳到伺服器

git --version
yum -y remove git
yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel
tar -xzvf git-2.11.0.tar.gz
cd git-2.11.0
./configure 
make 
make prefix=/usr/local install
ln -s /usr/local/bin/git /usr/bin/
git --version

·安裝Ruby

yum remove ruby

在官網下載壓縮包https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz

tar -xzvf ruby-2.3.3.tar.gz cd ruby-2.3.3 ./configure --disable-install-rdoc make sudo make install

·安裝Bundler Gem

gem install bundler --no-doc

·安裝GO

官網下載,上傳 https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz

sudo tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
rm go1.5.3.linux-amd64.tar.gz

·建立git使用者

adduser --system --shell /bin/bash --comment 'GitLab' --create-home --home-dir /home/git/ git

修改git使用者的PATH路徑

visudo

[
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

修改為

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
]

`安裝MySql

從官網下載,mysql57-community-release-el6-9.noarch.rpm

sudo rpm -Uvh mysql57-community-release-el6-9.noarch.rpm

yum install -y mysql-server mysql-devel

chkconfig mysqld on
service mysqld start

檢視Mysql為使用者設的初始密碼

sudo grep 'temporary password' /var/log/mysqld.log

mysql -u root -p

輸入密碼

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql2017#';     //更換密碼

CREATE USER 'git'@'localhost' IDENTIFIED BY 'Git2017!';      //增加GIT並設定密碼

CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

GRANT ALL PRIVILEGES ON `gitlabhq_production`.* TO 'git'@'localhost';

\q

[

如果提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
mysql> SHOW VARIABLES LIKE 'validate_password%';[]

]

·安裝Redis

yum remove redis       //這一步很重要

1、官網下載,上傳 http://download.redis.io/releases/redis-3.2.5.tar.gz


2、解壓、編譯、安裝redis-3.2.5:

tar -zxvf redis-3.2.5.tar.gz -C /usr/src/

cd /usr/src/redis-3.2.5/

make && make install



3、建立redis相關目錄:

mkdir -p /home/redis/bin

mkdir -p /home/redis/log

mkdir -p /home/redis/pid

mkdir -p /home/redis/db



4、將可執行檔案複製到自己的安裝目錄:/home/redis/
          ln -s /usr/local/bin/redis-*   /home/redis/bin/


5、複製配置檔案到自己的安裝目錄:/home/redis/
          cp redis.conf /home/redis/


6、進入自己的安裝目錄,編輯redis.conf配置檔案:

cd /home/redis/ emacs /home/redis/redis.conf 根據實際需要修改配置檔案,以下僅供參考 daemonize yes pidfile /home/redis/pid/redis.pid logfile /home/redis/log/redis.log dir /home/redis/db port 0  unixsocket /var/run/redis/redis.sock  unixsocketperm 700


最後兩行必須刪除#號,使之生效。

配置的意思 參見[http://www.cnblogs.com/qq78292959/archive/2013/09/21/3331032.html]


7、建立redis服務指令碼,並賦予許可權:

emacs  /etc/init.d/redis

#!/bin/sh

#

# Simple Redis init.d script conceived to work on Linux systems

# as it does use of the /proc filesystem.

PATH=/home/redis/bin:/sbin:/usr/bin:/bin

REDISPORT=6379

EXEC=/home/redis/bin/redis-server

CLIEXEC=/home/redis/bin/redis-cli

PIDFILE=/home/redis/pid/redis.pid

CONF="/home/redis/redis.conf"

case "$1" in

    start)

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                $EXEC $CONF

        fi

        ;;

    stop)

        if [ ! -f $PIDFILE ]

        then

                echo "$PIDFILE does not exist, process is not running"

        else

                PID=$(cat $PIDFILE)

                echo "Stopping ..."

                $CLIEXEC -p $REDISPORT shutdown

                while [ -x /proc/${PID} ]

                do

                    echo "Waiting for Redis to shutdown ..."

                    sleep 1

                done

                echo "Redis stopped"

        fi

        ;;

    *)

        echo "Please use start or stop as first argument"

        ;;

esac



8、新增redis服務開機啟動:

chmod a+x /etc/init.d/redis



9、啟動redis服務:

mkdir /var/run/redis/

service redis start

10、測試OK
          
          redis-cli -s /var/run/redis/redis.sock
          set key1 hello
          get key1
          quit
          chmod 770 /var/run/redis/redis.sock

11、改變許可權

chown -R redis:redis /var/run/redis

chmod -R 755 /var/run/redis

將Git新增Redis組

usermod -aG redis git

·獲取Gitlab

cd /home/git

sudo -u git -H git clone https://git.coding.net/larryli/gitlab.git gitlab                 //這是中文版

cd /home/git/gitlab

sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

sudo -u git -H emacs config/gitlab.yml



sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml


sudo chown -R git log/ &&sudo chown -R git tmp/ &&sudo chmod -R u+rwX,go-w log/ &&sudo chmod -R u+rwX tmp/ &&sudo chmod -R u+rwX tmp/pids/ &&sudo chmod -R u+rwX tmp/sockets/ &&sudo -u git -H mkdir public/uploads/ &&sudo chmod 0700 public/uploads &&sudo chmod -R u+rwX builds/ &&sudo chmod -R u+rwX shared/artifacts/ &&sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

sudo -u git -H emacs config/unicorn.rb


sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

config/initializers/rack_attack.rb
sudo -u git -H git config --global core.autocrlf input
sudo -u git -H git config --global gc.auto 0
sudo -u git -H git config --global repack.writeBitmaps true
sudo -u git -H cp config/resque.yml.example config/resque.yml

sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H emacs config/database.yml

修改成你自己設的密碼


·安裝GEM

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

[他們都說要用淘寶源,我並沒有用,速度也還行]

·安裝Gitlab-shell

按官網說的裝,

sudo -u git -H bundle exec rake gitlab:shell:install[v3.0.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

或者直接

cd /home/git/

sudo -u git -H mkdir gitlab-shell

sudo -u git -H chown -R git gitlab-shell/

sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git gitlab-shell

sudo -u git -H emacs /home/git/gitlab-shell/config.yml


restorecon -Rv /home/git/.ssh


·安裝Gitlab-workhorse

cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout v0.7.5
sudo -u git -H make

·安裝

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

cp lib/support/init.d/gitlab /etc/init.d/gitlab

chkconfig gitlab on

cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

檢查環境

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

編譯

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

開啟

service gitlab start

此時可以訪問Gitlab網站,檢視收穫。希望一切順利。

·檢查

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

注:以上教程是我的親身經歷,如果中途還遇到問題,可以留言或者百度谷歌;最重要的,要懂得檢視log,如gitlab/log裡面的log,可以用less命令很方面的檢視,也可以用XFTP下載到本地,用Sublime Text檢視。