隐藏

docker+gogs+nginx配置Git服务自动部署Web应用

如何部署一个git服务而且又可以自动部署web应用呢?

  • 1.docker
  • 2.gogs
  • 3.nginx

明白以上三者是什么,就可以开始搞事了!

一、放通端口,阿里云腾讯云的需要到各自的官网开放

1.查看firewall服务状态
systemctl status firewalld
2.查看firewall的状态
firewall-cmd --state
3.开启、重启、关闭firewall服务

  • 开启
    service firewalld start
  • 重启
    service firewalld restart
  • 关闭
    service firewalld stop

4.查看防火墙规则
firewall-cmd --list-all
5.查询、开放、关闭端口

  • 查询端口是否开放
    firewall-cmd --query-port=8080/tcp
  • 开放80端口
    firewall-cmd --permanent --add-port=80/tcp
  • 移除端口
    firewall-cmd --permanent --remove-port=8080/tcp
  • 重启防火墙(修改配置后要重启防火墙)
    firewall-cmd --reload
  • 参数解释
    1、firwall-cmd:是Linux提供的操作firewall的一个工具;
    2、–permanent:表示设置为持久;
    3、–add-port:标识添加的端口;

二、安装docker

1、使用 sudo 或 root 权限登录 Centos。

2、确保 yum 包更新到最新。

$ sudo yum update
3、执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
执行这个脚本会添加 docker.repo 源并安装 Docker。

4、启动 Docker 进程。

sudo systemctl start docker
5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

$ sudo docker run hello-world
docker ps
到此,Docker 在 CentOS 系统的安装完成。(这部分教程来自菜鸟教程,更多系统安装请前往菜鸟教程)

三、用小南提供的自动脚本nan-deploy.sh去安装gogs和nginx

1、下载nan-deploy.sh
$ curl -O http://aboutme.ink/share/nan-deploy.sh
2、给脚本赋予权限
$ chmod +x nan-deploy.sh
3、运行脚本
$ ./nan-deploy.sh /home/docker/gogs/ 10080 10022 80
参数解释

  • /home/docker/gogs/ 是参数一,代表了gogs和nginx安装的路径
  • 10080 是参数二,表示gogs应用访问端口,ip:10080去访问gogs首页
  • 10022 是参数三,表示gogs对外暴露的ssh端口,用于配置秘钥后下载和上传git代码
  • 80 是参数四,表示nginx的端口,ip直接可以访问nginx首页(80默认隐藏)

以上四个参数自己调整也可以,新手建议默认按照我的配置就可以了
以下是完整运行截图

4、打开浏览器访问ip:10080和ip:80


如果出现这些页面说明成功了!

5、配置gogs,打开页面ip:10080
数据库选SQLite3,域名写自己的服务器ip,ssh端口填参数三10022,勾选内置服务器,http端口填写参数二10080,应用url填写ip:10080,然后点立即安装



点击立即安装,稍等一会会跳转登陆页面,如下

6、然后注册一个账号并且登陆会成为管理员(第一个账号)
7、新建一个仓库,并且克隆到本地
8、点击仓库设置配置git钩子或者web钩子



以上配置只需要修改UserName、repo和repoHttpUrl就行,然后点更新钩子设置
9、克隆你的仓库到本地并且添加一个index.txt文件并写入内容

10、更新你的本地仓库后,推送到远程仓库

如果会显示上图的信息,说明你的钩子设置成功,并且代码已经推送到了nginx服务器上
11、打开你的浏览器测试一下

可以看到,已经可以访问了
12、再次更新你的本地仓库

13、推送到远程仓库

14、再次打开浏览器访问

小南有话说

1.其实我利用的原理就是git本身有钩子的一个功能特点,结合docker下的gogs和nginx开发了一套容易理解又非常高效的web应用自动部署平台
2.gogs还支持webhooks的web钩子进行代码的部署,这边我就没有多做讲解了,如果你学会了git钩子部署,那么web钩子部署也不是难事

---------------- The End ----------------