上传文件至 /
This commit is contained in:
commit
511d306b58
|
@ -0,0 +1,336 @@
|
||||||
|
# 一.安装dockers
|
||||||
|
|
||||||
|
1、若您安装过**docker**,需要先删掉,之后再安装依赖:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
yum remove docker docker-common docker-selinux docker-engine
|
||||||
|
yum install -y yum-utils device-mapper-persistent-data lvm2
|
||||||
|
```
|
||||||
|
|
||||||
|
2、根据版本不同,下载repo文件。您使用的发行版:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
|
||||||
|
```
|
||||||
|
|
||||||
|
软件仓库地址替换为:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sed -i 's+download.docker.com+mirrors.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
|
||||||
|
```
|
||||||
|
|
||||||
|
3、更新索引文件并安装
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```shell
|
||||||
|
yum -y makecache fast
|
||||||
|
yum -y install docker-ce
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 二.搭建Gitea
|
||||||
|
|
||||||
|
### 一.介绍
|
||||||
|
|
||||||
|
**其实开源的仓库私有服务很多,比如一般公司采用的`gitlab`,还有轻量级的`gogs`。而我今天要推荐的是另一款,从gogs的分支来的项目`gitea`。那么针对这三个仓库有什么区别呢?**
|
||||||
|
|
||||||
|
#### Gitlab
|
||||||
|
|
||||||
|
GitLab有自己的官方开源仓库以及提供私有部署的开源并免费的GitLab CE版本。其官方的开源仓库不仅仅是GitHub的一个替代品,它更像是一个完整的DevOps平台。GitLab几乎是软件开发机构必备的基础设施,因为它提供了代码和项目管理工具问题报告、持续交付和监控。Gitlab基于Ruby on Rails构建,功能强大,很多公司都是用的它。gitlab有很强大的功能以及丰富的生态,对于公司仓库来说,它绝对是首选,但是对于个人来说,它对服务器的性能要求也大得多,官方推荐最低配置是4核4G,并且gitlab新版本的界面我个人是一直感觉很别扭,也许等习惯就好了。
|
||||||
|
|
||||||
|
功能强大
|
||||||
|
CI/CD
|
||||||
|
界面复杂
|
||||||
|
性能要求较高
|
||||||
|
|
||||||
|
#### Gogs&Gitea
|
||||||
|
|
||||||
|
Gogs是使用G语言开发的100% 开源并可无条件免费使用的项目。所有的源代码均通过 MIT 授权协议 托管在 GitHub 上.任何 Go 语言 支持的平台都可以运行 Gogs,包括 Windows、Mac、Linux 以及 ARM。一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。有些用户甚至还将 Gogs 运行在 NAS 设备上。
|
||||||
|
|
||||||
|
Gitea的从Gogs Fork而来,Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC。
|
||||||
|
|
||||||
|
gitea既然来源于gogs,那么它们具体有什么相同点和区别呢?
|
||||||
|
|
||||||
|
#### 相同点:
|
||||||
|
|
||||||
|
1.轻量级:Gitea和Gogs都是轻量级的Git服务,安装、配置和使用都非常简单。
|
||||||
|
|
||||||
|
2.易于部署:Gitea和Gogs可以在各种平台上部署,包括Docker、Kubernetes、Linux、Windows和macOS等。
|
||||||
|
|
||||||
|
3.高效性:Gitea和Gogs都性能出色,能够处理大规模的代码库和大量的并发访问。
|
||||||
|
|
||||||
|
4.开源免费:Gitea和Gogs都是开源的,可以免费使用。
|
||||||
|
|
||||||
|
5.功能强大:Gitea和Gogs支持多种协议,如Git、SSH、HTTP等,并具备与Github类似的功能,如Pull Request、问题跟踪、维基等
|
||||||
|
|
||||||
|
#### 不同点:
|
||||||
|
|
||||||
|
1.Gogs的优劣势
|
||||||
|
优势
|
||||||
|
|
||||||
|
1.**简便易用**:Gogs安装、配置和使用都相当方便。
|
||||||
|
|
||||||
|
2.**体积小巧**:Gogs没有太多复杂的功能和高端的特性,体积小巧,运行速度快。
|
||||||
|
|
||||||
|
3.**免费开源**:Gogs是开源免费的Git服务。
|
||||||
|
|
||||||
|
4**.界面简洁**:Gogs的Web界面不错,非常简洁,易于使用。
|
||||||
|
|
||||||
|
劣势
|
||||||
|
|
||||||
|
1.维护困难:Gogs开发维护力量个人或小团队,或许在长期的发展过程中会出现维护困难问题。
|
||||||
|
|
||||||
|
2.社区活力不足:Gogs保持了可持续发展可能性,但相对活跃度比较低。
|
||||||
|
|
||||||
|
2.Gitea的优劣势
|
||||||
|
优势
|
||||||
|
|
||||||
|
1.使用方便:Gitea的安装和配置非常简单,网页化界面也更加友好,代码模块化设计,基于数据处理引擎等新科技,内存和 CPU 利用率都得到极大的提升。
|
||||||
|
|
||||||
|
2.功能齐全:Gitea的功能非常齐全,多人协同开发、权限管理、问题和回答、动态和评论项目、人员管理等,几乎涵盖了所有的必要功能。
|
||||||
|
|
||||||
|
3.安全性好:Gitea已经发现的几个漏洞在较短时间内就得到了彻底解决,并且Gitea拥有一个活跃的社区,能够及时修复漏洞。
|
||||||
|
|
||||||
|
劣势
|
||||||
|
|
||||||
|
1.版本较新:Gitea是较新的一款Git服务,尚未广泛使用。
|
||||||
|
|
||||||
|
2.移植性不足:Gitea移植性不如Gogs,目前只支持x86、ARM和mips CPU架构。
|
||||||
|
|
||||||
|
### 二.搭建Gitea
|
||||||
|
|
||||||
|
本文基于 docker-compose 来搭建Gitea,如果不清楚docker-compose,可以自己了解了解docker的基础知识和docker-compose的基础知识。
|
||||||
|
|
||||||
|
首先我们需要了解,gitea服务除了需要gitea本身的镜像外,还需要一个数据库来存储用户,权限等等关系,如果我们不设置,可以使用默认的SQLite3 来初始化一个。我这边一步到位,使用了pg数据库。
|
||||||
|
|
||||||
|
#### 1.准备
|
||||||
|
|
||||||
|
首先我们需要创建一个gitea仓库数据的映射地址。比如我们创建了一个`/docker/gitea`目录。并且在里面提前创建好`data`和`config`以及`postgres`文件夹。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
[root@tutu~]# mkdir -p docker/gitea/{data,config,postgres}
|
||||||
|
|
||||||
|
[root@tutu ~]# tree docker
|
||||||
|
docker
|
||||||
|
└── gitea
|
||||||
|
├── config
|
||||||
|
├── data
|
||||||
|
└── postgres
|
||||||
|
|
||||||
|
4 directories, 0 files
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.编写脚本
|
||||||
|
|
||||||
|
我们在`/docker/gitea`里面创建一个`docker-compose.yml`文件,开始编写初始化脚本。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
version: "2"
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: gitea/gitea:1.21.4-rootless
|
||||||
|
environment:
|
||||||
|
- GITEA__database__DB_TYPE=postgres #要使用的数据库
|
||||||
|
- GITEA__database__HOST=db:5432 #数据库端口
|
||||||
|
- GITEA__database__NAME=gitea #为gitea分配的仓库名称,如果我们要在以前的仓库里面,自己创建修改,如果数据库镜像也新建,就直接写好这个配置文件即可,会自动创建
|
||||||
|
- GITEA__database__USER=gitea #数据库用户名
|
||||||
|
- GITEA__database__PASSWD=gitea #数据库用户密码
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- /docker/gitea/data:/var/lib/gitea # 将gitea数据与刚才新建的本地文件夹data进行映射
|
||||||
|
- /docker/gitea/config:/etc/gitea # 将gitea配置与刚才新建的本地文件夹data进行映射
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- "3000:3000" # web界面访问端口,左边可以改为自己服务想要的端口,右边不动
|
||||||
|
- "2222:2222" # ssh端口,左边可以改为自己服务想要的端口,右边不动
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db: # 如果我们为gitea新建数据库镜像,需要配置数据库镜像脚本,如果使用原有数据库,请删除db所有配置,并注意填写上面数据库配置
|
||||||
|
image: postgres:14
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=gitea # 用户名
|
||||||
|
- POSTGRES_PASSWORD=gitea # 密码
|
||||||
|
- POSTGRES_DB=gitea # 仓库名称
|
||||||
|
volumes:
|
||||||
|
- /docker/gitea/postgres:/var/lib/postgresql/data # 将数据库数据与刚才新建的本地文件夹postgres进行映射
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**请注意**
|
||||||
|
|
||||||
|
官方建议:**应由在配置文件中指定的UID/GID的用户/组所有。默认情况下,Docker中的Gitea将使用uid:1000 gid:1000。如果需要,您可以使用以下命令设置这些文件夹的所有权:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo chown 1000:1000 /docker/gitea/config/ /docker/gitea/data/
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
如果没有对data和config文件夹设置正确的权限,容器有可能无法启动。
|
||||||
|
|
||||||
|
但是:**如果发现设置了以上命令,导致下一步启动服务无法正常启动,例如gitea-server-1,则不要对/docker/gitea/config/ 和/docker/gitea/data/设置权限。我再macos下设置权限后导致无法启动,默认创建完直接启动反而没问题。灵活应变,反正就是权限一般没正确匹配导致没权限。
|
||||||
|
|
||||||
|
|
||||||
|
#### 3.启动
|
||||||
|
|
||||||
|
执行以下命令在后台启动 Gitea。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
查看 Gitea 是否正确启动
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
查看日志
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose logs
|
||||||
|
```
|
||||||
|
|
||||||
|
停止和终止容器
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.安装
|
||||||
|
|
||||||
|
等我们拉取完镜像,并且通过`docker-compose ps`确保镜像已经正常启动。就可以搭建服务的ip+配置的端口来访问安装了。如果没有正常启动,请查看日志,看看端口是不是冲突了或者哪里配置是不是出了问题。
|
||||||
|
|
||||||
|
<img src="C:\Users\涂祖函\Downloads\9ab548c5bb7e33fe6a74684e610760e4.png" style="zoom:200%;" />
|
||||||
|
|
||||||
|
上面配置里面,一般我们只需要配置`站点名称`、`服务器域名`、`基础URL`。其它具体可以查查官方文档,看看是否自己需要修改。
|
||||||
|
|
||||||
|
- 站点名称:这个没啥说的,git站名称
|
||||||
|
|
||||||
|
- 服务器域名:因为我们本机使用localhost等等没问题,但是我们对内网其它设备或者用户肯定需要使用ip,甚至如果暴漏外网可能使用外网ip或者域名映射进内网。那么这一块就是要填我们要让外部设备访问的ip或者域名。
|
||||||
|
- 基础URL:同理,git仓库让别人使用,肯定有项目克隆等等地址,这个就是展示的克隆等对外展示的路径。
|
||||||
|
|
||||||
|
如果我们需要使用邮件通知,用户信息验证消息发送等等需要配置`可选设置`-`电子邮件设置`,填入自己的邮件服务相关配置即可。
|
||||||
|
|
||||||
|
如果要提前设置管理员,配置`可选设置`-`管理员帐号设置`,否则第一个注册的默认是管理员。
|
||||||
|
|
||||||
|
确认完,等待加载初始化:初始化完成,就可以打开网页了
|
||||||
|
|
||||||
|
### 三.使用
|
||||||
|
|
||||||
|
#### 略:都是中文界面自己看着用
|
||||||
|
|
||||||
|
##### 2.配置文件
|
||||||
|
|
||||||
|
如果我们一些配置无法通过管理中心修改,需要去更改配置文件。改完记得重启容器让其生效即可。
|
||||||
|
|
||||||
|
**目录:docker/gitea/config/app.ini**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
APP_NAME = gentleman
|
||||||
|
RUN_USER = git
|
||||||
|
RUN_MODE = prod
|
||||||
|
WORK_PATH = /var/lib/gitea
|
||||||
|
|
||||||
|
[repository]
|
||||||
|
ROOT = /var/lib/gitea/git/repositories
|
||||||
|
|
||||||
|
[repository.local]
|
||||||
|
LOCAL_COPY_PATH = /tmp/gitea/local-repo
|
||||||
|
|
||||||
|
[repository.upload]
|
||||||
|
TEMP_PATH = /tmp/gitea/uploads
|
||||||
|
|
||||||
|
[server]
|
||||||
|
APP_DATA_PATH = /var/lib/gitea
|
||||||
|
SSH_DOMAIN = 172.20.10.4
|
||||||
|
HTTP_PORT = 3000
|
||||||
|
ROOT_URL = http://172.20.10.4:3000/
|
||||||
|
DISABLE_SSH = false
|
||||||
|
; In rootless gitea container only internal ssh server is supported
|
||||||
|
START_SSH_SERVER = true
|
||||||
|
SSH_PORT = 2222
|
||||||
|
SSH_LISTEN_PORT = 2222
|
||||||
|
BUILTIN_SSH_SERVER_USER = git
|
||||||
|
LFS_START_SERVER = true
|
||||||
|
DOMAIN = 172.20.10.4
|
||||||
|
LFS_JWT_SECRET = VH943M-F7UaIIXUgIz7SzA3Cv_j3bpp2rW3-z8E1JGA
|
||||||
|
OFFLINE_MODE = false
|
||||||
|
|
||||||
|
[database]
|
||||||
|
PATH = /var/lib/gitea/data/gitea.db
|
||||||
|
DB_TYPE = postgres
|
||||||
|
HOST = db:5432
|
||||||
|
NAME = gitea
|
||||||
|
USER = gitea
|
||||||
|
PASSWD = gitea
|
||||||
|
SCHEMA =
|
||||||
|
SSL_MODE = disable
|
||||||
|
LOG_SQL = false
|
||||||
|
|
||||||
|
[session]
|
||||||
|
PROVIDER_CONFIG = /var/lib/gitea/data/sessions
|
||||||
|
PROVIDER = file
|
||||||
|
|
||||||
|
[picture]
|
||||||
|
AVATAR_UPLOAD_PATH = /var/lib/gitea/data/avatars
|
||||||
|
REPOSITORY_AVATAR_UPLOAD_PATH = /var/lib/gitea/data/repo-avatars
|
||||||
|
|
||||||
|
[attachment]
|
||||||
|
PATH = /var/lib/gitea/data/attachments
|
||||||
|
|
||||||
|
[log]
|
||||||
|
ROOT_PATH = /var/lib/gitea/data/log
|
||||||
|
MODE = console
|
||||||
|
LEVEL = info
|
||||||
|
|
||||||
|
[security]
|
||||||
|
INSTALL_LOCK = true
|
||||||
|
SECRET_KEY =
|
||||||
|
REVERSE_PROXY_LIMIT = 1
|
||||||
|
REVERSE_PROXY_TRUSTED_PROXIES = *
|
||||||
|
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3MDU3Mzc4NTl9.OOHybqMKxX0q0564L5TPaAXctHuZDUkPNw6vXXfGL3A
|
||||||
|
PASSWORD_HASH_ALGO = pbkdf2
|
||||||
|
|
||||||
|
[service]
|
||||||
|
DISABLE_REGISTRATION = false
|
||||||
|
REQUIRE_SIGNIN_VIEW = false
|
||||||
|
REGISTER_EMAIL_CONFIRM = false
|
||||||
|
ENABLE_NOTIFY_MAIL = false
|
||||||
|
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
|
||||||
|
ENABLE_CAPTCHA = false
|
||||||
|
DEFAULT_KEEP_EMAIL_PRIVATE = false
|
||||||
|
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
|
||||||
|
DEFAULT_ENABLE_TIMETRACKING = true
|
||||||
|
NO_REPLY_ADDRESS = noreply.localhost
|
||||||
|
|
||||||
|
[lfs]
|
||||||
|
PATH = /var/lib/gitea/git/lfs
|
||||||
|
|
||||||
|
[mailer]
|
||||||
|
ENABLED = false
|
||||||
|
|
||||||
|
[openid]
|
||||||
|
ENABLE_OPENID_SIGNIN = true
|
||||||
|
ENABLE_OPENID_SIGNUP = true
|
||||||
|
|
||||||
|
[cron.update_checker]
|
||||||
|
ENABLED = false
|
||||||
|
|
||||||
|
[repository.pull-request]
|
||||||
|
DEFAULT_MERGE_STYLE = merge
|
||||||
|
|
||||||
|
[repository.signing]
|
||||||
|
DEFAULT_TRUST_MODEL = committer
|
||||||
|
|
||||||
|
[oauth2]
|
||||||
|
JWT_SECRET = 61KySID-ubFsD7qa5aUNH68yOfdtO4rLzvU0xQCLvEo
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue