说起GitLab,做完程序汪的大家肯定不陌生,GitLab是一个开源的用于仓库管理的项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,与大家熟悉的github类似。区别在于GitHub想要使用私有仓库就必须的付费,而GitLab是可以搭建在个人的服务器上的,所有数据库信息也都在自己的服务器上,所以它适合团队内部的协作开发,其时可以将其看做成一个个人的github
系统准备工作
#关闭selinux vim etc/sysconfig/selinux SELINUX=disabled
安装epel源
# 下载EPEL的GPG KEY,导入到系统中 wget -O etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-6 rpm --import etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 # 安装`epel-release-latest-6.noarch.rpm`包,启用EPEL rpm -Uvh http://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
安装依赖
yum groupinstall "Development tools" yum install gcc autoconf cmake unzip vim libcurl-devel zlib-devel curl-devel expat-devel gettext-devel openssl-devel perl-devel nodejs libicu-devel wget curl
删除系统原有git
yum remove git
安装gitlab
#下载git curl -O --progress https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz tar -xzf git-2.9.3.tar.gz cd git-2.9.3 ./configure make prefix=/usr/local all make prefix=/usr/local install # 验证git版本号 git --version #查看git安装路径
添加用户变修改环境变量
# 修改git用户的环境变量PATH,以root用户运行 visudo # 找到下面一行 Defaults secure_path = sbin:/bin:/usr/sbin:/usr/bin #修改为 Defaults secure_path = sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
安装ruby
#查看系统使用有安装ruby,有则用命令删除('yum remove ruby') rpm -qa|grep ruby #源码安装ruby curl -O --progress http://mirrors.ustc.edu.cn/ruby/2.1/ruby-2.1.8.tar.gz tar xzf ruby-2.1.8.tar.gz cd ruby-2.1.8 ./configure --disable-install-rdoc make && make install ##国内使用gems,最好修改gems源为国内的 #修改gem安装源为国内的(中科大源为例) gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ #确认gems源已修改 gem sources -l #安装bundle gem install bundler --no-ri --no-rdoc # 修改bundler的源为国内的(中科大源为例) sudo -u git -H bundle config mirror.https://rubygems.org https://gems.ruby-china.org/
安装go编译器
curl -O --progress http://www.golangtc.com/static/go/1.5.3/go1.5.3.linux-amd64.tar.gz 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 #验证go是否安装正确 go version
安装PostgreSQL数据库
#配置postgresql安装源: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository ##具体操作如下 # 修改/etc/yum.repos.d/CentOS-Base.repo,在[base]和[update]段落添加下面的配置 exclude=postgresql* # 安装postgresql源 yum localinstall http://mirrors.ustc.edu.cn/postgresql/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-1.noarch.rpm # 安装postgresql yum install postgresql95-server postgresql95-devel postgresql95-contrib # 默认情况下,postgresql的数据库文件存放在 /var/lib/pgsql/9.5/data # 初始化 mv etc/init.d/{postgresql-9.5,postgresql} service postgresql initdb # 启动postgresql service postgresql start # 配置postgresql自启动 chkconfig postgresql on # 为Gitlab创建一个用户,用户名为git sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;" # 创建Gitlab生产环境数据库并赋予git用户属主权限 sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;" # 用git用户测试下是否能登录刚才创建的数据库 sudo -u git -H psql -d gitlabhq_production # 退出数据库会话 gitlabhq_production> \q # 创建pg_config的软连接 ln -s usr/pgsql-9.5/bin/pg_config usr/bin/pg_config # 添加postgresql扩展 sudo -u postgres -H psql -d gitlabhq_production gitlabhq_production=# CREATE EXTENSION IF NOT EXISTS pg_trgm;
此处遇到两个坑 1.用户没有授权登录,导致登录验证失败 解决办法: vim var/lib/pgsql/9.5/data/pg_hba.conf 将 host all all 127.0.0.1/32 ident 修改为 host all all 127.0.0.1/32 trust 2.建立的用户没有超级权限 ERROR: permission denied to create extension "pg_trgm" 解决办法:授权账号SUPERUSER权限 ALTER ROLE user CREATEROLE SUPERUSER;
安装redis
#安装 mkdir tmp/redis && cd tmp/redis curl -O --progress http://download.redis.io/releases/redis-3.0.7.tar.gz tar zxf redis-3.0.7.tar.gz cd redis-3.0.7 make && make install mkdir -p etc/redis cp redis.conf etc/redis #配置 cp etc/redis/redis.conf etc/redis/redis.conf.orig # 把'post'设置为0以禁止监听TCP端口 sed 's/^port .*/port 0/' etc/redis/redis.conf.orig | sudo tee etc/redis/redis.conf # 让redis以socket方式启动 echo 'unixsocket var/run/redis/redis.sock' | sudo tee -a etc/redis/redis.conf # 启动守护进程 sed -i 's/daemonize no/daemonize yes/g' etc/redis/redis.conf # 创建存放socket的目录 mkdir var/run/redis sudo chown redis:redis var/run/redis sudo chmod 755 var/run/redis # Persist the directory which contains the socket, if applicable if [ -d etc/tmpfiles.d ]; then echo 'd var/run/redis 0755 redis redis 10d -' | sudo tee -a etc/tmpfiles.d/redis.conf fi # 把git用户加入redis组 sudo usermod -aG redis git # 下载redis init 脚本 curl -L http://packages.gitlab.cc/install/init-script/redis/cenots6/redis-server -o etc/init.d/redis-server chmod +x etc/init.d/redis-server # 启动redis服务 service redis-server start # 将redis加入自启动 chkconfig redis-server on
安装GitLab-CE
# 我们将gitlab安装到git用户的HOME目录 cd home/git #克隆gitlab-ce源码 sudo -u git -H git clone https://git.ustclug.org/gitlab-cc/gitlab-ce.git -b 8-7-stable gitlab ###配置gitlab-ce # 进入gitlab目录 cd home/git/gitlab # 复制gitlab.yml(Gitlab的主配置文件) sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml # 修改gitlab.yml sudo -u git -H vim config/gitlab.yml ####修改第32行 host: localhost为 host: 你的域名或者ip ####修改第435行 bin_path: usr/bin/git 为bin_path: usr/local/bin/git # 复制 secrets 文件 sudo -u git -H cp config/secrets.yml.example config/secrets.yml sudo -u git -H chmod 0600 config/secrets.yml # 修改 log/ 和 tmp/ 文件夹权限 sudo chown -R git log/ sudo chown -R git tmp/ sudo chmod -R u+rwX,go-w log/ sudo chmod -R u+rwX tmp/ # 修改 tmp/pids/ 个 tmp/sockets/ 文件夹权限 sudo chmod -R u+rwX tmp/pids/ sudo chmod -R u+rwX tmp/sockets/ # 创建 public/uploads/ 文件夹 sudo -u git -H mkdir public/uploads/ # 修改 public/uploads/ 文件夹权限,只有git用户有访问权限 # now that files in public/uploads are served by gitlab-workhorse sudo chmod 0700 public/uploads # 修改 CI build traces are stored 文件夹的权限 sudo chmod -R u+rwX builds/ # 修改 CI artifacts are stored 文件夹的权限 sudo chmod -R u+rwX shared/artifacts/ # 复制 Unicorn 配置文件 sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb # 查询CPU核心数 nproc # 如果你想搭建一个高负载的Gitlab实例,可启用集群模式. # 修改'worker_processes'参数,至少要跟cpu核心数一样. # 举例:2G RAM的服务器修改workers数量为3 sudo -u git -H vim config/unicorn.rb # 复制Rack attack 配置文件 sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb # Configure Git global settings for git user # 'autocrlf' is needed for the web editor sudo -u git -H git config --global core.autocrlf input # Disable 'git gc --auto' because GitLab already runs 'git gc' when needed sudo -u git -H git config --global gc.auto 0 # 复制 Redis 连接配置文件 sudo -u git -H cp config/resque.yml.example config/resque.yml # 如果之前修改过redis socket的路径,在这个配置文件里面修改为当前的路径. sudo -u git -H vim config/resque.yml #修改gitlabDB配置 # 此命令仅针对PostgreSQl: sudo -u git cp config/database.yml.postgresql config/database.yml # 如果使用Mysql,执行下面命令 sudo -u git cp config/database.yml.mysql config/database.yml # 以下修改针对MySQL和远程PostgreSQL: # 修改username/password. # 生产环境只需要修改第一部分即可. # 修改'secure password' 为你设置的密码 # 密码字段可以使用"双引号" sudo -u git -H vim config/database.yml # PostgreSQL MySQL都适用: # 修改database.yml的权限,确保git用户可以读取该文件. sudo -u git -H chmod o-rwx config/database.yml
安装Gems
####一定要注意选择自己用的数据库的命令 # PostgreSQL (note, the option says "without ... mysql") sudo -u git -H bundle install --deployment --without development test mysql aws kerberos # 如果使用 MySQL,执行下面的命令 (note, the option says "without ... postgres") sudo -u git -H bundle install --deployment --without development test postgres aws kerberos
安装gitlab-shell
# 修改gitlab 安装 gitlab-shell的rake任务脚本 sudo -u git -H sed -i 's/https:\/\/gitlab.com\/gitlab-org\/gitlab-shell.git/https:\/\/git.oschina.net\/qiai365\/gitlab-shell.git/g' home/git/gitlab/lib/tasks/gitlab/shell.rake # 运行安装gitlab shell的任务 (根据自己的redis安装情况修改`REDIS_URL`),这里如果你事先没有clone gitlab-shell的仓库,就会自动clone官方的仓库进行安装: sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production # 默认情况下,gitlab-shell的配置是根据Gitlab的配置生产的. # 你可以运行下面的命令查看和修改gitlab-shell的配置: sudo -u git -H vim /home/git/gitlab-shell/config.yml
安装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.1 sudo -u git -H make
初始化数据库,激活高级特性
cd /home/git/gitlab sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production # 输入 'yes' 以创建数据库表 # 当看到 'Administrator account created:' 表示已经安装完成
安全设置 secrets.yml
secrets.yml文件为每个会话和安全变量存储密钥.把这个文件备份到别的地方,但是不要和数据库备份放在一块,否则你的数据库备份损坏会导致这个文件丢失.
安装Gitlab init脚本
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab #复制下面这个配置文件,如果你的gitlab不是安装在/home/git/gitlab目录,根据自己情况修改这个文件。 sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
设置GItlab为自启动
chkconfig gitlab on
安装Logrotate
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
检查GitLab环境配置
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
生成GitLab前端资源
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
启动GitLab
sudo service gitlab start # 或者 sudo /etc/init.d/gitlab restart
再检查一次Gitlab的所有组件
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production # 如果上面的检查有错误,按照提示修复下,再重启GitLab即可.
gitlab备份bundle exec rake gitlab:backup:create RAILS_ENV=production备份目录/home/git/gitlab/tmp/backups/1482820153_gitlab_backup.tar
gitlab恢复#在安装目录下使用命令bundle exec rake gitlab:backup:restore BACKUP=1482820153 RAILS_ENV=production #从1482820153备份的文件恢复bundle exec rake gitlab:backup:restore RAILS_ENV=production #当备份目录下只有一个备份文件的时候可以使用
通过修改/home/git/gitlab/config/unicorn.rb的listen端口,然后重启gitlab服务,就可以直接访问服务器ip加端口来访问gitlab了
具体详细介绍参加链接:https://bbs.gitlab.cc/topic/35/gitlab-ce-8-7-%E6%BA%90%E7%A0%81%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C-centos6-rehl6/2?page=1
联系人:徐经理
手机:13907330718
电话:0731-22222718
邮箱:hniatcom@163.com
地址: 湖南省株洲市石峰区联诚路79号轨道智谷2号倒班房6楼603室