Gogs, o servizio Go Git, è una soluzione server Git self-host leggera e completamente funzionale.
In questo tutorial, ti mostrerò come installare l'ultima versione stabile di Gogs, su un'istanza del server CentOS 7. Al momento in cui scrivo, l'ultima versione di Gogs è 0.11.53.
Prerequisiti
- Un'istanza del server Vultr CentOS 7 appena creata con un indirizzo IPv4
203.0.113.1
.
- Un utente sudo .
- Un dominio
gogs.example.com
puntato all'istanza del server sopra menzionata.
Aprire un terminale SSH e accedere all'istanza del server CentOS 7 come utente sudo.
Crea un file di scambio
In un ambiente di produzione, è necessario un file di scambio per il corretto funzionamento del sistema. Ad esempio, quando si distribuisce Gogs su una macchina con 2 GB di memoria, si consiglia di creare un file di scambio da 2 GB (2048 MB) come segue:
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Nota: se si utilizza una dimensione server diversa, la dimensione appropriata del file di scambio potrebbe essere diversa.
Imposta nome host e nome dominio completo (FQDN)
Per abilitare la sicurezza HTTPS, è necessario impostare un nome host (come gogs
) e un FQDN (come gogs.example.com
) sul computer CentOS 7:
sudo hostnamectl set-hostname gogs
cat <<EOF | sudo tee /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
203.0.113.1 gogs.example.com gogs
127.0.0.1 gogs
::1 gogs
EOF
Puoi confermare i risultati:
hostname
hostname -f
Modifica le regole del firewall per consentire il traffico in entrata HTTP
eHTTPS
Per impostazione predefinita, le porte 80
( HTTP
) e 443
( HTTPS
) sono bloccate su CentOS 7. È necessario modificare le regole del firewall come segue prima che i visitatori possano accedere al sito Web:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Installare il repository EPEL YUM e quindi aggiornare il sistema
Al fine di correggere i bug e migliorare le prestazioni del sistema, si consiglia sempre di aggiornare il sistema all'ultimo stato stabile usando YUM:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Dopo il riavvio del sistema, accedere nuovamente come lo stesso utente sudo per andare avanti.
Passaggio 2: installare MariaDB serie 10.3
Gogs ha bisogno di un sistema di gestione del database, come MySQL / MariaDB, PostgreSQL o SQLite. In questo tutorial, installeremo e utilizzeremo l'attuale versione stabile di MariaDB.
Installa e avvia l'attuale versione stabile di MariaDB:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo yum install MariaDB-server MariaDB-devel -y
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
MariaDB sicura:
sudo /usr/bin/mysql_secure_installation
Quando richiesto, rispondi alle domande come mostrato di seguito:
Enter current password for root (enter for none):
ENTER
Set root password? [Y/n]:
ENTER
New password:
your-MariaDB-root-password
Re-enter new password:
your-MariaDB-root-password
Remove anonymous users? [Y/n]:
ENTER
Disallow root login remotely? [Y/n]:
ENTER
Remove test database and access to it? [Y/n]:
ENTER
Reload privilege tables now? [Y/n]:
ENTER
Accedi alla shell MySQL come root:
mysql -u root -p
Nella shell MariaDB, creare un database MariaDB dedicato (deve utilizzare il utf8mb4
set di caratteri) e un utente MariaDB dedicato per Gogs:
CREATE DATABASE gogs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON gogs.* TO 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Nota: Per motivi di sicurezza, assicurarsi di sostituire il gogs
, gogsuser
e yourpassword
con i vostri propri.
Passaggio 3: installare Gogs
Installa Git:
sudo yum install -y git
Crea un utente dedicato e un gruppo dedicato, entrambi denominati git
:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Scarica e decomprimi l'archivio binario di Gogs 0.11.53:
cd
wget https://dl.gogs.io/0.11.53/gogs_0.11.53_linux_amd64.tar.gz
sudo tar -zxvf gogs_0.11.53_linux_amd64.tar.gz -C /opt
sudo chown -R git:git /opt/gogs
Installa un file di unità systemd per Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Utilizzare l' vi
editor per aprire il gogs.service
file appena creato :
sudo vi /lib/systemd/system/gogs.service
Trova le seguenti righe:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Modificali rispettivamente:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Salva ed esci:
:wq!
Avviare e abilitare il servizio Gogs:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Gogs ora sarà attivo e funzionante sull'istanza del server CentOS 7, in ascolto sulla porta 3000
.
Modifica le regole del firewall per consentire l'accesso dei visitatori alla porta 3000
:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Successivamente, è necessario puntare il browser Web preferito http://203.0.113.1:3000
per completare l'installazione.
Nell'interfaccia Install Steps For First-time Run
Web di Gogs , compilare i campi richiesti come mostrato di seguito.
Nota: assicurati di lasciare intatti tutti gli altri campi.
Nella Database Settings
sezione:
- Utente:
gogsuser
- Parola d'ordine:
yourpassword
Nella Application General Settings
sezione:
- Dominio:
gogs.example.com
- URL dell'applicazione:
http://gogs.example.com:3000/
Nella Admin Account Settings
sezione:
- Nome utente:
<your-admin-username>
- Parola d'ordine:
<your-admin-password>
- Conferma password:
<your-admin-password>
- Email amministratore:
<your-admin-email>
Infine, fai clic sul Intall Gogs
pulsante per completare l'installazione. Ricorda che le tue impostazioni personalizzate nell'interfaccia di installazione web di Gogs verranno memorizzate nel file di configurazione personalizzato di Gogs /opt/gogs/custom/conf/app.ini
.
Per ora, gli utenti possono visitare il sito Web di Gogs all'indirizzo http://gogs.example.com:3000
. Al fine di facilitare l'accesso dei visitatori, in modo che non debbano più essere aggiunti :3000
e per migliorare la sicurezza del sistema; puoi installare Nginx come proxy inverso e abilitare HTTPS usando un certificato SSL Let's Encrypt.
Nota: sebbene le istruzioni nei due passaggi seguenti siano facoltative, si consiglia vivamente di eseguire tutte queste istruzioni per abilitare la sicurezza HTTPS.
Passaggio 4 (facoltativo): ottenere un certificato SSL Let's Encrypt
Non consentire l'accesso sulla porta 3000
:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Installa l'utilità Certbot:
sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot
Richiedi un certificato SSL Let's Encrypt per il dominio gogs.example.com
:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d gogs.example.com
Il certificato e la catena verranno salvati nel modo seguente:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
Il file chiave verrà salvato qui:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Per impostazione predefinita, il certificato SSL Let's Encrypt scadrà tra tre mesi. È possibile impostare un processo cron come di seguito per rinnovare automaticamente i certificati Let's Encrypt:
sudo crontab -e
Premere Ie inserire la seguente riga:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Salva ed esci:
:wq!
Questo cron job tenterà di rinnovare il certificato Let's Encrypt ogni giorno a mezzogiorno.
Passaggio 5 (Opzionale): installare Nginx come proxy inverso
Installa Nginx usando il repository EPEL YUM:
sudo yum install -y nginx
Crea un file di configurazione per Gogs:
cat <<EOF | sudo tee /etc/nginx/conf.d/gogs.conf
# Redirect HTTP to HTTPS
server {
listen 80;
server_name gogs.example.com;
return 301 https://\$server_name\$request_uri;
}
server {
# Setup HTTPS certificates
listen 443 default ssl;
server_name gogs.example.com;
ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
# Proxy to the Gogs server
location / {
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host \$http_host;
proxy_set_header Host \$http_host;
proxy_max_temp_file_size 0;
proxy_pass http://127.0.0.1:3000;
proxy_redirect http:// https://;
}
}
EOF
Riavvia Nginx per rendere effettiva la tua configurazione:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Infine, punta il tuo browser Web preferito su http://gogs.example.com/
per iniziare a esplorare il tuo sito Web Gogs. Scoprirai che il protocollo HTTPS si attiva automaticamente. Accedi come amministratore impostato in precedenza o registra nuovi account utente per il lavoro di squadra.