文章目录
- 页面展示
- 使用二进制文件安装git服务
- 下载
- 选择架构
- 使用wget下载安装
- 验证 GPG 签名
- 服务器设置
- 准备环境
- 创建systemctl文件
- 备份与恢复
- 备份命令 (dump)
- 恢复命令 (restore)
页面展示
使用二进制文件安装git服务
所有打包的二进制程序均包含 SQLite,MySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可执行程序中
下载
你可以从 下载页面 选择对应平台的二进制文件。
选择架构
-
对于 Linux,linux-amd64 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 arm64 (Raspberry PI 4),386 (32-bit),arm-5 以及 arm-6。
-
对于 Windows,windows-4.0-amd64 适用于 64-bit 的 Intel/AMD 平台,386 适用于 32-bit 的 Intel/AMD 平台。(提示:gogit-windows 版本内建了 gogit 可能缓解在旧的 Windows 平台上 Go 程序调用 git 子程序时面临的 性能问题)
-
对于 macOS,darwin-arm64 适用于 Apple Silicon 架构,darwin-amd64 适用于 Intel 架构.
-
对于 FreeBSD,freebsd12-amd64 适用于 64-bit 的 Intel/AMD 平台。
使用wget下载安装
使用以下命令下载适用于 64-bit Linux 平台的二进制文件。
wget -O gitea https://dl.gitea.com/gitea/1.23.3/gitea-1.23.3-linux-amd64
chmod +x gitea
验证 GPG 签名
Gitea 对打包的二进制文件使用 GPG密钥 签名以防止篡改。 请根据对应文件名 .asc 中包含的校验码检验文件的一致性。
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.23.3-linux-amd64.asc gitea-1.23.3-linux-amd64
校验正确时的信息为 Good signature from "Teabot <teabot@gitea.io>"
。 校验错误时的信息为 This key is not certified with a trusted signature!
。
服务器设置
准备环境
检查是否安装 Git。要求 Git 版本 >= 2.0。
git --version
创建用户
# On Ubuntu/Debian:
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
# On Fedora/RHEL/CentOS:
groupadd --system git
adduser \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--gid git \
--home-dir /home/git \
--create-home \
git
创建工作路径
mkdir /opt/gitea
chown git:git /opt/gitea
复制二进制文件到全局位置
cp gitea /usr/local/bin/gitea
创建systemctl文件
Centos:vim /usr/lib/systemd/system/gitea.service
Ubuntu:vim /etc/systemd/system/gitea.service
[Unit]
Description=gitea
Description=https://gitea.com
[Service]
Environment=GITEA_WORK_DIR=/opt/gitea/
Restart=on-failure
ExecStart=/usr/local/bin/gitea web -c /opt/gitea/app.ini
User=git
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
启动服务
systemctl start gitea.service
systemctl enable gitea.service
打开服务器IP地址192.168.2.36:3000
这里为了简单使用了SQLite
全部修改前面的地址/opt/gitea
完整vim /etc/gitea/app.ini
配置文件
APP_NAME = Git服务
RUN_USER = git
WORK_PATH = /opt/gitea/
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD =
SCHEMA =
SSL_MODE = disable
PATH = /opt/gitea/data/gitea.db
LOG_SQL = false
[repository]
ROOT = /opt/gitea/data/gitea-repositories
[server]
SSH_DOMAIN = https://git.eace.com
DOMAIN = https://git.eace.com
HTTP_PORT = 3000
ROOT_URL = https://git.eace.com
APP_DATA_PATH = /opt/gitea/data
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = oh_5vB_iYiccBthoLtNSazdFkCTt9DjmSb0EU5v-0
OFFLINE_MODE = true
[lfs]
PATH = /opt/gitea/data/lfs
[mailer]
ENABLED = true
SMTP_ADDR = smtp.exmail.qq.com
SMTP_PORT = 465
FROM = 123@qq.com
USER = 123@qq.com
PASSWD = JVomgYJk8J5kQb
[service]
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = false
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[cron.update_checker]
ENABLED = false
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /opt/gitea/log
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiE3MzkxNzgxNjJ9.ZUmhJLaG5PP7GlqQcQwO7F3MwSDr38k0_sZ4d_YF4dM
PASSWORD_HASH_ALGO = pbkdf2
[oauth2]
JWT_SECRET = fZ5NpBsA1wTPAQxNawqr1_hR5fDOWioyaDfa6Hs
备份与恢复
Gitea 已经实现了 dump 命令可以用来备份所有需要的文件到一个zip压缩文件。该压缩文件可以被用来进行数据恢复。
为了确保 Gitea 实例的一致性,在备份期间必须关闭它。
备份命令 (dump)
先转到git用户的权限: su git
. 再Gitea目录运行 ./gitea dump
。一般会显示类似如下的输出:
2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:09 Dumping local repositories.../home/git/gitea-repositories
2016/12/27 22:32:22 Dumping database...
2016/12/27 22:32:22 Packing dump files...
2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip
备份命令
su git
gitea dump --config /opt/gitea/app.ini
最后生成的 gitea-dump-1482906742.zip
文件将会包含如下内容:
app.ini
- 如果原先存储在默认的 custom/ 目录之外,则是配置文件的可选副本custom/
- 所有保存在 custom/ 目录下的配置和自定义的文件。data/
- 数据目录(APP_DATA_PATH),如果使用文件会话,则不包括会话。该目录包括 attachments、avatars、lfs、indexers、如果使用 SQLite 则包括 SQLite 文件。repos/
- 仓库目录的完整副本。gitea-db.sql
- 数据库dump出来的 SQL。log/
- Logs文件,如果用作迁移不是必须的。
中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 --tempdir 参数,或者用 TMPDIR 环境变量。
恢复命令 (restore)
当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。
例如:
unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
mv app.ini /opt/gitea/app.ini
mv data/* /opt/gitea/data/
mv log/* /opt/gitea/log/
mv repos/* /opt/gitea/data/gitea-repositories/
chown -R git:git /opt/gitea/app.ini /opt/gitea
# mysql
mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE <gitea-db.sql
# sqlite3
sqlite3 $DATABASE_PATH <gitea-db.sql
# postgres
psql -U $USER -d $DATABASE < gitea-db.sql
systemctl restart gitea