docker 搭建轻量级git代码托管服务器gogs

Gogs 私服搭建以及使用手册

 

鉴于GitHub访问比较慢,公司内部要求搭建类似的应用服务,相对来说,GitHub、gitlab 这种都需要耗费太多资源,gogs是一个开源项目,轻量级,消耗的资源比较少,因此选择使用这个来搭建我们代码托管仓库服务器。

 

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

 

Gogs文档:https://gogs.io/docs

 

为了节省资源和应用隔离,我们使用docker方式部署,过程如下:

  1. 架构设计:
  1. 操作系统:centos 7 最小化安装 x86_64
  2. Docker版本:docker-ce 18
  3. Docker加速器:daocloud  阿里云 都可以  需要注册账号
  4. Web服务器使用nginx,配置反向代理,可以直接去访问我们的docker gogs容器
  5. Mysql服务器:mysql 5.7

 

 

2.服务器安装

下载centos 7 最小化系统镜像:

地址:https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso

 

服务器安装过程略

 

新安装系统需要进行一些软件以及依赖包的安装:

更新系统:yum update -y

安装必要的软件:

yum install net-tools vim wget git yum-utils device-mapper-persistent-data lvm2 -y

 

添加docker-ce的软件源(阿里云):

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新缓存:yum makecache fast

 

安装docker-ce,设置为开机启动并启动服务:

yum install docker-ce -y && systemctl start docker && systemctl enable docker

查看docker:

docker info

 

配置加速器:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://e721ea9e.m.daocloud.io

 

重启docker服务:systemctl restart docker

3.拉取mysql数据库镜像并启动一个实例:

docker pull mysql:5.7

docker run -p 3339:3306 --name mysql-server_5.7 -e MYSQL_DATABASE=gogs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

这里已经创建了一个数据库gogs,启动之后就可以用可视化工具连接,修改下数据库的默认字符集utf8

 

进入容器查看容器ip:

docker exec -t -i mysql-server_5.7 /bin/bash

容器是debian系统, 默认没有ifconfig ip命令,需要安装

apt-get update && apt-get install net-tools -y

ifconfig

然后将ip记下 172.17.0.3,作为gogs连接数据库之用

4.拉取gogs镜像并启动一个实例:

docker pull gogs/gogs

建立一个目录,作为映射数据之用

mkdir -p gogs/data

启动一个实例:

docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v gogs/data:/data gogs/gogs

此处将容器的22 3000端口分别映射到主机的10022 10080端口

 

此时就可以在本机使用http://localhost:10080访问进行初始化安装,不过我们的服务器是无界面的Linux,因此我们用nginx来做反向代理,就不用再输入端口了

 

5.安装nginx做反向代理:

yum install epel-release -y

yum install nginx -y

 

编辑配置文件:

vim /etc/nginx/nginx.conf

 

主要修改字段:

server_name localhost;

注释掉root

location / 下面添加如下内容:

proxy_pass         http://localhost:10080;

               proxy_http_version 1.1;

               proxy_set_header   Upgrade $http_upgrade;

               proxy_set_header   Connection keep-alive;

               proxy_set_header   Host $http_host;

               proxy_cache_bypass $http_upgrade;

 

启动nginx服务:systemctl start nginx

然后就可以在浏览器访问了:http://服务器ip 比如http://192.168.56.101

然后根据提示进行初始化的安装。

 

6.git客户端配置:

git config --global user.name "Your Name(用户名)"

git config --global user.email [email protected](邮箱)

 

生成ssh的key:

ssh-keygen -t rsa -C [email protected]

 

 

登陆管理界面:http://192.168.56.101

首次使用需要注册一个用户

然后用户设置, ssh密匙

增加密匙

添加公匙信息:名称随意,内容粘贴我们生成的公匙信息

 

需要修改app.ini配置 开启ssh方式

然后克隆项目:

git clone http://192.168.56.101/merry/movie_flask_python3.git

本地修改代码

git add -A

git commit -m “备注信息”

git remote add origin [email protected]:10022/merry/movie_flask_python3.git

 

此处 有点麻烦 ssh 方式提交 要配置免密而默认是22端口  我们使用了容器 映射出来的是10022端口

git remote set-url origin ssh://[email protected]:10022/merry/movie_flask_python3.git

 

这样就可以成功配置ssh密匙的方式提交, http方式提交文件大小有限制

测试ssh免密:

ssh -T -p 10022 [email protected]

 

git fetch origin 更新远程仓库到本地

git merge origin/master  合并

 

git push -u origin master 首次提交

git push origin master 以后提交

 

你可能感兴趣的:(linux系统运维)