首页 > 系统相关 >玩转 Gitea | 在 Linux 上安装预编译的 Gitea 程序,配置 systemd 管理服务

玩转 Gitea | 在 Linux 上安装预编译的 Gitea 程序,配置 systemd 管理服务

时间:2022-11-03 17:36:22浏览次数:67  
标签:systemd Gitea service -- gitea etc git Linux

这是一篇介绍手动安装 Gitea 服务器的用户指南。与之前的容器安装方式相比,对系统资源的要求更低,因此也可以在低功耗的嵌入式 Linux 设备上配置安装。您可以使用 systemd 作为服务管理工具、自由地配置基本的系统工具链。同时,您也应该小心谨慎地配置每一项系统权限。

Gitea 官网提供的所有构建版本均包括 SQLite, MySQL 和 PostgreSQL 的支持。所有静态网站资源均已嵌入到一个可执行程序中,这一点和老版本有所不同。

选择架构

对于 Linux 系统,您可以选择适用于 64 位 Intel/AMD 平台的 linux-amd64 或是 32 位的 linux-386。这里也有其他架构,包括 Arm64 平台的 linux-arm64(例如 Raspberry PI 4)以及 32 位的 linux-arm-5linux-arm-6

下载

确定好要下载的版本后,您可以从 下载页面 找到与您的平台对应的可执行程序。

https://dl.gitea.io/gitea/

# 使用 wget 下载
$ wget https://dl.gitea.io/gitea/1.17.3/gitea-1.17.3-linux-amd64

# 使用 curl 下载
$ curl -O https://dl.gitea.io/gitea/1.17.3/gitea-1.17.3-linux-amd64

验证 GPG 签名

Gitea 使用了 PGP 密钥对所有二进制文件进行签名,以确保文件没有被篡改。验证文件之前确保系统上已经安装了 gnupg 工具链,然后导入 Gitea 的 PGP 公钥,并下载对应的签名文件 .asc 。使用 GnuPG 命令行工具执行如下命令:

$ gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
$ gpg --verify gitea-1.17.3-linux-amd64.asc gitea-1.17.3-linux-amd64

正确校验签名时会显示:Good signature from "Teabot <[email protected]>" [ultimate]

gpg: Signature made Sat 15 Oct 2022 10:04:22 PM CST
gpg:                using RSA key CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: Good signature from "Teabot <[email protected]>" [ultimate]

添加可执行权限

$ cp gitea-*-linux-amd64 /usr/local/bin/gitea
$ chmod +x /usr/local/bin/gitea

验证

$ gitea --version
Gitea version 1.17.3 built with GNU Make 4.1, go1.18.7 : bindata, sqlite, sqlite_unlock_notify

准备系统环境

Git >= 2.0, OpenSSH, GnuPG

Gitea 依赖 git 命令行工具,请使用 git --version 检查服务器上是否安装了 Git >= 2.0。OpenSSH 是可以选的服务,因为您还可以使用 Gitea 内置的 Go SSH 服务代替 OpenSSH。GnuPG 是可选装的 PGP 加密套件,在前面的验证 GPG 签名步骤中可以确认安装状态。

安装依赖

# Debian/Ubuntu
$ apt install git openssh-server gnupg
# RHEL/Fedora/CentOS
$ yum install git openssh-server gnupg

创建一个用户来运行 Gitea

出于安全性建议,Gitea 不支持以 root 账号运行程序。如果以 root 运行,会报告错误并停止程序。

创建系统用户与用户组 git。设置家目录并禁用密码登录。

# Debian/Ubuntu
$ adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git
# RHEL/Fedora/CentOS
$ adduser \
   --system \
   --shell /bin/bash \
   --user-group \
   --home-dir /home/git \
   git

创建 Gitea 所需的目录结构

  • /var/lib/gitea 程序工作目录
  • /etc/gitea 存放 app.ini 配置文件
$ 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

注意: /etc/gitea 临时设置了用户的写入权限,以便 Web 安装程序可以写入配置文件。安装完毕后,建议将权限设置为只读。

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

配置 systemd 管理 Gitea 服务

您可以使用 systemd 将 Gitea 设置作为服务运行。Debian/Ubuntu/RHEL/Fedora/CentOS 均使用 systemd,因此您可以参照以下的步骤进行配置。

获取模板

下载 gitea.service 模板,并复制到 /etc/systemd/system/gitea.service

curl -o /etc/systemd/system/gitea.service https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service

配置服务

编辑 gitea.service,根据您的需要,设置用户和用户组,服务依赖项目。

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# 这部分是数据库服务依赖,Gitea 服务的启动顺序取决于数据库是否完全启动
# 如要设置启动顺序位于 Postgresql 之后,请解除对呀部分的注释
###
#
#Wants=mysql.service
#After=mysql.service
#
#Wants=postgresql.service
#After=postgresql.service

[Service]
# 如果在服务处理大量文件时出现 HTTP 500 错误,可以通过设置 LimitNOFILE 取消这一限制
# LimitNOFILE=524288:524288
# 服务重启间隔时间
RestartSec=2s
Type=simple
# 用户组 git:git
User=git
Group=git
# Gitea 的工作目录
WorkingDirectory=/var/lib/gitea/
# 启动程序时执行的命令
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
# 服务停止时,是否重启
Restart=always
# 传递一些环境变量,包括用户组、家目录、工作目录
Environment=USER=git HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

启动服务

安装 gitea.service 服务,并立即启动。

$ systemctl enable --now gitea

检查 gitea.service 服务:

$ systemctl status gitea.service
● gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-11-02 16:59:55 CST; 25s ago
   Main PID: 899 (gitea)
      Tasks: 9 (limit: 4658)
     Memory: 142.9M
        CPU: 1.310s
     CGroup: /system.slice/gitea.service
             └─899 /usr/local/bin/gitea web --config /etc/gitea/app.ini

当看到上述日志的时候可以认为实例已经启动了。下一步,使用 ip a 查找您服务器的IP地址,在浏览器中输入 http://<IP>:3000/ 即可登陆 Gitea 实例进行初始化设置。

出现错误时如何查看日志?

使用 journalctl 可以检查 systemd 托管服务的程序日志。

$ journalctl -u gitea.service

配置 SSH

如果不使用 SSH,就可以跳过本节。

使用 Gitea 内置的 Go SSH 服务器

内置的 Go SSH 服务器启用方法:

  1. 打开配置文件 /etc/gitea/app.ini,找到 [server] 栏目,添加 START_SSH_SERVER = true
  2. 重启 Gitea 服务加载配置

使用 OpenSSH

默认的 OpenSSH 安装可能会允许密码登录、root 登录。根据 Gitea 的 OpenSSH 配置模板,您还可以在自己的 OpenSSH 服务中可选地引入以下配置:

# SSH 服务端口和协议版本
Port 22
Protocol 2

# OpenSSH 服务器监听的IP地址,如果不需要IPv6,请注释掉 ListenAddress ::
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

# 默认支持的主机密钥
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

AuthorizedKeysFile .ssh/authorized_keys
AuthorizedPrincipalsFile .ssh/authorized_principals
TrustedUserCAKeys /data/git/.ssh/gitea-trusted-user-ca-keys.pem
CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa

UseDNS no
AllowAgentForwarding no
AllowTcpForwarding no
PrintMotd no

PermitUserEnvironment yes
# 禁止 root 登录
PermitRootLogin no
ChallengeResponseAuthentication no
# 禁止密码和空密码登录。设置后仅使用 SSH 密钥登录
PasswordAuthentication no
PermitEmptyPasswords no

# 设置允许登录的账号白名单,添加 git 和你自己正在使用的账号
# 注意:这是一个相当危险的操作,如果你使用SSH远程连接服务器
# 填写错误会阻止你登录服务器。
#AllowUsers git

Banner none
#Subsystem sftp /usr/lib/ssh/sftp-server

# 仅允许环境变量 GIT_PROTOCOL
AcceptEnv GIT_PROTOCOL

寻求帮助?

如果您在使用或者开发过程中遇到问题,请到以下渠道咨询:

  • GitHub Issue 提问(因为项目维护人员来自世界各地,为保证沟通顺畅,请使用英文提问)
  • 中文问题到 Gitea 论坛 提问
  • 访问 Discord Gitea 聊天室(英文)
  • 加入技术群 328432459 获得进一步的支持

标签:systemd,Gitea,service,--,gitea,etc,git,Linux
From: https://www.cnblogs.com/Gitea/p/install-gitea-service.html

相关文章

  • 《linux内核精髓》-记录-资源管理
    《linux内核精髓》-记录-资源管理资源管理资源管理本节主要内容:通过cgroup和namespace实现容器功能容器cgroup:cgroup是将任意进程进行分组化管理的linux内核功能。c......
  • linux java 初始环境配置
    linux初始环境配置 1.设置IP查看虚拟机ip地址:ipaddr 修改ip地址Vi/etc/sysconfig/network~scrips/ifcfg-ens33(不一定是33动态的)BOOTPROTO=static在......
  • Linux终端颜色个性化设置技巧
    https://www.linuxprobe.com/ubuntu-linux-terminal.htmlhttps://blog.csdn.net/lei_qi/article/details/121694489......
  • 《网络编程应用 —— Linux获取网卡ip》
    1.获取某个网卡的ip地址#include<netinet/in.h>#include<net/if.h>#include<sys/ioctl.h>#include<arpa/inet.h>#include<string.h>#defineETH_NAME"wlan0......
  • linux 常用命令
    1、打包、压缩、解压缩命令:tar1.1、打包yy文件不压缩:tar-cvfyy.taryy   c--打包、v--显示过程、f--文件名1.2、打包yy文件,并用gzip压缩:tar-czvfyy.tar.gzyy......
  • linux pm2启动node实例
     打包1.使用`npmrunbuild`命令对项目进行打包2.将步骤1中生成的两个文件+两个文件夹,压缩```.nuxtstaticnuxt.config.jspackage.json```3.上传到服务器指定好......
  • Linux命令行 (持续更行)
    1#文件操作2mkdirname#新建文件夹3rm-rfname#删除文件夹4cp-rname/.name_2/#复制文件夹下文件56#conda操作7condaactivateenv_name#......
  • Redhat/Oracle/Rocky Linux 部署vnc server
           Linux大部分是通过SSH远程命令行界面进行管理,有时候需要通过远程桌面环境部署、运行一些图形化应用程序,可以通过VNC方式进行。这里以RockyLinux8 部署......
  • RockyLinux9 源码安装LNMP
    本文参考来自https://www.ziruchu.com/art/401在基础上修改了部分路径和版本,感谢原作者的分享。准备工作安装软件dnfinstall-ywgetvimlrzsz关闭防火墙#关闭防......
  • linux建立宽带连接
    首先安装RP-PPPOE然后进行ADSL的配置,这里以3.5版的rp-pppoe为例>>>EnteryourPPPoEusername:——此处输入拨号帐号的用户名>>>EntertheEthernetinterfaceconnecte......