如何在Ubuntu 18.04上安装Gitea

时间:2020-03-05 15:25:42  来源:igfitidea点击:

Gitea是用Go编写的自托管开源git服务器。
这是高格斯的叉子。

Gitea包括存储库文件编辑器,项目问题跟踪,用户管理,通知,内置Wiki等。

Gitea是轻量级应用程序,可以安装在低功率系统上。

如果我们正在寻找内存占用量少得多的Gitlab替代产品,而又不需要Gitlab提供的所有功能,那么我们绝对应该尝试Gitea。

本教程说明了如何在Ubuntu 18.04上安装和配置Gitea。
相同的说明适用于Ubuntu 16.04和任何其他基于Debian的发行版。

准备工作

Gitea支持SQLite,PostgreSQL和MySQL/MariaDB作为数据库后端。

我们将使用SQLite作为Gitea的数据库。
如果Ubuntu系统上未安装SQLite,则可以通过以sudo user输入以下命令来安装它:

sudo apt updatesudo apt install sqlite3

安装Gitea

Gitea提供Docker镜像,并且可以从源代码,二进制文件或者作为软件包安装。
我们将从二进制文件安装Gitea。

安装Git

第一步是在服务器上安装Git:

sudo apt updatesudo apt install git

通过显示Git版本来验证安装:

git --version
git version 2.17.1

创建一个Git用户

创建一个新的系统用户,该用户将通过键入以下命令来运行Gitea应用程序:

sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git

该命令将创建一个名为'git'的新用户和组,并将主目录设置为'/home/git'。
输出将如下所示:

Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...

下载Gitea二进制文件

访问Gitea下载页面,并下载适用于体系结构的最新二进制文件。

在撰写本文时,最新版本为1.10.2.
如果有可用的新版本,请在下面的命令中更改“ VERSION”变量。

使用以下“ wget”命令将Gitea二进制文件下载到“/tmp”目录中:

VERSION=1.10.2sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64

'gitea'二进制文件可以在任何位置运行。
我们将遵循约定并将二进制文件移至“/usr/local/bin”目录:

sudo mv /tmp/gitea /usr/local/bin

使二进制文件可执行:

sudo chmod +x /usr/local/bin/gitea

运行以下命令以创建目录并设置所需的权限和所有权:

sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}sudo chown git: /var/lib/gitea/{data,indexers,log}sudo chmod 750 /var/lib/gitea/{data,indexers,log}sudo mkdir /etc/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea

上面的目录结构由官方的Gitea文档推荐。

“/etc/gitea”目录的权限设置为“ 770”,以便安装向导可以创建配置文件。
安装完成后,我们将设置更多限制性权限。

创建一个系统单位文件

Gitea提供了已配置为与我们的设置匹配的Systemd单位文件。

通过键入以下命令将文件下载到“/etc/systemd/system /”目录:

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

完成后,启用并启动Gitea服务:

sudo systemctl daemon-reloadsudo systemctl enable --now gitea

验证服务是否成功启动:

sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2017-01-04 21:27:23 UTC; 3s ago
 Main PID: 14804 (gitea)
    Tasks: 9 (limit: 1152)
   CGroup: /system.slice/gitea.service
           └─14804 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...

配置Gitea

现在已经下载并运行了Gitea,是时候通过Web界面完成安装了。

默认情况下,Gitea会侦听所有网络接口上端口“ 3000”上的连接。

如果服务器上运行着UFW防火墙,则需要打开Gitea端口:

要允许端口“ 3000”上的通信,请输入以下命令:

sudo ufw allow 3000/tcp

打开浏览器,输入“ http://YOUR_DOMAIN_IR_IP:3000”,然后会出现类似以下的屏幕:

数据库设置:

  • 数据库类型:SQLite3
  • 路径:使用绝对路径“ /var/lib/gitea/data/gitea.db”

应用程序常规设置:

  • 站点标题:输入组织名称。
  • 存储库根路径:保留默认的'/home/git/gitea-repositories'。
  • Git LFS根路径:保留默认的'/var/lib/gitea/data/lfs'。
  • 以用户名运行:git
  • SSH服务器域:输入域或者服务器IP地址。
  • SSH端口:22,如果SSH正在侦听其他端口,则将其更改
  • Gitea HTTP侦听端口:3000
  • Gitea基本URL:使用http和域或者服务器IP地址。
  • 日志路径:保留默认的“/var/lib/gitea/log”

我们可以随时通过编辑Gitea配置文件来更改设置。

完成后,点击“安装Gitea”按钮。
安装是即时的。
完成后,我们将被重定向到登录页面。

点击“立即注册”链接。
第一个注册用户将自动添加到Admin组。

使用以下命令将Gitea配置文件的权限更改为只读:

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

Gitea已安装在Ubuntu计算机上。

将Nginx配置为SSL终止代理

此步骤是可选的,但强烈建议这样做。
要将Nginx用作反向代理,我们需要具有一个指向服务器公共IP的域或者子域。

在本教程中,我们将使用'git.example.com'。

首先,请安装Nginx并使用以下教程生成免费的“加密SSL”证书:

  • 如何在Ubuntu 18.04上安装Nginx
  • 在Ubuntu 18.04上使用“Let’s Encrypt ”来保护Nginx

完成后,打开文本编辑器并编辑域服务器阻止文件:

sudo nano /etc/nginx/sites-enabled/git.example.com

/etc/nginx/sites-enabled/git.example.com

server {
    listen 80;
    server_name git.example.com;
    include snippets/letsencrypt.conf;
    return 301 https://git.example.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name git.example.com;
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    client_max_body_size 50m;
    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;
    # log files
    access_log /var/log/nginx/git.example.com.access.log;
    error_log /var/log/nginx/git.example.com.error.log;
    # Handle/requests
    location/{
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

不要忘记用Gitea域替换git.example.com,并为SSL证书文件设置正确的路径。
HTTP流量重定向到HTTPS

重新启动Nginx服务以使更改生效:

sudo systemctl restart nginx

接下来,更改Gitea域和根URL。
为此,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini

/etc/gitea/app.ini

[server]
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

通过键入以下命令重新启动Gitea服务:

sudo systemctl restart gitea

至此,已配置了Gitea代理,我们可以在以下位置访问它:'https://git.example.com'

配置电子邮件通知

为了使Gitea能够发送通知电子邮件,我们可以安装Postfix或者使用某些事务性邮件服务,例如SendGrid,MailChimp,MailGun或者SES。

要启用电子邮件通知,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini

/etc/gitea/app.ini

[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD

确保我们输入了正确的SMTP服务器信息。

重新启动Gitea服务以使更改生效:

sudo systemctl restart gitea

要验证设置并发送测试电子邮件,请登录Gitea,然后转到:站点管理>配置> SMTP邮件程序配置。

Gitea还允许我们通过创建Web Webhook连接到Slack并将通知发送到Slack频道。

升级Gitea

要升级到最新的Gitea版本,只需下载并替换二进制文件即可。

  • 停止Gitea服务:
sudo systemctl stop gitea
  • 下载最新的Gitea版本并将其移至“/usr/local/bin”目录:
VERSION=<THE_LATEST_GITEA_VERSION>wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64sudo mv /tmp/gitea /usr/local/bin
  • 使二进制文件可执行:
sudo chmod +x /usr/local/bin/gitea
  • 重新启动Gitea服务:
sudo systemctl restart gitea