Gitea è un sistema alternativo di controllo della versione self-hosted open source basato su git. Gitea è scritto in Golang ed è una soluzione leggera per essere ospitato su qualsiasi piattaforma.
Prerequisiti
- Nuova istanza di Vultr Ubuntu 18.04 con almeno 2 core della CPU e 1 GB di RAM
- Utente non root con privilegi sudo.
- nginx
- Idiota
- MariaDB
Passaggio 1: installare Nginx
Aggiorna l'istanza del server Vultr Ubuntu 18.04.
sudo apt update
Installa Nginx.
sudo apt -y install nginx
Una volta installato Nginx, verifica se funziona o meno sfogliando la pagina di test nginx nel browser. Apri il browser web e puntalo ahttp://example.com
I seguenti comandi possono essere utilizzati per arrestare, ricaricare, riavviare, controllare lo stato e abilitare Nginx.
sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl restart nginx.service
sudo systemctl reload nginx.service
sudo systemctl enable nginx.service
Passaggio 2: installa Git
Installa Git.
sudo apt -y install git
Una volta installato, controlla la versione:
git --version
git version 2.17.1
Passaggio 3: installare il server di database MariaDB
Gitea supporta i seguenti database
- MariaDB / MySQL
- PostgreSQL
- SQLite
- TiDB
Per questo tutorial installeremo il server e il client MariaDB.
sudo apt -y install mariadb-server mariadb-client
Dopo aver installato MariaDB, i seguenti comandi possono essere utilizzati per arrestare, avviare, riavviare, controllare lo stato e abilitarlo.
sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl restart mariadb.service
sudo systemctl status mariadb.service
sudo systemctl enable mariadb.service
Successivamente, esegui il comando seguente per proteggere il server MariaDB creando una password di root e impedendo l'accesso root remoto.
sudo mysql_secure_installation
Quando richiesto, rispondi alle seguenti domande seguendo la guida.
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
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
Riavvia MariaDB.
sudo systemctl restart mariadb.service
Per verificare se MariaDB è installato, digitare il comando seguente per accedere al server MariaDB
sudo mysql -u root -p
Quindi digitare la password creata sopra per accedere. Vedrai il messaggio di benvenuto di MariaDB.
Crea un database chiamato gitea
.
CREATE DATABASE gitea;
Creare un utente del database chiamato giteauser
con una nuova password.
CREATE USER 'giteauser'@'localhost' IDENTIFIED BY 'new_password_here';
Quindi concedere all'utente l'accesso completo al database.
GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;
Infine, salva le modifiche ed esci.
FLUSH PRIVILEGES;
EXIT;
Passaggio 4: preparare l'ambiente Gitea
Crea un utente per eseguire Gitea.
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Creare la struttura di directory richiesta.
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Passaggio 5: installa Gitea
Il binario Gitea può essere scaricato eseguendo i seguenti comandi.
sudo wget -O gitea https://dl.gitea.io/gitea/1.5.0/gitea-1.5.0-linux-amd64
sudo chmod +x gitea
Copia il binario in una posizione globale.
sudo cp gitea /usr/local/bin/gitea
Passaggio 6: creare un file di servizio per avviare automaticamente Gitea
Crea un file di servizio linux.
sudo nano /etc/systemd/system/gitea.service
Popolare il file con il seguente.
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#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=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Abilita e avvia Gitea all'avvio.
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
Esegui il comando status.
sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: en
Active: active (running) since Wed 2018-10-10 14:15:28 CDT; 19ms ago
Main PID: 17769 (gitea)
Tasks: 4 (limit: 2321)
CGroup: /system.slice/gitea.service
├─17769 /usr/local/bin/gitea web -c /etc/gitea/app.ini
└─17774 /usr/local/bin/gitea web -c /etc/gitea/app.ini
Elimina il file di configurazione nginx predefinito.
sudo rm /etc/nginx/sites-enabled/default
Crea una configurazione proxy inversa per Gitea.
sudo nano /etc/nginx/sites-available/git
Popolare il file con la seguente configurazione.
upstream gitea {
server 127.0.0.1:3000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
root /var/lib/gitea/public;
access_log off;
error_log off;
location / {
try_files maintain.html $uri $uri/index.html @node;
}
location @node {
client_max_body_size 0;
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 120;
}
}
Abilita la configurazione del proxy inverso Gitea Nginx.
sudo ln -s /etc/nginx/sites-available/git /etc/nginx/sites-enabled
Quindi ricaricare il servizio Nginx.
sudo systemctl reload nginx.service
Quindi, apri il browser e cerca il nome host o l'indirizzo IP del server.
http://example.com/install
Segui le istruzioni su schermo per completare la configurazione di Gitea.