目录
git和Gitea简介
git 是一个开源的分布式版本控制系统,用途类使用SVN的版本控制和多人协同,但不同于SVN的是,git在设计之初即是分布式。
基于git版本控制技术,出现了github、gitlab等托管平台,不过这些托管平台是对公网服务。而Gitea 是一个可自己私有部署,自行托管的Git服务程序。他和GitHub, Bitbucket or Gitlab等比较类似。他是从 Gogs 发展而来。
本文通过Gitea在私有服务器环境搭建git的自有托管平台(私有化部署)
服务端部署
-
部署环境概览
Linux服务器 |
IP:20.200.54.51 |
已经安装git 1.8.3.1软件。 (若无则通过yum install git 安装) |
gitea版本 |
gitea-1.16.6-linux-amd64 |
https://dl.gitea.io/gitea/1.16.6/gitea-1.16.6-linux-amd64 |
gitea运行用户 |
操作系统用户:gitea |
为了规范和权限隔离,建立专门用户 |
gitea数据库 |
“postgres://gitea@20.200.54.51/giteadb” |
数据库创建见后文 |
gitea仓存放目录 |
/app/gitea/data/gitea-repositories |
服务端所有仓存放的基目录 |
gitea Web界面 |
内部使用,不启用HTTPS |
准备数据库(PostgreSQL)
Gitea需要使用数据库用于保存用户、权限、工程、评论、通知、任务等信息。
可以选择MySQL或PostgreSQL 其一即可。本节以PostgreSQL 10.5为例。
1、安装PostgreSQL服务端软件(过程略)
2、通过psql客户端登录,创建gitea专用的数据库连接用户
CREATE ROLE gitea WITH LOGIN PASSWORD ‘gitea’; |
3、通过psql客户端登录,创建database和schema
CREATE DATABASE giteadb WITH OWNER gitea ENCODING UTF8 LC_COLLATE ‘zh_CN.UTF-8’ LC_CTYPE ‘zh_CN.UTF-8’; \c giteadb gitea; — 以gitea用户登录至giteadb数据库 CREATE SCHEMA giteadb; alter role gitea set search_path=giteadb,public; — 设置search_path |
4、根据实际情况修改pg_hba.conf,允许客户端访问PostgreSQL数据库
5、创建对象和数据初始化(无需执行,由gitea软件连上后自动完成初始化动作)。
准备数据库(MySQL)
Gitea需要使用数据库用于保存用户、权限、工程、评论、通知、任务等信息。
可以选择MySQL或PostgreSQL 其一即可。本节以MySQL 8.0为例。
1、安装MySQL软件(过程略)
2、通过mysql客户端登录,创建gitea专用的数据库连接用户
CREATE USER ‘gitea’@’%’ IDENTIFIED BY ‘gitea’; |
3、通过mysql客户端登录,创建database(既schema)
CREATE DATABASE giteadb CHARACTER SET ‘utf8mb4’ COLLATE ‘utf8mb4_unicode_ci’; |
4、赋予权限
GRANT ALL PRIVILEGES ON giteadb.* TO ‘gitea’@’%’; FLUSH PRIVILEGES; |
- 创建对象和数据初始化(无需执行,由gitea软件连上后自动完成初始化动作)。
创建操作系统用户
在操作系统使用root用户执行以下命令,创建gitea运行专用用户如下
adduser –home /app/gitea gitea |
下载并解压
使用gitea用户登录,下载并运行
#若能访问公网,则可以直接下载 wget https://dl.gitea.io/gitea/1.16.6/gitea-1.16.6-linux-amd64 #解压(只有一个单文件) xz -d gitea-1.16.6-linux-amd64.xz chmod +x gitea-1.16.6-linux-amd64 |
修改初始配置
通常有两种方式:
- 提前准备好ini配置文件,可在启动时通过-c参数指定ini配置文件
- 由gitea自动生成配置文件。(下文介绍此方式)
- 使用gitea用户登录,首次运行。
./gitea-1.16.6-linux-amd64 |
首次运行时,gitea会自动生产配置文件custom/conf/app.ini
- 通过浏览器首次访问:http://20.200.54.51:3000 因刚安装干净的,会自动出现初始配置界面如下。
通过在以上Web初始界面编辑的配置内容后,会自动完成对数据库对象初始化工作;自动写入到custom/conf/app.ini配置文件中(用户创建在数据库表中)。得到的配置文件custom/conf/app.ini内容如下:
APP_NAME = 自有Gitea托管平台 RUN_USER = gitea RUN_MODE = prod [security] INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2NDE3ODA2MDl9.xxBOCQegIwfFN_b1fJc4K9kR_HyolPqNo50rbEm9Wik INSTALL_LOCK = true SECRET_KEY = VtCdLtEnpt101aMZ1B24NdGq8KpijaG9pVfVCfugyYNcWuqSVjU3eRR0GJ3QlDWe PASSWORD_HASH_ALGO = pbkdf2 [database] DB_TYPE = postgres HOST = 20.200.54.51:5432 NAME = giteadb USER = gitea PASSWD = gitea SCHEMA = giteadb SSL_MODE = disable CHARSET = utf8 PATH = /app/gitea/data/gitea.db LOG_SQL = false [repository] ROOT = /app/gitea/data/gitea-repositories [server] SSH_DOMAIN = 20.200.54.51 DOMAIN = 20.200.54.51 HTTP_PORT = 3000 ROOT_URL = http://20.200.54.51:3000/ DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true LFS_CONTENT_PATH = /app/gitea/data/lfs LFS_JWT_SECRET = u_pQCSJ763rPl3L3fvnXFhoddcEGIPNyDCmcNZTk7B4 OFFLINE_MODE = false [mailer] ENABLED = false [service] REGISTER_EMAIL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = true 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 = false [session] PROVIDER = file [log] MODE = console LEVEL = info ROOT_PATH = /app/gitea/log ROUTER = console |