CentOS下使用gitea搭建Git服务1.13.2


title: CentOS下使用gitea搭建Git服务1.13.2
date: 2020-05-21 13:14:00
comments:
description:
keywords: “PUSDN,JaneYork,平行宇宙开发者网,P站,破该仔统一软件开发者网,破该仔联盟,破该仔俱乐部,Git,gitea”
top_img:
cover:
mathjax:
katex:
aplayer:
tags: [PUSDN,Git]
categories: Git


一说

Powered By PUSDN - 平行宇宙软件开发者网www.pusdn.com ,转载请标明出处!

完整版请移步:PUSDN - 平行宇宙软件开发者网www.pusdn.com

同步更新最新版:PUSDN - 平行宇宙软件开发者网www.pusdn.com

部分截图、链接等因跨域、过期、更换域名等可能不显示,可联系反馈(备注好博文地址),谢谢❤

前情提示

CentOS7.x cat /etc/redhat-r/elease
gitea1.13.2
Git 使用系统自带1.8.3.1
本文MySQL5.6且使用utf8mb4,建议如果用utf8mb4>=5.7

废话说在前面

已从gogs转移至gitea。为什么?这么说吧,给你个Google pixel手机(原生安卓系统),一个小米手机(基于Android,定制化,更人性)。哪个用的舒服?gitea和其他对比,更多细节可以看官网横向对比。gitea的好可以自己看官网特性,这里不再赘述。
至于为什么换成gitea,当初因为组织团队权限推送问题和批量绑定仓库问题,这两点gogs是没有的,另外,两者个人感觉都活跃,gitea更加频繁,毕竟是社区化的合作开发。
两者都有try,自己体验,尝试。

更新说明

  1. 去除普通图片截图,保留部分核心截图;详细截图可参考:https://blog.csdn.net/qq_31708763/article/details/104814669

软件准备

  1. gitea下载

https://github.com/go-gitea/gitea/releases/tag/v1.13.2
或者https://dl.gitea.io/gitea/1.13.2找到对应版本进行下载,如下图:
image.png

mkdir -p /server/backup/gs
# wget -O gitea https://dl.gitea.io/gitea/1.13.2/gitea-1.13.2-linux-amd64
wget https://github.com/go-gitea/gitea/releases/download/v1.13.2/gitea-1.13.2-linux-amd64
# chmod +x gitea
  1. mysql下载

rpm方式安装,步骤略,可参考:https://blog.csdn.net/qq_31708763/article/details/86366445
软件下载,官网下载或云盘下载。步骤略。
将下载好的软件上传到服务器。本文已经提前离线下载好的一些软件,所以使用scp远程复制到服务器。

mkdir -p /server/backup/gs
# scp -P 22000 -r -v /server/backup/gs/* root@211.149.239.182:/server/backup/gs
scp -P 22 -r -v /server/backup/gs/* root@59.110.21.159:/server/backup/gs
# scp -P 22 -r -v /server/backup/gs/gitea-1.13.2-linux-amd64 root@59.110.21.159:/server/backup/gs
#如果重装
ssh-keygen -R 59.110.21.159

更新yum(可选)

yum -y update

swap创建(可选)

sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m
history | grep 'swap'
删除
1. 停止正在使用的swap分区
$ swapoff /root/swap

2. 删除swap分区文件
$ rm /root/swap

3. 删除或注释在/etc/fstab文件中的以下开机自动挂载内容:
$ vim /etc/fstab 在该文件中删除如下内容

更新内核(不操作)

gitea必须,否则centos6下报错:kernel too old。

解决:https://janeyork.blog.csdn.net/article/details/106496370

MySQL安装

rpm方式安装,步骤略,可参考:
https://janeyork.blog.csdn.net/article/details/113795478

安装依赖

yum -y install wget gcc-c++ ncurses ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel curl-devel libjpeg* libpng* freetype* make gcc-c++ cmake bison-devel ncurses-devel bison perl perl-devel perl perl-devel net-tools* numactl*

配置防火墙

CentOS7.x移步:https://blog.csdn.net/qq_31708763/article/details/86514366

------CentOS6.x start------
vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9527 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

修改完成后,重启防火墙:service iptables restart,如果有必要,请登录云安全组开放端口。
------CentOS6.x end------

Git安装(不操作)

Git安装可参考:https://blog.csdn.net/qq_31708763/article/details/103007119

卸载旧版本:

查看源版本信息:
yum info git
git --version
如果安装了,卸载:
yum remove git

安装依赖:

yum install -y asciidoc docbook2X xmlto texinfo sgml2xml autoconf openjade curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

上传git安装包,并解压:

cd /server/backup/gs/
tar -zxvf git-2.26.2.tar.gz
cd git-2.26.2
make configure
./configure --prefix=/usr/local/git
make && make install
sudo echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile

验证Git是否安装成功:

输入git --version试试安装成功。

Gitea安装

查看有哪些用户:cat /etc/passwd
创建git用户:

sudo useradd git

创建gitea,mysql用户密码,专门用于gitea本地访问:

mysql -u root -p
Www_pusdn_com
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'Www_pusdn_com';
GRANT ALL PRIVILEGES ON *.* TO 'gitea'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
# 高版本建库或者导入gitea.mysql.sql都会报错,建议手动创建库,如果报错1071,如果utfmb8建议>=5.7
#SET GLOBAL innodb_file_per_table = ON,innodb_file_format = Barracuda,innodb_large_prefix = ON;                                                            
# DROP DATABASE IF EXISTS gitea;                                                                   
# CREATE DATABASE IF NOT EXISTS gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

在这里插入图片描述

手动创建数据库(导入gitea自带sql文件报错,0.13版本修复):

新建数据库,这里建议直接新建数据库,设置好编码格式utf8mb4,上面我们不是用navicate测试远程链接了吗,最好使用客户端进行直接新建数据库gitea,

在这里插入图片描述

上传二进制文件。

mkdir /home/git/gitea
chown -R git:git /home/git/gitea
# wget -O gitea https://dl.gitea.io/gitea/1.12/gitea-1.13.2-linux-amd64
mv /server/backup/gs/gitea-1.13.2-linux-amd64 /home/git/gitea/gitea
chmod +x /home/git/gitea/gitea
chown -R git:git /home/git/gitea/gitea

安装:

cd /home/git/gitea/
su git
./gitea web --port 3001
# 或者./gitea web  别问我为啥指定端口,因为3000占用了,或者你临时把3000停止,建议指定端口,除非你明确3000没被占用,然后浏览器访问ip:port

执行截图:
在这里插入图片描述

安装完成:随便点击一个登录按钮,根据页面填写参数:
在这里插入图片描述
默认配置如下:

APP_NAME = Git
RUN_USER = git
RUN_MODE = prod

[oauth2]
JWT_SECRET = a1ZYV_JuvQ_QxIfDCnnBPlI_Vs5tcXUoX7IFCiyF1eo

[security]
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MTMyMDQxNzF9.9uXLpdiDmUFwvK_QrLjp1lDH3neSOKxY9mI1YyhZmKs
INSTALL_LOCK   = true
SECRET_KEY     = 73BaMzI5bf0diQJ2KWLv0c9xvpVyxefmQM66C4oVxn0K5FV1ashm3qhTGZ7Q4gWi

[server]
LOCAL_ROOT_URL   = http://localhost:3001/
SSH_DOMAIN       = localhost
DOMAIN           = localhost
HTTP_PORT        = 3001
ROOT_URL         = http://localhost:3001/
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /home/git/gitea/data/lfs
LFS_JWT_SECRET   = MABbPvOtdn3z-xxWWt8iwjoGUyQG7lHF0ORLs3mefEM
OFFLINE_MODE     = false

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gitea
USER     = gitea
PASSWD   = Www_pusdn_com
SCHEMA   = 
SSL_MODE = disable
CHARSET  = utf8mb4
PATH     = /home/git/gitea/data/gitea.db
LOG_SQL  = false

[repository]
ROOT = /home/git/gitea-repositories

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM            = false
ENABLE_NOTIFY_MAIL                = false
DISABLE_REGISTRATION              = false
ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
ENABLE_CAPTCHA                    = false
REQUIRE_SIGNIN_VIEW               = false
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true

[session]
PROVIDER = file

[log]
MODE                 = console
LEVEL                = info
ROOT_PATH            = /home/git/gitea/log
REDIRECT_MACARON_LOG = true
MACARON              = console
ROUTER               = console

开机启动Gitea

加入开机启动:su root(此处默认执行了以下,因为gogs有问题,怕也有问题)

ln -s /usr/local/git/bin/git /bin/git
ln -s /usr/local/git/bin/git-upload-pack /bin/git-upload-pack
ln -s /usr/local/git/bin/git-cvsserver /bin/git-cvsserver
ln -s /usr/local/git/bin/gitk /bin/gitk
ln -s /usr/local/git/bin/git-receive-pack /bin/git-receive-pack
ln -s /usr/local/git/bin/git-shell /bin/git-shell
ln -s /usr/local/git/bin/git-upload-archive /bin/git-upload-archive

https://github.com/go-gitea/gitea/blob/master/contrib/init/centos/gitea

# su root
mkdir -p /home/git/gitea/myscripts/init/centos/
vi /home/git/gitea/myscripts/init/centos/gitea
文件内容下文。
centOS6:
cp /home/git/gitea/myscripts/init/centos/gitea /etc/rc.d/init.d/
chmod a+x /etc/rc.d/init.d/gitea 
chkconfig gitea on
service gitea start    #启动服务
service gitea stop     #停止服务
service gitea restart  #重启服务
## 另一种临时启动可以进入安装目录~/gitea,执行:
./gitea web 不过这是关闭窗口就随之关闭

文本内容:

#!/bin/sh
#
#       /etc/rc.d/init.d/gitea
#
#       Runs the Gitea Git with a cup of tea.
#
#
# chkconfig:   - 85 15
#

### BEGIN INIT INFO
# Provides:          gitea
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start gitea at boot time.
# Description:       Control gitea.
### END INIT INFO

# Source function library.
. /etc/init.d/functions

# Default values

NAME=gitea
GITEA_HOME=/home/git/${NAME}
GITEA_PATH=/home/git/gitea/${NAME}
GITEA_USER=git
SERVICENAME="Gitea - Git with a cup of tea"
LOCKFILE=/var/lock/subsys/gitea
LOGPATH=${GITEA_HOME}/log
LOGFILE=${LOGPATH}/gitea.log
RETVAL=0

# Read configuration from /etc/sysconfig/gitea to override defaults
[ -r /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME

# Don't do anything if nothing is installed
[ -x ${GITEA_PATH} ] || exit 0
# exit if logpath dir is not created.
[ -x ${LOGPATH} ] || exit 0

DAEMON_OPTS="--check $NAME"

# Set additional options, if any
[ ! -z "$GITEA_USER" ] && DAEMON_OPTS="$DAEMON_OPTS --user=${GITEA_USER}"

start() {
  cd ${GITEA_HOME}
  echo -n "Starting ${SERVICENAME}: "
  daemon $DAEMON_OPTS "${GITEA_PATH} web -c /home/git/gitea/custom/conf/app.ini > ${LOGFILE} 2>&1 &"
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && touch ${LOCKFILE}

  return $RETVAL
}

stop() {
  cd ${GITEA_HOME}
        echo -n "Shutting down ${SERVICENAME}: "
        killproc ${NAME}
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${LOCKFILE}
}

case "$1" in
    start)
        status ${NAME} > /dev/null 2>&1 && exit 0
        start
        ;;
    stop)
        stop
        ;;
    status)
        status ${NAME}
        ;;
    restart)
        stop
        start
        ;;
    reload)
        stop
        start
        ;;
    *)
        echo "Usage: ${NAME} {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL

参考:注意安装位置
https://github.com/go-gitea/gitea/blob/master/contrib/systemd/gitea.service

vi /etc/systemd/system/gitea.service
服务操作相关命令
查看服务列表与状态
systemctl list-units --type=service
启动一个服务:
systemctl start gitea.service
关闭一个服务:
systemctl stop gitea.service
重启一个服务:
systemctl restart gitea.service
显示一个服务的状态:
systemctl status gitea.service
在开机时启用一个服务:systemctl enable gitea.service
在开机时禁用一个服务:systemctl disable gitea.service
查看服务是否开机启动: systemctl is-enabled gitea.service
查看已启动的服务列表: systemctl list-unit-files | grep enabled
查看启动失败的服务列表: systemctl --failed

文本内容如下:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service requirements
###
#
#Requires=mysql.service
#Requires=mariadb.service
#Requires=postgresql.service
#Requires=memcached.service
#Requires=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=<some_port>
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gitea/
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#RuntimeDirectory=gitea
ExecStart=/home/git/gitea/gitea web --config /home/git/gitea/custom/conf/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/home/git/gitea
# If you install Git to directory prefix other than default PATH (which happens
# for example if you install other versions of Git side-to-side with
# distribution version), uncomment below line and add that prefix to PATH
# Don't forget to place git-lfs binary on the PATH below if you want to enable
# Git LFS support
#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###

[Install]
WantedBy=multi-user.target

Nginx安装

步骤略,详见:
CentOS7源码编译安装(在线依赖)

Nginx配置SSL

更改配置文件即可

Gitea配置文件

https://github.com/go-gitea/gitea/tree/master/custom/conf

https://docs.gitea.io/zh-cn/config-cheat-sheet/

以下内容可直接复制(已配置SSL),修改oauth2、Security、LFS_JWT_SECRET、域名

cp /home/git/gitea/custom/conf/app.ini /home/git/gitea/custom/conf/app.ini.bak
systemctl stop gitea.service
systemctl start gitea.service
# 应用名称,改成自己的或者公司名称
APP_NAME = Git
RUN_USER = git
RUN_MODE = prod

[repository]
ROOT = /home/git/gitea-repositories
# 强制所有仓库私有
FORCE_PRIVATE = false
# 全局最大每个用户创建的git工程数目, -1 表示都没限制,0超管不影响
MAX_CREATION_LIMIT = 0
# 禁用http,只能通过ssh协议操作
DISABLE_HTTP_GIT = false

[ui]
# 默认主题
DEFAULT_THEME = gitea
# 主题,覆盖默认
THEMES = gitea,arc-green

[ui.meta]
AUTHOR = Git
DESCRIPTION = Hi PGZ!
KEYWORDS = go,git,self-hosted,pgz

[server]
PROTOCOL = https
DOMAIN           = git.xxoo.com
HTTP_PORT        = 3001
# LOCAL_ROOT_URL   = http://localhost:3001/
ROOT_URL         = https://git.xxoo.com/
# 禁用SSH
DISABLE_SSH      = false
START_SSH_SERVER = false
SSH_DOMAIN       = git.xxoo.com
SSH_PORT         = 22
OFFLINE_MODE     = false
CERT_FILE=/usr/local/nginx/cert/_.xxoo.com_chain.crt
KEY_FILE=/usr/local/nginx/cert/_.xxoo.com_key.key
# ENABLE_GZIP = true
# Landing page, can be "home", "explore", "organizations" or "login"
LANDING_PAGE = login
LFS_START_SERVER = true
LFS_CONTENT_PATH = /home/git/gitea/data/lfs
LFS_JWT_SECRET   = JGZ83tOyD4gcR5q3F6Odc7rajn_b3_mJdr_t2xEcKVQ

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gitea
USER     = gitea
PASSWD   = Www_pusdn_com
SCHEMA   = 
# For MySQL, either "false" (default), "true", or "skip-verify"
SSL_MODE = disable
CHARSET  = utf8mb4
PATH     = /home/git/gitea/data/gitea.db

[admin]
# 禁用普通用户创建组织
DISABLE_REGULAR_ORG_CREATION = true

[security]
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1ODk5OTQwMzh9.5RMyVTbX4M5FycJOwtf8oO4DH87N38fHui-NbItoaVY
INSTALL_LOCK   = true
SECRET_KEY     = fZA30Uegc1GtaHX9cNL6pUTYBej7ahOoL7GPNR6Tl4ZgFkT3xgdkZuNLRJb3icWD
# How long to remember that a user is logged in before requiring relogin (in days)
LOGIN_REMEMBER_DAYS = 7

[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false

[service]
# 登录验证码失效时间,单位分钟。
# ACTIVE_CODE_LIVE_MINUTES = 180
REGISTER_EMAIL_CONFIRM            = false
# 是否发送工单创建等提醒邮件,需要 Mailer 被激活
ENABLE_NOTIFY_MAIL                = false
# 禁用注册,启用后只能用管理员添加用户
DISABLE_REGISTRATION              = true
ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
# 注册时使用图片验证码
ENABLE_CAPTCHA                    = false
# 是否所有页面都必须登录后才可访问
REQUIRE_SIGNIN_VIEW               = true
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost
# 是否显示注册按钮
SHOW_REGISTRATION_BUTTON = false

[mailer]
ENABLED = false

[session]
# Session 内容存储方式,可选 memory, file, redis 或 mysql
PROVIDER = file
# 如果是文件,那么这里填根目录;其他的要填主机地址和端口。
# PROVIDER_CONFIG = data/sessions

[picture]
# 开启则只使用内部头像
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[log]
MODE      = file
LEVEL     = info
ROOT_PATH = /home/git/gitea/log

[api]
# Enables Swagger. True or false; default is true.
ENABLE_SWAGGER = false

[oauth2]
# ENABLE = false
JWT_SECRET = 2n0Rpw8v2KZ43D3V5nXzpnGeIPpQX5bLrhNepBOgMSg

[other]
SHOW_FOOTER_BRANDING = false
SHOW_FOOTER_VERSION = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = true

额外

卸载jdk(如果需要)

rpm -e --nodeps java_cup-0.10k-5.el6.x86_64
rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
rpm -e --nodeps gcc-java-4.4.7-23.el6.x86_64

配置gitea模板

tips:简单配置,0.13后会移除首页footer部分。目前测试自定义模板暂时不管用,可采用直接更改源码,尽量微改动。

/home/git/gitea/templates/base

去掉顶部帮助链接:

mkdir -p /home/git/gitea/custom/templates/base
更改并上传head_navbar.tmpl
然后重启gitea

禁止搜索引擎收录(可选)

默认情况下Gitea开启了搜索引擎收录(截止1.12版本官网doc),不过也无所谓,反正需要登录可看。

/home/git/gitea/custom目录下新建文件robots.txt

vi /home/git/gitea/custom/robots.txt

内容如下:

User-agent: *
Disallow: /home/git/gitea/

Gitea自定义页面备份

提示:不同版本,文件内容不同,请使用相应版本!!!

https://www.yuque.com/docs/share/290c267a-e455-4c3f-a9fc-54dfa45872d9?#

Gitea的优势

个人总结:低配也可运行、核心功能有,够用、社区活跃,更新快
官网不完全横向对比:https://docs.gitea.io/zh-cn/comparison/

软件包备用下载地址

网盘有。链接:https://pan.baidu.com/s/17TlJyl7VzHzdYmWwo_sVhQ
提取码:1ihq

成功截图

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页