Gitea je bezplatný, open-source, samostatně hostovaný a dobře známý Git server napsaný v programovacím jazyce Go. Je to platforma pro správu verzí podobná Github. Je robustní, škálovatelný a nabízí mnoho funkcí včetně sledování problémů a času, větvení úložiště, zamykání souborů a označování, slučování a mnoho dalších. Pokud hledáte službu Git s vlastním hostitelem, pak je pravděpodobně Gitea tou nejlepší možností, kterou můžete použít.
V tomto tutoriálu vám ukážu, jak nainstalovat Gitea na Debian 11.
Předpoklady
- Server se systémem Debian 11.
- Na serveru je nakonfigurováno heslo uživatele root.
Instalace a konfigurace databáze MariaDB
Gitea používá MariaDB/MySQL jako backend databáze. Databázový server tedy musí být nainstalován na vašem serveru. Pokud není nainstalován, můžete jej nainstalovat spuštěním následujícího příkazu:
apt-get install mariadb-server -y
Jakmile je MariaDB nainstalována, budete muset nastavit heslo MariaDB a zabezpečit instalaci. Můžete to udělat spuštěním skriptu mysql_secure_installation:
mysql_secure_installation
Odpovězte na všechny otázky, jak je uvedeno níže:
Enter current password for root (enter for none): OK, successfully used password, moving on... Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Dále se připojte k rozhraní MariaDB pomocí následujícího příkazu:
mysql -u root -p
Jakmile se připojíte, vytvořte databázi a uživatele pro Gitea pomocí následujícího příkazu:
MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';
Dále vyprázdněte oprávnění a ukončete MariaDB pomocí následujícího příkazu:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
Instalovat Gitea
Nejprve budete muset vytvořit vyhrazeného uživatele pro spuštění Gitea. Můžete jej vytvořit pomocí následujícího příkazu:
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git
Měli byste vidět následující výstup:
Adding system user `git' (UID 109) ... Adding new group `git' (GID 115) ... Adding new user `git' (UID 109) with group `git' ... Creating home directory `/opt/git' ...
Dále si stáhněte nejnovější verzi Gitea pomocí následujícího příkazu:
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -
Dále přesuňte binární soubor Gitea do systémové cesty pomocí následujícího příkazu:
mv gitea-*-linux-amd64 /usr/local/bin/gitea
Dále nastavte oprávnění ke spustitelnosti pro binární soubor Gitea:
chmod +x /usr/local/bin/gitea
Dále ověřte verzi Gitea pomocí následujícího příkazu:
gitea --version
Měli byste vidět následující výstup:
Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify
Dále budete muset vytvořit adresářovou strukturu pro Gitea. Můžete jej vytvořit pomocí následujícího příkazu:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
Dále nastavte správná oprávnění a vlastnictví pomocí následujícího příkazu:
chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Vytvoření souboru služby Systemd pro Gitea
Dále budete muset vytvořit soubor služby systemd pro Gitea. Můžete jej vytvořit pomocí následujícího příkazu:
nano /etc/systemd/system/gitea.service
Přidejte následující řádky:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target After=mysql.service [Service] LimitMEMLOCK=infinity LimitNOFILE=65535 RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/opt/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Uložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále spusťte a povolte službu Gitea pomocí následujícího příkazu:
systemctl start gitea
systemctl enable gitea
Chcete-li zkontrolovat službu Gitea, spusťte následující příkaz:
systemctl status gitea
Měli byste vidět následující výstup:
? gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-02 12:59:27 UTC; 9s ago Main PID: 19179 (gitea) Tasks: 8 (limit: 4679) Memory: 128.3M CPU: 1.415s CGroup: /system.slice/gitea.service ??19179 /usr/local/bin/gitea web -c /etc/gitea/app.ini Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19179 Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/setting/setting.go:569:NewContext() [W] Custom config '/etc/gitea/app.ini' not> Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:25:PreloadSettings() [I] Preparing to run install page Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:28:PreloadSettings() [I] SQLite3 Supported Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 cmd/web.go:196:listen() [I] Listen: http://0.0.0.0:3000 Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 ...s/graceful/server.go:62:NewServer() [I] Starting new Web server: tcp:0.0.0.0:300>
V tomto okamžiku je Gitea spuštěna a naslouchá na portu 3000. Můžete to zkontrolovat pomocí následujícího příkazu:
ss -antpl | grep 3000
Měli byste vidět následující výstup:
LISTEN 0 4096 *:3000 *:* users:(("gitea",pid=19179,fd=6))
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Konfigurovat Nginx pro Gitea
Dále budete muset nainstalovat a nakonfigurovat Nginx jako reverzní proxy pro Gitea. Nejprve nainstalujte Nginx pomocí následujícího příkazu:
apt-get install nginx -y
Dále vytvořte konfigurační soubor virtuálního hostitele Nginx pomocí následujícího příkazu:
nano /etc/nginx/conf.d/gitea.conf
Přidejte následující řádky:
server { listen 80; server_name gitea.example.com; access_log /var/log/nginx/gitea_access.log; error_log /var/log/nginx/gitea_error.log; location / { proxy_pass http://localhost:3000; } }
Uložte a zavřete soubor a poté ověřte, zda Nginx neobsahuje nějakou chybu syntaxe:
nginx -t
Měli byste vidět následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Dále restartujte službu Nginx pomocí následujícího příkazu:
systemctl restart nginx
Chcete-li zkontrolovat stav Nginx, spusťte následující příkaz:
systemctl status nginx
Měli byste vidět následující výstup:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-02 13:00:33 UTC; 4s ago Docs: man:nginx(8) Process: 19209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 19211 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 19212 (nginx) Tasks: 3 (limit: 4679) Memory: 3.2M CPU: 50ms CGroup: /system.slice/nginx.service ??19212 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??19213 nginx: worker process ??19214 nginx: worker process Oct 02 13:00:33 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 02 13:00:33 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Dále budete muset upravit soubor Gitea app.ini a definovat informace o vaší doméně:
nano /etc/gitea/app.ini
Změňte následující řádky:
DOMAIN = gitea.example.com ROOT_URL = http://gitea.example.com/
Uložte a zavřete soubor a poté restartujte službu Gitea, abyste použili změny:
systemctl restart gitea
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Přístup k webovému rozhraní Gitea
Nyní otevřete webový prohlížeč a přejděte do webového rozhraní Gitea pomocí adresy URL http://gitea.example.com . Budete přesměrováni na následující stránku:
Zadejte informace o vaší databázi Gitea, URL, uživatelské jméno správce, heslo, port a klikněte na Instalovat Gitea knoflík. Na následující stránce byste měli vidět řídicí panel Gitea:
Závěr
Gratulujeme! úspěšně jste nainstalovali Gitea s Nginx jako reverzní proxy na Debian 11. Gitea můžete implementovat do svého vývojového prostředí, abyste mohli sledovat a spravovat svůj projekt.