美文网首页
Centos 8 安装gogs

Centos 8 安装gogs

作者: Sdoopy | 来源:发表于2020-09-09 22:09 被阅读0次

    Mysql部分

    安装mysql

    yum install mariadb-server mariadb

    启动mysql

    systemctl start mariadb #启动MariaDB

    systemctl stop mariadb #停止MariaDB

    systemctl restart mariadb #重启MariaDB

    systemctl enable mariadb #设置开机启动

    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 /usr/local/src/gogs/scripts/init/debian/gogs

    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" '
    
                      '$status $body_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 Host $host;
    
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                proxy_http_version 1.1;
    
                proxy_read_timeout  360000s;
    
                proxy_set_header Upgrade $http_upgrade;
    
                proxy_set_header Connection "upgrade";
    
        }
    

    }

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

    ![<meta charset="utf-8">

    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 /usr/local/src/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" '
    
                      '$status $body_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 Host $host;
    
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                proxy_http_version 1.1;
    
                proxy_read_timeout  360000s;
    
                proxy_set_header Upgrade $http_upgrade;
    
                proxy_set_header Connection "upgrade";
    
        }
    

    }

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

    image

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

    域名、应用 URL改成相应的

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

    [root@s132-148-242-150 src]# su git -c "/usr/local/src/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 /usr/local/src/gogs/custom/conf/app.ini

    SSH_PORT = 1111

    gogs开机自启

    [root@s132-148-242-150 src]# cp /usr/local/src/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命令上传文件啦

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

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

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

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

    image

    写入下面内容(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-ref $refname)
    
    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_$NOW $target_branch
    
      echo "  /==============================="
    
      echo "  | DEPLOYMENT COMPLETED"
    
      echo "  | Target branch: $target_branch"
    
      echo "  | Target folder: $working_tree"
    
      echo "  | Tag name    : release_$NOW"
    
      echo "  \=============================="
    

    fi

    done

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

    作者:summer_coen
    链接:https://www.jianshu.com/p/b449f2f0c44d
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    ](https://img.haomeiwen.com/i6720496/7a7a290f2102003e.png?imageMogr2/auto-orient/strip|imageView2/2/w/1014/format/webp)

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

    域名、应用 URL改成相应的

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

    [root@s132-148-242-150 src]# su git -c "/usr/local/src/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 /usr/local/src/gogs/custom/conf/app.ini

    SSH_PORT = 1111

    gogs开机自启

    [root@s132-148-242-150 src]# cp /usr/local/src/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命令上传文件啦

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

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

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

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

    image

    写入下面内容(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-ref $refname)
    
    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_$NOW $target_branch
    
      echo "  /==============================="
    
      echo "  | DEPLOYMENT COMPLETED"
    
      echo "  | Target branch: $target_branch"
    
      echo "  | Target folder: $working_tree"
    
      echo "  | Tag name    : release_$NOW"
    
      echo "  \=============================="
    

    fi

    done

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

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

    相关文章

      网友评论

          本文标题:Centos 8 安装gogs

          本文链接:https://www.haomeiwen.com/subject/btiyektx.html