部署 Gitea 代码托管平台(Ubuntu)

GitHubGitee(码云)GitLabGitea区别:

一、数据库准备

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.0mysqlx-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 并重启来更新到新版本。直接替换可执行程序时不要更改或使用新的文件名称,以避免数据出错。更新前记得备份!

最后修改:2025 年 02 月 19 日
咱们谁跟谁,用不着~