大家常听说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.