使用Gitea替换Gogs

前言

Gogs是一款使用Golang编写的Git应用网站程序,具有轻便快速的特性,适合中小团队使用,之前康康也是使用的这款产品。

Gitea是一款Gogs的社区版本,由于Gogs并不允许他人加入,且所有代码更新、审核等都是一人完成,更新缓慢,维护费力,所以就有网友决定组织团队,对Gogs进行分支维护,由此,也可以说Gitea属于Gogs的一个分支版本。

而康康决定由Gogs转为Gitea的原因,也是由于社区版本的活跃性,以及更新快速等,这样能够最大化的保证系统的安全、功能、稳定等。

卸载Gogs

要安装Gitea,肯定要先把原有的Gogs给卸载掉,由于当时使用pkg进行安装的,所以要卸载也非常简单。

停用服务

service gogs stop

删除原有文件(可选)

rm -rf /usr/local/etc/gogs
rm -rf cd $GOPATH/src/github.com/gogs/gogs
rm -f /usr/local/etc/rc.d/gogs

再把 /etc/rc.conf 中的 gogs_enable="YES" 给删除即可。

安装Gitea

Gitea同样分为二进制安装和源码安装,至于pkg中是否有,康康没测试过,大家可以自行试试。

由于Gitea并没有提供FreeBSD的二进制版本,所以康康选择了源码安装形式,这里顺便说下,官方提供的二进制版本都是单一文件的,也就是把所有静态资源都一同编译进了程序中,是使用make进行编译。

获取Gitea源码

这里要注意,Gitea源码保存在https://github.com/go-gitea/gitea,但是获取时不能直接通过https://github.com/go-gitea/gitea获取,否则会出现引用错误。

go get -d -u code.gitea.io/gitea

编译源码

获取到源码后,进入源码目录并进行编译。

cd $GOPATH/src/code.gitea.io/gitea
go build .

OK,编译完成后得到gitea的可执行文件。

配置Nginx

Gitea同样的是默认运行在3000端口,对于咱们来说很不习惯,一般都是使用Nginx进行代理。

server {
    listen 80;
    server_name git.wskehao.com;
    access_log /data/log/git.wskehao.com_nginx.log combined;
    index index.html index.htm index.php;
    root /data/www/git.wskehao.com;

    location / {
        proxy_pass http://127.0.0.1:3000/;
    }

    location ~ .*\.(gif|jpg|jpeg|bmp|swf|flv|mp4|ico)$ {
                expires 30d;
                access_log off;
        }
                
        location ~ .*\.(js|css)?$ {
                expires 7d;
                access_log off;
        }
}

这里要注意下,由于验证码是直接使用/captcha/xxxxx.png形式的访问地址,所以这里一定要注意,否则会出现验证码不县市的情况,康康是直接去除缓存。

配置自启动

自启动与Gogs一样,只是稍微改了点名称而已。

ee /usr/local/etc/rc.d/gitea

#!/bin/sh
#
# $FreeBSD$
#

# Copyright (C) 2015 by Yuri Victorovich. All rights reserved.

# PROVIDE: gitea
# REQUIRE: LOGIN
# KEYWORD: shutdown

#
# Add the following line to /etc/rc.conf to enable gitea:
#
#gitea_enable="YES"

. /etc/rc.subr

name="gitea"
rcvar=gitea_enable
start_cmd="gitea_start"
stop_cmd="gitea_stop"

load_rc_config ${name}

: ${gitea_enable="NO"}

logfile=/data/log/gitea.log
pidfile=/data/run/gitea.pid
command="/usr/bin/true"
procname="/usr/sbin/daemon"

is_process_running() {
  [ -f $pidfile ] && procstat $(cat $pidfile) >/dev/null 2>&1
}

gitea_start() {
  if is_process_running; then
    echo "gitea is already running (pid=$(cat $pidfile))"
    return 1
  fi
  export USER=git
  export HOME=$(echo ~git)
  touch $logfile
  chmod 640 $logfile
  cd /root/go/src/code.gitea.io/gitea
  /usr/sbin/daemon -P $pidfile -f -u git /root/go/src/code.gitea.io/gitea/gitea web >>$logfile 2>&1
  if is_process_running; then
    echo "started gitea (pid=$(cat $pidfile))"
  else
    echo "failed to start gitea"
  fi
}

gitea_stop() {
  if is_process_running; then
    local pid=$(cat $pidfile)
    echo "stopping gitea (pid=$pid)"
    kill -- -$pid
  else
    echo "gitea isn't running"
  fi
}

run_rc_command "$1"

加入自启动并启动。

chmod +x /usr/local/etc/rc.d/gitea
sysrc gitea_enable="YES"
service gitea start

OK,生下的就是直接访问并安装了。

康康的Gitea

康康架设的Gitea地址:https://git.wskehao.com(因18年备案新规,为避免后续可能会出现的操蛋问题,国内不再假设、提供带有重要数据保存的服务,目前康康所有项目均迁移至github.com)

欢迎各位朋友前来使用!

最后修改:2019 年 04 月 27 日 07 : 49 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

4 条评论

  1. asher

    gogs改成gitea代码和用户会不会丢失

    1. 康康
      @asher

      没注意,因为我是自用的,当时直接删除重装的

  2. lunny

    可以考虑从 github 迁移到 https://gitea.com

    1. 康康
      @lunny

      额,暂时没考虑过,毕竟github是非常不错的