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 -hsudo swapon -s
開闢記憶體
sudo
dd if=/dev/zero of=/swapfile bs=1024 count=256k
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.rbsudo -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.ymlsudo -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=productioncp 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網站,檢視收穫。希望一切順利。
注:以上教程是我的親身經歷,如果中途還遇到問題,可以留言或者百度谷歌;最重要的,要懂得檢視log,如gitlab/log裡面的log,可以用less命令很方面的檢視,也可以用XFTP下載到本地,用Sublime Text檢視。cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production