摘要
本文部分内容来源于网络,个人收集整理,请勿传播
第一次安装gitlab的时候本来以为整个过程会很简单,结果发现网上的文档或多或少的都有着各种各样的坑,还有就是因为时间的问题,很多文档都是老版本的,总之就是各种各样的问题。于是,在自己填平了好多坑之后,一点一点整理出一套完整、可靠的安装过程,可是一直没有时间好好修饰一番,直到现在。于是,就有了这篇文档。
本文档基于网络上一些文档以及自己的一些操作整合而成,本教程并非离线安装,请确保服务器能够正常连接网络
关于gitlab
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab 5.0以前版本要求服务器端采用 Gitolite 搭建,5.0版本以后不再使用 Gitolite ,采用自己开发的 gitlab-shell 来实现。如果你觉得安装麻烦可以使用 GitLab Installers 一键安装。
版本说明:
本文安装的是gitlab7.14的版本,目前gitlab最新版本为8.2,而目前网上最多的教程都是6版本的gitlab,7.14版本的安装和6版本大同小异,本文只是做一个整理。
gitlab7相对于6界面变动很大,到现在的8界面也几乎没有变化;而7的安装过程和6基本只有版本的区别,这块8版本的因为加入了go的依赖等,安装过程照比之前变化很大。
1 | * 系统版本:centos6.5_x86_64 |
安装前准备工作
基本配置
基本的环境配置,关闭防火墙、关闭selinux等,这里不做太多介绍,下面的命令实现永久关闭SELinux
1 | sed -i 's/^SELINUX=.*/#&/;s/^SELINUXTYPE=.*/#&/;/SELINUX=.*/a SELINUX=disabled' /etc/sysconfig/selinux |
下面的命令实现临时关闭SELinux
1 | setenforce 0 |
安装epel源
1 | yum -y install epel* |
导入EPEL源的key
1 | rpm --import https://www.fedoraproject.org/static/0608B895.txt |
修改配置
download.fedoraproject.org域名已经失效
去掉#号将download.fedoraproject.org变更为dl.fedoraproject.org
1 | vim /etc/yum.repos.d/epel.repo |
安装PUIAS源和导入对应key
1 | wget -qO- https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/install/centos/PUIAS_6_computational.repo > /etc/yum.repos.d/PUIAS_6_computational.repo |
重新建立源缓存和检测key导入是否成功
1 | yum clean all && yum makecache |
安装Development Tools开发组包和一些软件所需依赖包
不要用yum安装ruby、git、nginx和mysql;redis可以使用yum安装的版本
1 | yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-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 python-devel redis wget crontabs logwatch logrotate perl-Time-HiRes gettext gettext-devel openssl-devel zlib-devel gcc gcc-c++ make autoconf tk-devel python-pip patch pcre-devel curl curl-devel sudo yum-plugin-fastestmirror cmake perl-CPAN nodejs automake libxml* libmcrypt* libtool-ltdl-devel* yum-utils |
卸载已经安装的包
1 | yum remove ruby git nginx mysql mysql-server |
Development Tools开发组包我没有安装
1 | yum -y groupinstall 'Development Tools' |
同步时间
1 | rm -rf /etc/localtime |
安装git
下载源码包
1 | wget https://www.kernel.org/pub/software/scm/git/git-2.5.4.tar.gz |
找到git的路径添加到环境变量
1 | which git |
执行之后有版本信息证明gitserver安装成功
1 | git --version |
在执行git –version的时候有可能会报错找不到这个库文件
1 | ln -s /usr/local/lib/libcharset.so.1 /lib/libcharset.so.1 |
安装ruby
下载ruby源码包
1 | wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.gz |
编译安装ruby
1 | tar zfvx ruby-2.2.4.tar.gz && cd ruby-2.2.4 |
安装bundler需要添加rubygems的国内镜像
1 | #gem source --remove|-r --add|-a |
确保gem源中只有淘宝源
1 | gem sources -l |
安装bundler
1 | gem install bundler --no-ri --no-rdoc |
安装nginx
1 | wget http://nginx.org/download/nginx-1.9.14.tar.gz |
安装gitlab
创建一个git用户供gitLab使用
之前已经搭建过git Server不需要再次创建git用户,如果要纯净安装的话可以删除之前的用户.
1 | userdel -r git |
这里需要注意的是用户名一定要是git,如果换成别的需要改很多配置文件,不建议这样做
因为gitlab创建仓库以后所有文件都是存在git用户下的,如果git家目录不够大是不行的,而git很多配置文件中都有/home/git这个路径,如果要修改git默认的家目录需要修改很多配置文件,切记
因我的home空间不是很大,这里我对git指定了家目录,后面有需要修改的配置文件操作,以下面的两行#注释
1 | ################################## |
为了方便添加git用户拥有root权限 [sudoers文件默认没有写权限需要强制保存:wq!],或者直接把sudo信息添加到sudo文件中
1 | echo "git ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers |
不添加变量的话使用https链接会报如下错误,不过本文没有使用https
1 | fatal: unable to access 'https://github.com/gitlabhq/grit.git/': Peer certificate cannot be authenticated with known CA certificates |
配置redis使用socket
备份之前配置,修改端口号,添加socket配置,添加socket权限(>= redis 2.4.0).,启动服务
1 | cp /etc/redis.conf /etc/redis.conf.orig |
将git用户添加到redis组
1 | sudo usermod -aG redis git |
建立gitlab数据库并授权
编译安装mysql-5.5.39
添加mysql用户
1 | groupadd mysql |
获取安装包
1 | wget https://downloads.mariadb.com/archives/mysql-5.5/mysql-5.5.39.tar.gz |
编译安装
1 | cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 -DDEFAULT_CHARSET=utf8 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DDEFAULT_COLLATION=utf8_general_ci |
初始化
1 | chown -R mysql.mysql /usr/local/mysql5.5 |
将mysql添加到环境变量
1 | echo 'export PATH="$PATH:/usr/local/bin:/usr/local/mysql5.5/bin"' >> /root/. bashrc |
添加git连接mysql的用户以及数据库
1 | >CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; |
测试git用户是否可以使用刚才创建的mysql用户登录
1 | su - git |
安装gitLab-Shell
切换git用户
1 | su - git |
克隆gitlab的shell
1 | git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v2.7.2 |
配置自己的gitlab域名和端口
1 | gitlab_url: "http://git.cass.com:8050" |
#下面修改的内容为git指定家目录后的操作,如果是默认的/home/git则不需要修改,后面不再提示
1 | ################################## |
配置gitlab-shell使用reidis-socket
1 | redis: |
完成配置
1 | ./bin/install |
克隆gitLab源
这两个克隆的目录是可以打包多次使用的,网速慢的话可以选择打包留存一下
1 | su - git && cd ~ |
修改配置文件
1 | vim config/gitlab.yml |
如果准备使用smtp方式发送邮件,这里可以修改为发送邮件的账号,如果使用系统sendmail就不用修改,本人使用smtp方式
1 | email_from: noreply@cass.com |
这里是默认的用户创建仓库数量,无需修改,创建账号的时候可以修改
1 | ## User settings |
ldap配置,本文没有配置整合ldap,需要的自己尝试一下吧
1 | ldap: |
ssh端口,需要的自行修改
1 | #ssh_port: 22 |
下面是编译安装git后的路径,默认文件最大大小和超时时间
1 | git: |
默认8080端口,如果被占用自行修改,我也不确定这个是干什么用的
1 | listen "127.0.0.1:8060", :tcp_nopush => true |
修改连接redis配置
1 | cp config/resque.yml.example config/resque.yml |
修改配置文件
1 | vim config/resque.yml |
修改连接数据库配置文件
1 | cp config/database.yml.mysql config/database.yml |
创建所需目录以及配置相应权限
1 | cd ~/gitlab |
安装gems
1 | cd ~/gitlab |
对数据库进行初始化
1 | bundle exec rake gitlab:setup RAILS_ENV=production --verbose |
检查gitLab及其环境的配置是否正确
1 | cd ~/gitlab |
创建启动脚本
1 | sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab |
复制配置文件[这里使用nginx做为WEB服务]
1 | cd ~/gitlab |
nginx配置文件
1 | user git; |
gitlab虚拟主机的配置
1 | vim /usr/local/nginx/conf/conf.d/gitlab.conf |
拉取gitLab静态文件
1 | su - git && cd ~/gitlab |
访问测试
初始管理员帐号和密码为:
root
5iveL!fe
登陆成功后如下:
修改邮件发送
1 | cd ~/gitlab/ |
8.x版本的邮件配置和7.x有所不同
1 | cd ~/gitlab/ |
配置好你的邮箱和密码
编辑config/gitlab.yml
1 | vi config/gitlab.yml |
对应修改一下配置
1 | email_from: xxx@cass.com |