部署 Gitea 代码托管平台(Ubuntu)
GitHub、Gitee(码云)、GitLab、Gitea区别:
一、数据库准备
1.1、下载数据库
更新软件包:
sudo apt update && sudo apt upgrade -y
安装 MySQL 服务器:
sudo apt install -y mysql-server
启动 MySQL 并设置开机自启:
sudo systemctl start mysql
sudo systemctl enable mysql
1.2、设置 MySQL
登录 MySQL:
mysql -u root -p
设置 root 数据库密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;
1.3、创建数据库
创建 gitea 数据库用户,==% 为主机全ip访问==
CREATE USER 'gitea'@'127.0.0.1' IDENTIFIED BY 'gitea';
FLUSH PRIVILEGES;
创建 giteadb 数据库
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
将 giteadb 数据库授权给 gitea 用户:
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'127.0.0.1';
FLUSH PRIVILEGES;
连接远程数据库,本地数据库 直接省略 -h
:
mysql -u gitea -h 127.0.0.1 -p giteadb
添加远程访问权限,修改 bind-address = 0.0.0.0
、mysqlx-bind-address = 0.0.0.0
后重启:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
二、创建 Git 系统用户
# 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
删除用户目录也删除:
sudo deluser --remove-home git
三、创建工作路径
全部执行:
mkdir -p /var/lib/gitea/{custom,data,log} &&\
chown -R git:git /var/lib/gitea/ &&\
chmod -R 750 /var/lib/gitea/ &&\
mkdir /etc/gitea &&\
chown root:git /etc/gitea &&\
chmod 770 /etc/gitea &&\
touch /etc/gitea/app.ini
临时开放权限
chmod 750 /etc/gitea &&\
chmod 750 /etc/gitea/app.ini &&\
sudo chown git:git /etc/gitea/app.ini
待 Web 设置好了之后再设置回只读
chmod 640 /etc/gitea/app.ini
四、环境变量
编辑:
vim /etc/profile.d/my_cnf.sh
环境变量添加:
export GITEA_WORK_DIR=/var/lib/gitea/
刷新环境变量:
source /etc/profile
验证:
echo $GITEA_WORK_DIR
五、Gitea下载
Intel/AMD 平台:
wget -O gitea https://dl.gitea.com/gitea/1.23.3/gitea-1.23.3-linux-amd64
chmod +x gitea
Apple Silicon 架构:
wget -O gitea http://dl.gitea.com/gitea/1.23.3/gitea-1.23.3-linux-arm64
chmod +x gitea
验证 GPG 签名
略,详细看官方文档:https://docs.gitea.com/zh-cn/installation/install-from-binary
将二进制文件复制到对应位置
cp gitea /usr/local/bin/gitea
五、测试启动项目
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
六、配置 service服务
systemd
创建 .service 文件:
sudo vim /etc/systemd/system/gitea.service
添加,参考 Github-gitea.service:
[Unit]
Description=Gitea(一个带有茶的 Git)
After=network.target
###
# 别忘了添加数据库服务的依赖
###
#
#Wants=mysql.service
#After=mysql.service
#
#Wants=mariadb.service
#After=mariadb.service
#
#Wants=postgresql.service
#After=postgresql.service
#
#Wants=memcached.service
#After=memcached.service
#
#Wants=redis.service
#After=redis.service
#
###
# 如果使用套接字激活主 HTTP/S 服务
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (你也可以为 Gitea 提供一个 http 回退和/或 ssh 套接字)
#
# 一个例子 /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web 套接字
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=<some_port>
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###
[Service]
# 如果你的仓库包含大量文件并且遇到 HTTP 500 错误,可以取消注释下面这一行
# LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
# 如果使用 Unix 套接字:告诉 systemd 创建 /run/gitea 文件夹,其中将包含 gitea.sock 文件
# (手动创建 /run/gitea 不起作用,因为它不会在重启后持续存在)
#RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
# 如果你将 Git 安装到不同于默认路径的目录前缀,请取消注释下面的行并将该路径添加到 PATH
# 如果你想启用 Git LFS 支持,不要忘记将 git-lfs 二进制文件也放在 PATH 中
#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin
# 如果你想将 Gitea 绑定到 1024 以下的端口,请取消注释下面的两行,或者使用套接字激活来传递 Gitea 的端口
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###
# 在某些情况下,使用 CapabilityBoundingSet 和 AmbientCapabilities 选项时,你可能希望
# 将以下值设置为 false,以允许应用权限到 gitea 进程。如果设置为 true,它会沙盒化 gitea 服务,阻止任何进程在主机用户命名空间中以特权身份运行。
###
#PrivateUsers=false
###
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置:
sudo systemctl daemon-reload
添加开机自启动:
sudo systemctl enable gitea
服务命令
systemctl stop gitea # 停止
systemctl start gitea # 启动
systemctl restart gitea # 重启
关闭注册选项
DISABLE_REGISTRATION
: true: 关闭用户注册。
vim /etc/gitea/app.ini
git 上传屏蔽
文件名字
.gitignore
配置
# Logs
# 忽略日志文件
logs
*.log
npm-debug.log* # npm 调试日志文件
yarn-debug.log* # yarn 调试日志文件
yarn-error.log* # yarn 错误日志文件
pnpm-debug.log* # pnpm 调试日志文件
lerna-debug.log* # lerna 调试日志文件
# Node Modules
# 忽略 node_modules 文件夹,依赖可以通过 npm 或 yarn 重新安装
node_modules
# macOS 系统文件
# 忽略 macOS 系统生成的 .DS_Store 文件
.DS_Store
# 构建输出
# 忽略项目的构建输出文件夹
dist # 通常的构建输出目录
dist-ssr # 服务端渲染的构建输出目录
coverage # 测试覆盖率报告目录
*.local # 本地环境相关的临时文件
# Cypress 文件
# 忽略 Cypress 生成的视频和截图文件
/cypress/videos/ # 测试时录制的视频
/cypress/screenshots/ # 测试失败时的截图
# 编辑器相关配置文件
# 忽略常见编辑器和 IDE 的配置文件
.vscode/* # VSCode 配置文件夹
!.vscode/extensions.json # 保留 VSCode 的扩展插件推荐配置
.idea # WebStorm/IntelliJ 的配置文件夹
*.suo # Visual Studio 的解决方案用户选项文件
*.ntvs* # Node.js Tools for Visual Studio 的配置文件
*.njsproj # Node.js 项目文件(Visual Studio)
*.sln # Visual Studio 的解决方案文件
*.sw? # Vim 的交换文件
# TypeScript
# 忽略 TypeScript 构建过程生成的缓存文件
*.tsbuildinfo
FAQ
开放端口(如果有防火墙)
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
升级:
升级到最新版本
您可以通过停止程序,替换 /usr/local/bin/gitea
并重启来更新到新版本。直接替换可执行程序时不要更改或使用新的文件名称,以避免数据出错。更新前记得备份!