Ricerca nel sito web

Come installare il servizio Gitea Git su Debian 11


Questo tutorial esiste per queste versioni del sistema operativo

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

Su questa pagina

  1. Prerequisiti
  2. Installa e configura il database MariaDB
  3. Installa Gitea
  4. Crea un file di servizio Systemd per Gitea
  5. Configura Nginx per Gitea
  6. Accedi all'interfaccia web di Gitea
  7. Conclusione

Gitea è un server Git gratuito, open source, self-hosted e ben noto scritto nel linguaggio di programmazione Go. È una piattaforma di controllo della versione simile a Github. È robusto, scalabile e offre molte funzionalità tra cui monitoraggio dei problemi e del tempo, ramificazione del repository, blocco dei file e tagging, unione e molti altri. Se stai cercando un servizio Git self-hosted, probabilmente Gitea è l'opzione migliore che puoi utilizzare.

In questo tutorial, ti mostrerò come installare Gitea su Debian 11.

Prerequisiti

  • Un server che esegue Debian 11.
  • Sul server è configurata una password di root.

Installa e configura il database MariaDB

Gitea utilizza MariaDB/MySQL come database back-end. Quindi il server del database deve essere installato nel tuo server. Se non è installato, puoi installarlo eseguendo il seguente comando:

apt-get install mariadb-server -y

Una volta installato MariaDB, dovrai impostare una password MariaDB e proteggere l'installazione. Puoi farlo eseguendo lo script mysql_secure_installation:

mysql_secure_installation

Rispondi a tutte le domande come mostrato di seguito:

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

Quindi, connettiti all'interfaccia MariaDB usando il seguente comando:

mysql -u root -p

Una volta connesso, crea un database e un utente per Gitea con il seguente comando:

MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';

Successivamente, scarica i privilegi ed esci da MariaDB con il seguente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Installa Gitea

Innanzitutto, dovrai creare un utente dedicato per eseguire Gitea. Puoi crearlo con il seguente comando:

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

Dovresti vedere il seguente output:

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' ...

Successivamente, scarica l'ultima versione di Gitea con il seguente comando:

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 -

Successivamente, sposta il file binario Gitea nel percorso di sistema con il seguente comando:

mv gitea-*-linux-amd64 /usr/local/bin/gitea

Quindi, imposta l'autorizzazione eseguibile sul binario Gitea:

chmod +x /usr/local/bin/gitea

Successivamente, verifica la versione di Gitea utilizzando il seguente comando:

gitea --version

Dovresti vedere il seguente output:

Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify

Successivamente, dovrai creare una struttura di directory per Gitea. Puoi crearlo con il seguente comando:

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}

Quindi, imposta l'autorizzazione e la proprietà appropriate con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Crea un file di servizio Systemd per Gitea

Successivamente, dovrai creare un file di servizio systemd per Gitea. Puoi crearlo con il seguente comando:

nano /etc/systemd/system/gitea.service

Aggiungi le seguenti righe:

[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

Salva e chiudi il file, quindi ricarica il demone systemd con il seguente comando:

systemctl daemon-reload

Successivamente, avvia e abilita il servizio Gitea con il seguente comando:

systemctl start gitea
systemctl enable gitea

Per controllare il servizio Gitea, esegui il seguente comando:

systemctl status gitea

Dovresti vedere il seguente output:

? 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>

A questo punto Gitea è avviato ed è in ascolto sulla porta 3000. Puoi verificarlo con il seguente comando:

ss -antpl | grep 3000

Dovresti vedere il seguente output:

LISTEN 0      4096               *:3000             *:*    users:(("gitea",pid=19179,fd=6))

Una volta terminato, puoi procedere al passaggio successivo.

Configura Nginx per Gitea

Successivamente, dovrai installare e configurare Nginx come proxy inverso per Gitea. Innanzitutto, installa Nginx con il seguente comando:

apt-get install nginx -y

Successivamente, crea un file di configurazione dell'host virtuale Nginx con il seguente comando:

nano /etc/nginx/conf.d/gitea.conf

Aggiungi le seguenti righe:

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;
    }
}

Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi:

nginx -t

Dovresti vedere il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Successivamente, riavvia il servizio Nginx con il seguente comando:

systemctl restart nginx

Per verificare lo stato di Nginx, eseguire il seguente comando:

systemctl status nginx

Dovresti vedere il seguente output:

? 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.

Successivamente, dovrai modificare il file app.ini di Gitea e definire le informazioni del tuo dominio:

nano /etc/gitea/app.ini

Modifica le seguenti righe:

DOMAIN           = gitea.example.com
ROOT_URL         = http://gitea.example.com/

Salva e chiudi il file, quindi riavvia il servizio Gitea per applicare le modifiche:

systemctl restart gitea

Una volta terminato, puoi procedere al passaggio successivo.

Accedi all'interfaccia web di Gitea

Ora, apri il tuo browser web e accedi all'interfaccia web di Gitea utilizzando l'URL http://gitea.example.com. Verrai reindirizzato alla seguente pagina:

Fornisci le informazioni del tuo database Gitea, URL, nome utente amministratore, password, porta e fai clic sul pulsante Installa Gitea. Dovresti vedere la dashboard di Gitea nella pagina seguente:

Conclusione

Congratulazioni! hai installato con successo Gitea con Nginx come proxy inverso su Debian 11. Puoi implementare Gitea nel tuo ambiente di sviluppo per tracciare e gestire il tuo progetto.