鉴于GitHub访问比较慢,公司内部要求搭建类似的应用服务,相对来说,GitHub、gitlab 这种都需要耗费太多资源,gogs是一个开源项目,轻量级,消耗的资源比较少,因此选择使用这个来搭建我们代码托管仓库服务器。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
Gogs文档:https://gogs.io/docs
为了节省资源和应用隔离,我们使用docker方式部署,过程如下:
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 以后提交