美文网首页
搭建私有Gitlab或Gogs

搭建私有Gitlab或Gogs

作者: zmwise | 来源:发表于2019-11-04 12:08 被阅读0次

    前言

    由于项目越来越大,因为我需要更多的人投入到项目的开发过程中来,看中了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

          本文链接:https://www.haomeiwen.com/subject/yxxjxqtx.html