Gitea安装与配置

本文介绍如何在Ubutnu 22.04 LTS服务器中安装gitea - github

就使用感觉来说,gitea比gitblit和gitlab的优点:

  • 轻量,只有一个可执行文件,没有什么java依赖
  • 配置容易
  • 更新维护快

数据库

先按照CentOS7.6安装配置MySQL8.0并设置远程连接安装与配置MySQL/MariaDB。

1
2
3
4
5
6
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea'; #创建用户
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';#创建数据库
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';#授权
FLUSH PRIVILEGES;#刷新权限
exit #退出

测试连接

1
mysql -u gitea -h 203.0.113.3 -p giteadb

用户

给系统添加一个用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
➜  bin sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
info: Selecting UID from range 100 to 999 ...

info: Selecting GID from range 100 to 999 ...
info: Adding system user `git' (UID 122) ...
info: Adding new group `git' (GID 126) ...
info: Adding new user `git' (UID 122) with group `git' ...
info: Creating home directory `/home/git' ...

工作路径

1
2
3
4
5
6
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

配置完成后可以将权限修改。

1
2
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini

主程序

dl.gitea.com下载编译好的二进制文件,并上传到服务器目录中,我的是/usr/local/bin/

服务器开放3000端口,测试运行

1
/usr/local/bin/gitea web

系统服务

添加系统服务,以便通过systemctl管理gitea和开机启动

添加文件/usr/lib/systemd/system/gitea.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service dependencies
###
#
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
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=<some_port>
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
# LimitNOFILE=524288:524288
RestartSec=2s
Type=notify
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#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
WatchdogSec=30s
# If you install Git to directory prefix other than default PATH (which happens
# for example if you install other versions of Git side-to-side with
# distribution version), uncomment below line and add that prefix to PATH
# Don't forget to place git-lfs binary on the PATH below if you want to enable
# Git LFS support
#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###
# In some cases, when using CapabilityBoundingSet and AmbientCapabilities option, you may want to
# set the following value to false to allow capabilities to be applied on gitea process. The following
# value if set to true sandboxes gitea service and prevent any processes from running with privileges
# in the host user namespace.
###
#PrivateUsers=false
###

[Install]
WantedBy=multi-user.target

我的环境中app.ini并不存在,但是不影响使用。

1
2
sudo systemctl enable gitea #开机启动
sudo systemctl start gitea #启动服务

nginx配置

在nginx配置里面添加,以便使用域名访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
server{
# SSL configuration
#
listen 443 ssl;
listen [::]:443 ssl;

server_name git.jackeylea.com;

# 修改这里,SSL 证书文件路径,由证书签发机构提供
ssl_certificate /etc/letsencrypt/live/jackeylea.com/fullchain.pem;
# 修改这里,SSL 密钥文件路径,由证书签发机构提供
ssl_certificate_key /etc/letsencrypt/live/jackeylea.com/privkey.pem;
# 修改这里,CA 根证书文件路径,由证书签发机构提供
# ssl_trusted_certificate cert/chain.pem;

#日志部分
access_log off;
error_log off;

location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

proxy_pass_header Authorization;
proxy_pass http://localhost:3000$request_uri;
}
}

Gitea安装与配置
https://blog.jackeylea.com/linux/how-to-setup-gitea-under-tencent-cloud-server/
作者
JackeyLea
发布于
2023年9月5日
许可协议