Gitea è un noto server Git gratuito, open source, self-hosted e scritto nel linguaggio di programmazione Go. È una piattaforma di controllo della versione simile a Github. È robusto, scalabile e offre molte funzionalità tra cui problemi e rilevamento 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 un MariaDB/MySQL come backend del database. Quindi il server di 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 di 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';
Quindi, svuota 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' ...
Quindi, 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 -
Quindi, sposta il 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 verificare 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
Quindi, 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
Quindi, riavvia il servizio Nginx con il seguente comando:
systemctl restart nginx
Per controllare lo stato di Nginx, esegui 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 Gitea app.ini 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 sul database Gitea, l'URL, il nome utente dell'amministratore, la password, la porta e fai clic su Installa Gitea pulsante. 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.