大家常听说Git、Github、Gitlab,很多人对着三个词很懵逼,分别讲一下这三个是什么意思。

  Git是一个开放源码的版本控制软件,还可以把我们的代码push到远程仓库。

  Github是一个网站,提供给用户空间创建git仓库,保存用户的一些数据文档或者代码等。

  Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来web服务。可以理解为你自己专属的github,功能基本一样,一般公司都会有自己的代码仓库
下面讲一下Gitlab如何在Linux服务器(centos7版本)上搭建。
服务器内存建议4G以上,我的是8g内存,CentOS Linux release 7.4.1708 (Core),执行以下代码一路畅行,
为什么要说这个呢,之前我用国外的512M小霸王服务器,鼓捣了一下午都不可以,解决所有报错后,更是在最后一步服务器死机,彻底GG

1、在系统防火墙中打开http和ssh的出口。



sudo yum install -y curl policycoreutils-python openssh-server



控制台输出“Complete!”后继续执行命令:



sudo systemctl enable sshd 

sudo systemctl start sshd



使sshd服务器自动启动,然后执行:



sudo firewall-cmd --permanent --add-service=http



在执行这句命令如果出现“FirewallD is not running”的提示,则表示防火墙未打开,
  可以执行“sudo systemctl status firewalld”查看防火墙状态,如果防火墙是“dead”状态,
  可以执行“sudo systemctl start firewalld”命令启动防火墙。
  再返回执行上面的添加服务命令,如果出现“success”则执行成功。 
  最后执行下面命令reload防火墙。 sudo systemctl reload firewalld 
  加入Gitlab的邮件服务,用于接受邮件。执行下面的命令:



sudo yum install postfix sudo systemctl enable postfix 

sudo systemctl start postfix



如果不想使用Gitlab提供的邮件服务,可以跳过上面的命令,在安装完Gitlab后,配置自己的邮件服务 

2、安装Gitlab。 执行下面命令安装仓库



curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash



接下来安装Gitlab安装包,执行下面的命令:



sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee



“http://gitlab.example.com”可以更改为你想要访问Gitlab实例的url,如果要安装https,需要在安装完成后额外配置。
  比如设置为 "http:172.168.10.251:8088" 搭建完成后就可以通过这个地址访问gitlab
  执行这个命令将会下载比较大的安装包,时间会长一些,可以耐心等待。 

3、打开浏览器登录。 第一次登录时,Gitlab会让你修改密码,修改后使用root账户和新密码登录。 
    
如果忘记设置初始密码,可以通过后台设置



cd /opt/gitlab/bin

sudo gitlab-rails console production   #需要等几秒运行程序

u=User.where(id:1)

u.password='12345678'

u.password_confirmation='12345678'

u.save!   #注意有个叹号

如果提示true,则修改管理员密码成功




4、然后 添加用户、创建组、向组中添加用户、创建项目(按照用户或者按照组创建)、然后各用户自己添加ssh公钥到gitlab中,好了,直接push或者clone代码吧,
另外代码仓库默认在 /var/opt/gitlab/git-data 目录



PS:如果不知道ssh公钥,可以参考
如果出现gitlab的nginx与原Nginx冲突,或者报错如下



[root@ACA83229 nginx]# service nginx restart
Stoping nginx... nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
 failed. Use force-quit
Terminating nginx...  done
Starting nginx... nginx (pid 25521 25520 25519 25518 25517 25516 25515) already running.