zoukankan      html  css  js  c++  java
  • Centos7下Docker安装Gogs搭建git服务器

     

    gihub地址:https://github.com/gogs/gogs

    gogs官网:https://gogs.io/

    gihub官方docker安装gogs方法:https://github.com/gogs/gogs/tree/master/docker

    我这边另外一篇centos7安装docker的文章:https://www.cnblogs.com/Sungeek/p/9182433.html

    搭建环境:centos7+docker+git+Mariadb

    最近公司内部需要搭建一个git,我原本是搭建最原始的git+Gitosis(管理公钥),然后公司大牛讲解了一波docker也讲到了gogs然后知道了这个git开源服务很简约,轻巧

    这篇文章将介绍如何使用docker来搭建Gogs源码管理仓库,也会在搭建途中把我遇到的问题解决方法都列举出来

    目录:

    Docker下载镜像

    docker运行gogs容器

    安装Mariadb

    配置gogs

    验证安装

    配置SSH登录

    配置文件配置强制登录才能查看其他页面

    1.Docker下载镜像

    首先需要再docker官网hub.docker.com上搜索gogs,找到镜像地址:hub.docker.com/r/gogs/gogs/tags/。然后获取pull到本地centos7服务器,然后tag做下便签方便后面使用。

    ▲注意:这里我加了registry.docker-cn.com前缀,使用国内的docker镜像库,速度更快一些。

    [root@localhost ~]# docker pull registry.docker-cn.com/gogs/gogs:0.11.53

    [root@localhost ~]# docker tag registry.docker-cn.com/gogs/gogs:0.11.53 gogs:0.11.53
    [root@localhost ~]# docker rmi registry.docker-cn.com/gogs/gogs:0.11.53;
    Untagged: registry.docker-cn.com/gogs/gogs:0.11.53
    Untagged: registry.docker-cn.com/gogs/gogs@sha256:3b2bc27e1c786d84cbd3c28010e0f97448b04effb9f0ef2b91ca73445da20eb1

    doker 的这些命令不懂可以参考我前面的docker文章里面的命令大全!

    2.docker运行gogs容器

    说明:3000端口是http端口,8031是映射端口,所以要是想不加端口后缀可以映射80端口

    [root@localhost ~]# docker run -d --name=gogs -p 8031:3000 -p 8032:22 -v /docker/gogs:/data gogs:0.11.53
    e75249399222383e7f4e7a3715e6e45569d31862ee7ef01d5ffda69d845c9663

    查询一下是否运行

    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                          NAMES
    e75249399222        gogs:0.11           "/app/gogs/docker/..."   42 seconds ago      Up 41 seconds       0.0.0.0:8032->22/tcp, 0.0.0.0:8031->3000/tcp   gogs

    如果想配置服务器断电了自启动docker容器:

    [root@localhost ~]# docker stop e75249399222
    e75249399222
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost ~]# docker rm e75249399222
    e75249399222
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost ~]# docker run -dit --name=gogs -p 8031:3000 -p 8032:22 -v /data/docker/gogs:/data --restart unless-stopped gogs:0.11.53
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                          NAMES
    977c404a64cd        gogs:0.11           "/app/gogs/docker/..."   4 seconds ago       Up 3 seconds        0.0.0.0:8032->22/tcp, 0.0.0.0:8031->3000/tcp   gogs
    [root@localhost ~]# 

    如上面命令所示,我前面已经启动了这个容器需要先停止再删除这个容器再配置开机启动

    官方文档说明:https://docs.docker.com/v17.09/engine/admin/start-containers-automatically/

    3.安装Mariadb

    [root@localhost ~]# yum install -y mariadb mariadb-server

    开机自启动

    [root@localhost ~]# Systemctl enable mariadb

    运行服务

    [root@localhost ~]# Systemctl start mariadb

    查看Mariadb是否安装成功

    添加一下数据库的3306端口防火墙策略

    [root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
    [root@localhost ~]# firewall-cmd --reload

    创建一个gogs库并设置为utf8的字符编码格式

    create database gogs character set utf8 collate utf8_bin;

    show databases;查看数据库

    授予本地访问权限:

    创建账户并且授权设置密码

    grant all privileges on gogs.* to gogs@localhost identified by 'gogs';

    给来自loclhost的用户gogs分配可对数据库gogs所有表进行所有操作的权限,并且设定密码为gogs

    授予远程访问权限:

    grant all privileges on *.* to 'gogs'@'%' with grant option;

    刷新

    flush privileges;

     select user, host from user; 查询用户是否创建

    # mysql -u root -p /*输入密码进入*/  

    /*第一个方式:直接编辑数据库字段*/  

    MariaDB [(none)]> use mysql;  

    MariaDB [mysql]> UPDATE user SET password=password('newpassword') WHERE user='root';  

    MariaDB [mysql]> flush privileges;  

    MariaDB [mysql]> exit  

    /*第二个方式:修改密码,不用进入mysql*/  

    MariaDB [(none)]> SET password for 'root'@'localhost'=password('newpassword');  

    MariaDB [(none)]> exit; 

    4.配置gogs

    上面映射了两个端口,其中8031是http端口号,8032是ssh端口号。假设安装的服务器IP是192.168.1.64,则用浏览器打开http://192.168.1.64:8031,自动跳转至配置页面,然后按下面这样配置。

    注意:这里注意不要修改上面的3000端口号。

    提示:如果配置错了想要重新安装,可以执行:docker stop gogs; docker rm gogs; rm -rf /docker/gogs;

    配置完直接点击安装

    5.验证安装

    配置完成后,会自动跳转到登录页:http://192.168.1.64:8031/user/login。这个URL地址也就是上节配置的应用URL(非域名,域名的配置影响的是SSH)。

    注册登录成功后,可以创建一个helloworld仓库,可以看到如下界面:

     

    6.配置SSH登录

    安装完成后,在客户端先安装git软件,然后打开git bash,尝试推送到仓库:

    touch README.md
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin http://192.168.1.64:8031/sungeek/helloworld.git
    git push -u origin master

    此时,执行下面几个步骤:

    1. 打开Git Bash,执行cat ~/.ssh/id_rsa.pub。查看本地的id_rsa.pub文件内容。

    2. 如果没有文件则使用命令,创建密钥(将1838370@qq.com替换成你的gogs账号):

    ssh-keygen -t rsa -C "1838370@qq.com"

    3. 再次执行cat ~/.ssh/id_rsa.pub,可以看到类似下面的输出:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGG9YIm0vb8MwCZ0AvsQ679JPYtwLGFP0yT8WW+UOpYR46+k+5KGz3oI0gC910es0LZtrUbAlT34IiR2iEAiGhMXe/xfA/hH8A6UL0lvqcz9EYOcKhzmlONzyf3nojkVCi89tRQlGqTncnPt1AXFySXPVKgV3QjSFKRLcvsZso71Xw45vPwPazmq3Ji+v8k9+VTdT9GI1wT/v9Kb54bmfX7kCCFcrAZUDnFK6T0YZyjIDHQo5dThXw58Ks4/CAyODW983Hd4agAvhBDnWmja8CUCsj+lOkaUzUBZHAYB0WdfAfykowNcbeuOsgoTSkwVjBkdBWVaEH725/QxpFnAuJ xiewanpeng@25qp.cn

     

    7、配置文件配置强制登录才能查看其他页面

    修改配置文件

    /gogs/conf/app.ini 
    
    [service]
    REQUIRE_SIGNIN_VIEW = true

  • 相关阅读:
    关于掌握C#的内存堆栈概念
    sqlserver 跨服务器查询
    写单元测试的知识结构(2)——单元测试工具的选用(找个顺手的)
    写单元测试的知识结构(1) —— 单元测试用处
    如何能保证自己的功能代码不出纰漏
    Mysql查询架构信息
    Mysql 分组查询最高分
    Mysql按照字段值做分组行转列查询
    软件测试学习笔记:主路径测试
    软件测试学习笔记:Junit入门
  • 原文地址:https://www.cnblogs.com/Sungeek/p/9188599.html
Copyright © 2011-2022 走看看