QNIT.NET

  • Windows系统
  • 系统硬件
  • Mac系统
  • Linux系统
  • 虚拟系统
  • 编程技术
  1. 首页
  2. Linux系统
  3. 正文

CentOS7使用Gogs 搭建个人git仓库和项目自动部署

2020-02-18 1097 0 0

mysql 中创建 gogs 数据库 和gogs用户

连接本地数据库,建立gogs数据库,并把权限赋予gogs用户

[root@localhost ~]# mysql -uroot -p

Enter password:

mysql> CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;

mysql> GRANT ALL ON gogs.* TO 'gogs'@'localhost' IDENTIFIED BY 'YourPassword';

mysql> FLUSH PRIVILEGES;

mysql> exit;

[root@localhost ~]# useradd git

[root@localhost ~]# passwd git

下载Gogs并解压

解压之后会多出来一个 gogs 目录

[root@localhost ~]# cd /usr/local/src

[root@localhost src]# wget https://dl.gogs.io/0.11.4/linux_amd64.zip

[root@localhost src]# unzip linux_amd64.zip

配置与运行Gogs

编辑配置文件

[root@localhost src]# vim /home/git/gogs/scripts/init/debian/gogs

PATH=/sbin:/usr/sbin:/bin:/usr/bin

DESC="Gogs"

NAME=gogs

SERVICEVERBOSE=yes

PIDFILE=/var/run/NAME.pid

SCRIPTNAME=/etc/init.d/NAME

WORKINGDIR=/usr/local/src/gogs  #仓库 自行更改

DAEMON=WORKINGDIR/NAME

DAEMON_ARGS="web"

USER=git

#如果运行gogs不是用的这个用户,修改对应用户

#1.如果是创建的git用户 则目录修改为/usr/local/src/gogs.对应的USER修改为git

#2.如果是在root用户下安装在/usr/local/gogs/下 则对应的目录为:/usr/local/gogs/gogs.对应的USER修改为root

我们可以启动 gogs 服务器啦!它的启动十分简单,在 gogs 目录下运行如下命令即可:

[root@localhost src]# ./gogs/gogs web

看到有日志信息刷出,说明 gogs 服务器启动成功!

gogs 服务器默认监听 3000 端口,我们在浏览器中输入http://远程主机IP:3000或者http://域名:3000便可以打开 gogs 的 web 界面。

后台运行 gogs

使用 nohup 可以后台运行 gogs ,这样即使关掉 ssh 连接也不会影响 gogs 的运行,运行如下命令:

[root@localhost src]# nohup ./gogs/gogs web > /dev/null 2>&1 &

[1] 2893

nginx 反向代理至二级域名

浏览器中输入http://远程主机IP:3000或者http://域名:3000便可以打开 gogs页面,这样url很丑,我们利用nginx的反向代理实现美化url,设立二级域名 gogs,访问http://gogs.summer.com便能跳转到 gogs web 页面。

配置nginx的反向代理,在配置conf文件下建立conf.d,用来存放各配置,nginx.conf需要重写下

[root@localhost src]# mkdir /usr/local/nginx/conf/conf.d

[root@localhost src]# vim /usr/local/nginx/conf/nginx.conf

下面是nginx.conf配置, ‘ include /usr/local/nginx/conf/conf.d/*.conf ’这句将加载conf.d下的多server配置

#user nginx;

worker_processes  1;

error_log  /var/log/nginx/error.log warn;

#pid        /var/run/nginx.pid;

events {

worker_connections  1024;

}

http {

include      mime.types;

default_type  application/octet-stream;

log_format  main  'remote_addr -remote_user [time_local] "request" '

'statusbody_bytes_sent "http_referer" '

'"http_user_agent" "http_x_forwarded_for"'

'\t "request_body"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;

#tcp_nopush    on;

keepalive_timeout  65;

#gzip  on;

include /usr/local/nginx/conf/conf.d/*.conf;

}

按wq退出,新建gogs.conf进行编辑

[root@localhost src]# vim /usr/local/nginx/conf/conf.d/gogs.conf

#输入以下信息

upstream gogs {

server 127.0.0.1:3000;

}

server {

listen      80;

server_name  gogs.summer.com;

# root /home/php/test;

charset utf-8;

access_log  /var/log/nginx/gogs.access.log  main;

error_log /var/log/nginx/gogs.error.log  error;

location / {

try_files /_not_exists_ @backend;

}

location @backend {

proxy_pass http://gogs;

proxy_set_header X-Real-IP remote_addr;

proxy_set_header Hosthost;

proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;

proxy_http_version 1.1;

proxy_read_timeout  360000s;

proxy_set_header Upgradehttp_upgrade;

proxy_set_header Connection "upgrade";

}

}

然后重启nginx,添加hosts文件指向远程主机IP   gogs.summer.com,访问gogs.summer.com就可以见到

建议仓库根目录位置与安装gogs位置一致(我的位置是 /home/git/gogs/gogs-repositories)

域名、应用 URL改成相应的

如果 报运行系统用户非当前用户:git -> root 执行

[root@s132-148-242-150 src]# su git -c "/home/git/gogs/gogs web  2>&1 &"

使用git账号启动gogs。

配置了ssh后,gogs无法启动,错误信息是:Fail to start SSH server: listen tcp 0.0.0.0:22: bind: permission denied这个错误是用于服务器使用了端口22,所以要更改服务器gogs的端口号:

[root@localhost src]# vim /home/git/gogs/custom/conf/app.ini

SSH_PORT = 1111

gogs开机自启

[root@s132-148-242-150 src]# cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/gogs.service

[root@s132-148-242-150 src]# systemctl enable gogs

[root@s132-148-242-150 src]# systemctl start gogs

项目自动部署

访问gogs.summer.com进入用户设置,把SSH秘钥加上(怎么生成公钥和秘钥在这就不说了),就可以通过git命令上传文件啦

上传文件保存在仓库的根目录/home/git/gogs/gogs-repositories/用户名/项目名.git 文件夹下。

例如:SSH :root@localhost:coen/12buy.git 这个项目地址 用户coen是管理者 12buy是项目名称 上传的文件则在/home/git/gogs/gogs-repositories/coen/12buy.git 下。

项目自动部署需要用到钩子(hook)

进入仓库设置-》管理Git钩子(管理者才有权限),编辑post-receive,push成功会自动触发这个钩子,完成git仓库到站点的克隆,完成自动部署

写入下面内容(target_branch是克隆那个分支 working_tree 是站点位置)

#!/bin/bash

target_branch="master"

working_tree="/home/www/12buy"

while read oldrev newrev refname

do

branch=(git rev-parse --symbolic --abbrev-refrefname)

if [ -n "branch" ] && [ "target_branch" == "branch" ]; then

GIT_WORK_TREE=working_tree git checkout target_branch -f

NOW=(date +"%Y%m%d%H%M%S")

git tag release_NOWtarget_branch

echo "  /==============================="

echo "  | DEPLOYMENT COMPLETED"

echo "  | Target branch: target_branch"

echo "  | Target folder:working_tree"

echo "  | Tag name    : release_$NOW"

echo "  \=============================="

fi

done

保存,服务器上位置在/home/git/gogs/gogs-repositories/custom_hooks下有个post-receive文件。可以了,push一下,/home/www/12buy目录下已经有了文件

作者:summer_coen
链接:https://www.jianshu.com/p/b449f2f0c44d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签: CentOS git Gogs
最后更新:2021-11-24

leon

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

取消回复
最新 热点 随机
最新 热点 随机
清理 Docker 占用的磁盘空间 CSS常用命名名称 常用正则表达式速查手册,Python文本处理必备 SAS硬盘指示灯状态对照表 电脑的基础认识(硬件篇) 将照片变成漫画风格
常用正则表达式速查手册,Python文本处理必备 SAS硬盘指示灯状态对照表 黑苹果系统MacOS 10.14 Mojave硬件支持列表 电脑的基础认识(硬件篇) Navicat for Sqlite 合并两个DB数据库 让老机器支持UEFI的启动
标签聚合
JWT Mojave Navicat 虚拟系统 ESXI Django API MySql

COPYRIGHT © 2021 QNIT.NET. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY Qnit.net

黔ICP备2021010068号

贵公网安备 52270102000278 号