GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Gitea Code Hosting Platform con HTTPS su CentOS 8

Gitea è un'applicazione web di hosting di codice scritta in Go. Come suggerisce il nome, è progettato per essere utilizzato con il popolare programma di controllo del codice sorgente Git, in modo simile a Gitlab e Github. Questa guida spiegherà l'installazione di Gitea su CentOS 8 con un proxy inverso HTTPS Nginx.

Requisiti

  • Un sistema CentOS 8 su cui disponi dei privilegi di root.
  • Un nome di dominio registrato che punta al tuo server.
  • La variabile d'ambiente $EDITOR dovrebbe essere impostata sul tuo editor di testo preferito.
  • Accesso a un server SMTP per le notifiche e-mail (opzionale).

Assicurati che il tuo (sotto)dominio punti all'indirizzo IPv4 del tuo server con un record A. Facoltativamente, crea un record AAAA che punta all'indirizzo IPv6 del tuo server.

NOTA: Questa guida presuppone che SELinux sia impostato su disabilitato o permissivo.

Fase 1:preparazione del sistema

Inizia installando tutti gli aggiornamenti disponibili e riavviando:

dnf update -y
reboot

Per questa configurazione sono necessari diversi componenti software:

  • Git, una dipendenza di Gitea.
  • PostgreSQL, poiché Gitea richiede un database.
  • Nginx, che verrà utilizzato come proxy inverso.
  • Sudo, per eseguire comandi come utente del sistema postgres.
  • Ricevi
  • Certbot, un'utilità per ottenere certificati SSL Let's Encrypt. Certbot verrà installato separatamente poiché non è disponibile nei repository del software CentOS.

Installali come segue:

dnf install -y git postgresql postgresql-server nginx sudo wget

Certbot-auto è uno script che gestisce l'installazione di certbot. Scaricalo:

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

Assicurati che le autorizzazioni corrette siano impostate:

chmod 0755 /usr/local/bin/certbot-auto

Eseguire quanto segue per installare certbot. Ti verrà chiesto dal gestore di pacchetti di confermare l'installazione delle dipendenze, rispondi 'y'.

certbot-auto --install-only

Quindi, crea un utente per eseguire Gitea:

useradd --system --shell /bin/bash --create-home --home-dir /home/gitea gitea

Quindi crea la struttura delle directory per Gitea:

mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea

E imposta le proprietà e le autorizzazioni come segue:

chown -R gitea:gitea /var/lib/gitea
chown -R gitea:gitea /var/run/gitea
chown -R root:gitea /etc/gitea
chmod -R 750 /var/lib/gitea
chmod 770 /etc/gitea

I permessi su /etc/gitea sono temporanei e verranno rafforzati dopo l'esecuzione del programma di installazione web.

Abilita il traffico verso le porte 80 e 443 in modo permanente:

firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanent
firewall-cmd --reload

L'accesso alla porta 3000 è richiesto solo temporaneamente per la configurazione iniziale poiché configureremo gitea per utilizzare invece un socket Unix.

firewall-cmd --add-port 3000/tcp

Fase 2:configurazione del database

Inizializza Postgres:

postgresql-setup --initdb --unit postgresql

Assicurati che sia abilitato e funzionante:

systemctl enable --now postgresql.service

Accedi a Postgres:

sudo -u postgres psql

Quindi crea un ruolo utente e un database che verranno utilizzati da Gitea:

postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
postgres=# CREATE DATABASE gitea;
postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
postgres=# \q

Apri il file di configurazione dell'autenticazione del client Postgres:

$EDITOR /var/lib/pgsql/data/pg_hba.conf

Aggiungi la riga seguente subito dopo # Connessioni locali IPv4 :

# IPv4 local connections:
host	gitea		gitea		127.0.0.1/32		md5

Salva il file e riavvia Postgres:

systemctl restart postgresql.service

Fase 3:installazione di Gitea

Scarica la versione binaria linux-amd64 di Gitea dalla pagina di download di Gitea. Ad esempio:

wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea

Imposta le autorizzazioni corrette sul binario scaricato:

chmod 755 /usr/local/bin/gitea

Quindi, crea un file di unità systemd:

$EDITOR /etc/systemd/system/gitea.service

E inserisci quanto segue:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=postgresql.service
[Service]
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

Assicurati che la nuova unità sia caricata:

systemctl daemon-reload

Quindi indica a systemd di avviare Gitea all'avvio:

systemctl enable gitea.service

Fase 4:configurazione di Gitea

Per la configurazione iniziale, utilizzeremo il programma di installazione web incluso. Per prima cosa, avvia Gitea:

systemctl start gitea.service

Quindi vai a http://tuo_dominio:3000/install e inserisci i parametri richiesti come segue:

  • Tipo di database:PostgreSQL
  • Ospite:127.0.0.1:5432
  • Nome utente:gitea
  • Password:inserisci la password che hai scelto durante la creazione del ruolo Postgres.
  • Nome database:gitea
  • SSL:Disattiva
  • Titolo del sito:titolo a tua scelta.
  • Percorso radice del repository:/var/lib/gitea/data/repositories
  • Percorso radice Git LFS:/var/lib/gitea/data/lfs
  • Esegui come nome utente:gitea
  • Dominio server SSH:tuo_dominio
  • Porta server SSH:22
  • Post di ascolto HTTP Gitea:3000
  • URL di Gitea Base:https://tuo_dominio/
  • Percorso registro:/var/lib/gitea/log

Configura l'e-mail e le restanti impostazioni come ritenuto opportuno, quindi fai clic su "Installa Gitea". Verrai reindirizzato a un URL errato. Questo è normale, poiché non abbiamo ancora configurato Nginx o HTTPS. Per motivi di prestazioni, configureremo ora Gitea per l'ascolto su un socket unix anziché sulla porta TCP predefinita.

Ferma Gitea prima di procedere:

systemctl stop gitea.service

Aumenta le autorizzazioni su /etc/gitea come mostrato di seguito. Ciò impedisce a chiunque non faccia parte del gruppo gitea di leggere app.ini , che contiene informazioni riservate, comprese le credenziali del database.

chmod 750 /etc/gitea
chown root:gitea /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini

Apri il suo file di configurazione:

$EDITOR /etc/gitea/app.ini

Rimuovere la seguente riga dalla sezione del server:

HTTP_PORT = 3000

E aggiungi le seguenti righe nella sezione server:

HTTP_ADDR        = /run/gitea/gitea.sock
PROTOCOL         = unix
UNIX_SOCKET_PERMISSION = 666

Passaggio 5:configurazione del proxy inverso

Arresta Nginx se è in esecuzione, per consentire a certbot di rimanere in ascolto sulla porta 80:

systemctl stop nginx.service

Utilizza il comando seguente per ottenere un certificato per il tuo dominio:

certbot-auto certonly --standalone --agree-tos -m [email protected] -d your_domain

Let's Encrypt verificherà la proprietà del dominio prima di emettere il certificato. Il tuo certificato, catena e chiave privata verranno archiviati in /etc/letsencrypt/live/your_domain/ .

Ora possiamo configurare Nginx. Crea un nuovo file di configurazione:

$EDITOR /etc/nginx/conf.d/gitea.conf

E inserisci i seguenti blocchi server:

server {
        listen 80;
        listen [::]:80;
        server_name your_domain;
        return 301 https://$server_name$request_uri;
	access_log /var/log/nginx/gitea-proxy_access.log;
	error_log /var/log/nginx/gitea-proxy_error.log;
}
server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name your_domain;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
        location / {
                proxy_pass http://unix:/var/run/gitea/gitea.sock;
	}
	access_log /var/log/nginx/gitea-proxy_access.log;
	error_log /var/log/nginx/gitea-proxy_error.log;
}

Il primo blocco server serve semplicemente a reindirizzare tutte le richieste HTTP a HTTPS. Il secondo blocco ascolta le connessioni HTTPS e le invia tramite proxy al socket Unix su cui abbiamo configurato Gitea per l'ascolto.

Dopo aver salvato la configurazione di cui sopra, controlla eventuali errori di sintassi e modifica la configurazione se necessario:

nginx -t

Infine, avvia Nginx e Gitea:

systemctl start nginx.service gitea.service

La tua istanza Gitea ora dovrebbe funzionare correttamente. Accedi a https://tuo_dominio

Passaggi facoltativi

Configurazione registrazione

Per impostazione predefinita, Gitea registra i messaggi di livello di gravità Info e superiore. Molto probabilmente vorrai cambiarlo in Avvisa o Errore . Per farlo, apri /etc/gitea/app.ini e cambia il parametro LEVEL nella sezione [log] in uno di:trace, debug, info, warn, error, critical, fatal, nessuno. Ad esempio, per registrare i messaggi di gravità Warn e superiori, utilizzare:

[log]
MODE = file
LEVEL = warn
ROOT_PATH = /var/lib/gitea/log

Riavvia Gitea per rendere effettive le modifiche:

systemctl restart gitea.service

Server SSH separato

Gitea può in alternativa utilizzare il proprio server SSH. Per abilitarlo, aggiungi la seguente riga alla sezione di configurazione [server]:

START_SSH_SERVER = true

E cambia la porta SSH in qualsiasi numero superiore a 1024, ad esempio:

SSH_PORT = 2222

Quindi riavvia Gitea per applicare le modifiche e abilitare il traffico sulla porta scelta:

firewall-cmd --add-port 2222/tcp --permanent
firewall-cmd --reload

Cent OS
  1. Come installare CentOS 8 (con screenshot)

  2. Come installare Python 3 su CentOS 7 con SCL

  3. Come installare Gitea su CentOS 8

  4. Come installare phpMyAdmin con Nginx su CentOS 7

  5. Come installare Gitea Code Hosting Platform con HTTPS su Debian 10

Come creare un server LAMP su CentOS 7

Come installare Nginx con ngx_pagespeed su CentOS

Come installare Textpattern su CentOS 7

Come installare Wetty su CentOS 7

Come installare cPanel su CentOS 8

Come installare la piattaforma di apprendimento Moodle con Nginx in CentOS 8