GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie die Gitea Code-Hosting-Plattform mit HTTPS unter CentOS 8

Gitea ist eine in Go geschriebene Code-Hosting-Webanwendung. Wie der Name schon sagt, ist es für die Verwendung mit dem beliebten Quellcodeverwaltungsprogramm Git konzipiert, ähnlich wie Gitlab und Github. Diese Anleitung erklärt die Installation von Gitea auf CentOS 8 mit einem Nginx-HTTPS-Reverse-Proxy.

Anforderungen

  • Ein CentOS 8-System, auf dem Sie Root-Rechte haben.
  • Ein registrierter Domänenname, der auf Ihren Server verweist.
  • Die Umgebungsvariable $EDITOR sollte auf Ihren bevorzugten Texteditor eingestellt sein.
  • Zugriff auf einen SMTP-Server für E-Mail-Benachrichtigungen (optional).

Stellen Sie sicher, dass Ihre (Sub-)Domain mit einem A-Eintrag auf die IPv4-Adresse Ihres Servers verweist. Erstellen Sie optional einen AAAA-Eintrag, der auf die IPv6-Adresse Ihres Servers verweist.

HINWEIS: In diesem Handbuch wird davon ausgegangen, dass SELinux entweder deaktiviert oder permissiv eingestellt ist.

Schritt 1:Vorbereiten des Systems

Installieren Sie zunächst alle verfügbaren Updates und starten Sie neu:

dnf update -y
reboot

Für diese Einrichtung werden mehrere Softwarekomponenten benötigt:

  • Git, eine Abhängigkeit von Gitea.
  • PostgreSQL, da Gitea eine Datenbank benötigt.
  • Nginx, das als Reverse-Proxy verwendet wird.
  • Sudo, um Befehle als Postgres-Systembenutzer auszuführen.
  • Get
  • Certbot, ein Dienstprogramm zum Abrufen von SSL-Zertifikaten von Let's Encrypt. Certbot wird separat installiert, da es nicht in den CentOS-Software-Repositories verfügbar ist.

Installieren Sie sie wie folgt:

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

Certbot-auto ist ein Skript, das die Installation von certbot verwaltet. Laden Sie es herunter:

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

Stellen Sie sicher, dass die richtigen Berechtigungen festgelegt sind:

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

Führen Sie Folgendes aus, um certbot zu installieren. Sie werden vom Paketmanager aufgefordert, die Installation von Abhängigkeiten zu bestätigen, antworten Sie mit 'y'.

certbot-auto --install-only

Erstellen Sie als Nächstes einen Benutzer zum Ausführen von Gitea:

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

Erstellen Sie dann die Verzeichnisstruktur für Gitea:

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

Und legen Sie Eigentumsrechte und Berechtigungen wie folgt fest:

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

Die Berechtigungen auf /etc/gitea sind temporär und werden nach dem Ausführen des Web-Installers verschärft.

Datenverkehr zu den Ports 80 und 443 dauerhaft aktivieren:

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

Der Zugriff auf Port 3000 ist nur vorübergehend für die Ersteinrichtung erforderlich, da wir gitea so konfigurieren, dass stattdessen ein Unix-Socket verwendet wird.

firewall-cmd --add-port 3000/tcp

Schritt 2:Datenbankeinrichtung

Postgres initialisieren:

postgresql-setup --initdb --unit postgresql

Stellen Sie sicher, dass es aktiviert ist und ausgeführt wird:

systemctl enable --now postgresql.service

Melden Sie sich bei Postgres an:

sudo -u postgres psql

Erstellen Sie dann eine Benutzerrolle und eine Datenbank, die von Gitea verwendet werden sollen:

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

Öffnen Sie die Konfigurationsdatei für die Postgres-Client-Authentifizierung:

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

Fügen Sie die folgende Zeile direkt danach hinzu # Lokale IPv4-Verbindungen :

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

Speichern Sie die Datei und starten Sie Postgres neu:

systemctl restart postgresql.service

Schritt 3:Gitea installieren

Laden Sie die linux-amd64-Binärversion von Gitea von der Download-Seite von Gitea herunter. Zum Beispiel:

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

Legen Sie die richtigen Berechtigungen für die heruntergeladene Binärdatei fest:

chmod 755 /usr/local/bin/gitea

Erstellen Sie als Nächstes eine systemd-Unit-Datei:

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

Und geben Sie Folgendes ein:

[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

Stellen Sie sicher, dass die neue Einheit geladen ist:

systemctl daemon-reload

Weisen Sie dann systemd an, Gitea beim Booten zu starten:

systemctl enable gitea.service

Schritt 4:Gitea konfigurieren

Für die Erstkonfiguration verwenden wir den mitgelieferten Web-Installer. Starten Sie zuerst Gitea:

systemctl start gitea.service

Navigieren Sie dann zu http://your_domain:3000/install und füllen Sie die erforderlichen Parameter wie folgt aus:

  • Datenbanktyp:PostgreSQL
  • Host:127.0.0.1:5432
  • Benutzername:gitea
  • Passwort:Geben Sie das Passwort ein, das Sie bei der Erstellung der Postgres-Rolle gewählt haben.
  • Datenbankname:gitea
  • SSL:Deaktivieren
  • Seitentitel:Titel Ihrer Wahl.
  • Repository-Stammpfad:/var/lib/gitea/data/repositories
  • Git-LFS-Stammpfad:/var/lib/gitea/data/lfs
  • Als Benutzername ausführen:gitea
  • SSH-Serverdomäne:your_domain
  • SSH-Serverport:22
  • Gitea HTTP Listen Post:3000
  • Gitea-Basis-URL:https://your_domain/
  • Protokollpfad:/var/lib/gitea/log

Konfigurieren Sie E-Mail und die restlichen Einstellungen nach Bedarf und klicken Sie dann auf "Gitea installieren". Sie werden zu einer fehlerhaften URL weitergeleitet. Dies ist normal, da wir Nginx oder HTTPS noch nicht konfiguriert haben. Aus Leistungsgründen werden wir Gitea jetzt so konfigurieren, dass es auf einem Unix-Socket statt auf dem Standard-TCP-Port lauscht.

Beenden Sie Gitea, bevor Sie fortfahren:

systemctl stop gitea.service

Verschärfen Sie die Berechtigungen für /etc/gitea wie unten gezeigt. Dadurch wird verhindert, dass jemand, der nicht Mitglied der Gitea-Gruppe ist, app.ini lesen kann, die vertrauliche Informationen enthält, einschließlich Datenbankanmeldeinformationen.

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

Öffnen Sie seine Konfigurationsdatei:

$EDITOR /etc/gitea/app.ini

Entfernen Sie die folgende Zeile aus dem Serverabschnitt:

HTTP_PORT = 3000

Und fügen Sie die folgenden Zeilen im Abschnitt server hinzu:

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

Schritt 5:Reverse-Proxy-Setup

Beenden Sie Nginx, falls es ausgeführt wird, damit certbot auf Port 80 lauschen kann:

systemctl stop nginx.service

Verwenden Sie den folgenden Befehl, um ein Zertifikat für Ihre Domäne zu erhalten:

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

Let's Encrypt überprüft den Domänenbesitz, bevor das Zertifikat ausgestellt wird. Ihr Zertifikat, Ihre Kette und Ihr privater Schlüssel werden in /etc/letsencrypt/live/your_domain/ gespeichert.

Wir können jetzt Nginx konfigurieren. Erstellen Sie eine neue Konfigurationsdatei:

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

Und geben Sie die folgenden Serverblöcke ein:

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

Der erste Serverblock dient lediglich dazu, alle HTTP-Anfragen auf HTTPS umzuleiten. Der zweite Block wartet auf HTTPS-Verbindungen und leitet sie an den Unix-Socket weiter, auf dem wir Gitea zum Abhören konfiguriert haben.

Nachdem Sie die obige Konfiguration gespeichert haben, suchen Sie nach Syntaxfehlern und bearbeiten Sie Ihre Konfiguration bei Bedarf:

nginx -t

Starten Sie schließlich Nginx und Gitea:

systemctl start nginx.service gitea.service

Ihre Gitea-Instanz sollte jetzt erfolgreich ausgeführt werden. Greifen Sie unter https://your_domain

darauf zu

Optionale Schritte

Protokollierungskonfiguration

Standardmäßig protokolliert Gitea Nachrichten mit dem Schweregrad Info und höher. Sie werden dies höchstwahrscheinlich in Warn oder Error ändern wollen. Öffnen Sie dazu /etc/gitea/app.ini und ändern Sie den Parameter LEVEL im Abschnitt [log] in einen der folgenden Werte:trace, debug, info, warn, error, critical, fatal, none. Um beispielsweise Meldungen mit dem Schweregrad Warn und höher zu protokollieren, verwenden Sie:

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

Starten Sie Gitea neu, damit die Änderungen wirksam werden:

systemctl restart gitea.service

Separater SSH-Server

Gitea kann alternativ einen eigenen SSH-Server verwenden. Fügen Sie zum Aktivieren die folgende Zeile zum Konfigurationsabschnitt [server] hinzu:

START_SSH_SERVER = true

Und ändern Sie den SSH-Port auf eine beliebige Zahl über 1024, zum Beispiel:

SSH_PORT = 2222

Starten Sie dann Gitea neu, um die Änderungen zu übernehmen und den Datenverkehr zum ausgewählten Port zu ermöglichen:

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

Cent OS
  1. So installieren Sie CentOS 8 (mit Screenshots)

  2. So installieren Sie Python 3 auf CentOS 7 mit SCL

  3. So installieren Sie Gitea unter CentOS 8

  4. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7

  5. So installieren Sie die Gitea Code-Hosting-Plattform mit HTTPS unter Debian 10

So erstellen Sie einen LAMP-Server unter CentOS 7

So installieren Sie Nginx mit ngx_pagespeed unter CentOS

So installieren Sie Textpattern unter CentOS 7

So installieren Sie Wetty unter CentOS 7

So installieren Sie cPanel unter CentOS 8

So installieren Sie die Moodle-Lernplattform mit Nginx in CentOS 8