搭建私有Gitlab或Gogs

前言

由于项目越来越大,因为我需要更多的人投入到项目的开发过程中来,看中了Gitlab,所以自己准备把Gitlab部署到百度云服务器中,让其它项目的开发人员也一起投入项目开发,搭建前我看了Gitlab的官网https://about.gitlab.com/pricing/#gitlab-com、官网提供推荐使用Omnibus package installation安装方式,我考虑到Docker后期迁移和再部署都会很方便,所以采用了Docker的方式进行搭建,我用的是gitlab-ce这个是社区版本,还有个gitlab-ee是企业版本,企业版本是收费,社区版本是免费的,但同时社区版本功能会少很多,因我只需要基本功能就满足我的需求了,所以使用了gitlab-ce社区版本

搭建环境

使用的百度云BCC服务器,安装的CentOS7.5 64位系统,当然如果你们是自己的服务器或都是阿里云、腾讯云都类似

安装Docker

因为是新系统所以之前是未有安装过Docker,所以先需要安装Docker,注意:Docker对系统版本是有一定要求,必须是CentOS6.5或以上
以下为安装命令:

# 安装docker
yum -y install docker
# 启动docker
systemctl start docker
# 运行hello-world,如不存在docker会自动下载hello-world
docker run hello-world
# 查看docker镜像
docker images
# 查看运行中的容器
docker ps -a

安装gitlab-ce

# 获取gitlab-ce镜像
docker pull gitlab/gitlab-ce
# 准备容器外gitlab目录
mkdir -p /opt/gitlab/etc
mkdir -p /opt/gitlab/log
mkdir -p /opt/gitlab/data
# 运行容器
docker run --detach --publish 8443:443 --publish 8090:80 --name gitlab --restart unless-stopped -v /opt/gitlab/etc:/etc/gitlab -v /opt/gitlab/log:/var/log/gitlab -v /opt/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce
# --detach : 后台运行
# --publish : 端口映射
# --name : 容器名称
# --restart : 重启模式设置为unless-stopped
# -v : 挂载目录
# docker.io/gitlab/gitlab-ce : 镜像名称

修改gitlab配置

# 修改/opt/gitlab/etc/gitlab.rb
vim /opt/gitlab/etc/gitlab.rb

把external_url改成部署机器的域名或者IP地址


image.png
# 修改/opt/gitlab/data/gitlab-rails/etc/gitlab.yml
vim /opt/gitlab/data/gitlab-rails/etc/gitlab.yml
image.png

到此为止,gitlab的web管理页面就可以正常访问
如果还是不能正常访问的话,检查端口是否被占用

常用Gitlab命令

# 重新应用gitlab的配置
gitlab-ctl reconfigure
 
# 重启gitlab服务
gitlab-ctl restart
 
# 查看gitlab运行状态
gitlab-ctl status
 
#停止gitlab服务
gitlab-ctl stop
 
# 查看gitlab运行日志
gitlab-ctl tail
 
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sideki

Gitlab的使用

访问刚搭建的Gitlab,会提示你设置密码,这个密码是gitlab的root用户的管理员密码
设置完密码后通过root账号及密码登录gitlab

1、如果需要添加组的可以先添加组(我添加了backend组)
2、新建项目
3、开发人员注册gitlab,并设置添加ssh-key
4、管理在组中添加开发人员,指定开发人员权限
5、开发人员登录,就能看到管理员组下面新建的项目
6、如果习惯中文版,可以在个人中心配置里面选择语言为中文简体


image.png

安装Gogs

说明

之所以又介绍Gogs,是因为发现1核2G内存的服务器配置运行Gitlab很卡很慢,官网建议Gitlab至少要用4G内存使用,但服务器资源贵,后面才想到使用Gogs,Gogs是使用go语言开发,轻量便洁,内存占用少等优良特点

安装docker,如上安装方式

Gogs镜像

# Pull image from Docker Hub.
$ docker pull gogs/gogs

# Create local directory for volume.
$ mkdir -p /var/gogs

# Use `docker run` for the first time.
$ docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs

# Use `docker start` if you have stopped it.
$ docker start gogs

如果第3条命令报如下错误:


image.png

则重启下docker:

# restart docker
systemctl restart docker
# Once again start gogs
docker start gogs
# View gogs process
docker ps 

使用docker ps就可以看到服务了:


image.png

如果为阿里云服务器,需要配置安全组

其它服务器看情况,腾讯,华为,AWS等也都是要配置的,下面是配置的样图:


image.png

安装gogs

输入docker主机的ip和端口(默认端口10080):http://IP:10080/

我安装使用docker安装一个mysql服务,然后配置用户名密码
数据库主机填上可访问的数据库主机IP,如是阿里云需要开放访问权限


image.png

注意:红色框写上自己的服务器IP地址


image.png

注意:可以不用创建管理员用户,默认第一个用户就是管理员,admin这个用户不能使用
image.png

--- 注意:如果前端端口配置错了,后面可以在/var/gogs/gogs/conf/app.ini中修改,然后重新启动docker容器

数据库连接不上解决方案

1 阿里云ECS有安全组防火墙.默认只开了ICMP,22,3389. 在服务器控制台找到 安全组-配置规则-添加安全组规则


image.png

2 如果是用root登录MySQL,在登陆后use mysql, user表root对应的localhost改为%

mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
mysql> flush privileges;

3 mysql默认只能自本机访问,在 /etc/mysql/mysql.conf.d/mysqld.cnf 里注释bind-address : #bind-address = 127.0.0.1
操作完成后重启mysql服务: service mysql restart
4 netstat -ntpl |grep 3306 检查是不是在监听状态
5 防火墙是否对 mysql 端口限制,设置防火墙

# 打开防火墙配置文件    
vi  /etc/sysconfig/iptables
# 增加下面一行    
# 注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# 重启防火墙
systemctl restart iptables.service

有这五步基本都能解决连接不上的问题了

你可能感兴趣的:(搭建私有Gitlab或Gogs)