Gitea: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Ordner zum Speichern der Log-Dateien von Gitea ergaenzt)
(20 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 10: Zeile 10:
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.


1. Anlegen eines Domain-Benutzers. In unserem Beispiel xyz00-gitea.
1. Anlegen eines Domain-Benutzers. In unserem Beispiel <code>xyz00-gitea</code>.


2. Anlegen einer Domain. In unserem Beispiel gitea.hs-example.de
2. Anlegen einer Domain. In unserem Beispiel <code>gitea.hs-example.de</code>.


3. Anlegen eines Datenbank-Benutzers. Hier xyz00_giteadbuser.
3. Anlegen eines Datenbank-Benutzers. Hier <code>xyz00_giteadbuser</code>.


4. Anlegen einer Datenbank. Hier xyz00_giteadb
4. Anlegen einer Datenbank. Hier <code>xyz00_giteadb</code>.


Auf der Kommandozeile kann man dies folgendermaßen erledigen.
Auf der Kommandozeile kann man dies folgendermaßen erledigen.


Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl ''hsscript'':
Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl <code>hsscript</code>:


   hsscript -u xyz00 -i
   hsscript -u xyz00 -i
Zeile 27: Zeile 27:
Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:
Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:


   xyz00@hsadmin> user.add({set:{name:'xyz00-gitea',password:'geheim',comment:'Domain-User'}})
   xyz00@hsadmin> user.add({set:{name:'xyz00-gitea',password:'geheim',shell:'/bin/bash'}})
   xyz00@hsadmin> domain.add({set:{name:'gitea.hs-example.de',user:'xyz00-gitea'}})
   xyz00@hsadmin> domain.add({set:{name:'gitea.hs-example.de',user:'xyz00-gitea'}})
   xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}})
   xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}})
Zeile 41: Zeile 41:
    
    
Nun laden wir das passende Binary herunter.
Nun laden wir das passende Binary herunter.
Auf der Website https://dl.gitea.io/gitea/ finden Sie das jeweils aktuelle Binary.
Auf der Website https://dl.gitea.io/gitea/ finden Sie das jeweils aktuelle Binary (hier die 64-Bit-Version,
für die shared Server h01 bis h08 bitte die 32-Bit-Version gitea-1.7.0-linux-i386 herunterladen).


   wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64
   wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64
Zeile 49: Zeile 50:


   wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc
   wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc
   gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
   gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
   gpg --verify gitea-1.7.0-linux-amd64.asc gitea-1.7.0-linux-amd64
   gpg --verify gitea-1.7.0-linux-amd64.asc gitea


Nun können wir Gitea testweise starten:
Nun können wir Gitea testweise starten:
Zeile 63: Zeile 64:
=== Konfiguration der Domain ===
=== Konfiguration der Domain ===


Zunächst wechseln wir in das Verzeichnis 'doms/gitea.hs-example.de' und löschen den Ordner für die Subdomain 'www':
Zunächst wechseln wir in das Verzeichnis <code>doms/gitea.hs-example.de</code> und löschen den Ordner für die Subdomain 'www':


   rm -rf subs/www
   rm -rf subs/www
Zeile 76: Zeile 77:
   Redirect permanent / https://gitea.hs-example.com/
   Redirect permanent / https://gitea.hs-example.com/
    
    
Dann legen wir die Datei htdocs-ssl/.htaccess mit folgendem Inhalt an:
Dann legen wir die Datei <code>htdocs-ssl/.htaccess</code> mit folgendem Inhalt an:


  DirectoryIndex disabled
   RewriteEngine on
   RewriteEngine on
   RewriteBase /
   RewriteBase /
Zeile 91: Zeile 93:
=== Konfiguration von Gitea ===
=== Konfiguration von Gitea ===


Wir editieren nun die Konfigurationsdatei von Gitea 'app.ini'.
Wir editieren nun die Konfigurationsdatei von Gitea <code>app.ini</code>.
Sie befindet sich in dem Verzeichnis '~/custom/conf'.
Sie befindet sich in dem Verzeichnis <code>~/custom/conf</code>.


'''ACHTUNG''': Sie können die Konfiguration teilweise auch über das Webinterface durchführen. Starten Sie dazu Gitea, wie oben beschrieben, und versuchen Sie einen Benutzer zu registrieren. Daraufhin öffnet sich der Konfigurationsdialog. Sie müssen den Gitea-Benutzer, den Namen der Datenbank, den Datenbank-Benutzer und sein Passwort parat haben.
'''ACHTUNG''': Sie können die Konfiguration teilweise auch über das Webinterface durchführen. Starten Sie dazu Gitea, wie oben beschrieben, und versuchen Sie einen Benutzer zu registrieren. Daraufhin öffnet sich der Konfigurationsdialog. Sie müssen den Gitea-Benutzer, den Namen der Datenbank, den Datenbank-Benutzer und sein Passwort parat haben.
Zeile 109: Zeile 111:
   NAME    = xyz00_giteadb
   NAME    = xyz00_giteadb
   USER    = xyz00_giteadbuser
   USER    = xyz00_giteadbuser
   PASSWD  = [Passwort des Datenbankbenutzers]
   PASSWD  = geheim
   SSL_MODE = disable
   SSL_MODE = disable
   PATH    = data/gitea.db
   PATH    = data/gitea.db
Zeile 133: Zeile 135:
   ./gitea web
   ./gitea web
    
    
Und den Git-Service im Browser unter der Adresse gitea.hs-example.de öffnen.
Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar.


=== Start- und Stopp-Skripte einrichten ===
=== Start- und Stopp-Skripte einrichten ===
Zeile 139: Zeile 141:
Zum Schluss müssen Sie noch Start- und Stoppskripte einrichten und Monit konfigurieren.
Zum Schluss müssen Sie noch Start- und Stoppskripte einrichten und Monit konfigurieren.


Das Startskript speichern Sie unter dem Pfad '~/bin/gitea-start.sh' ab.
Das Startskript speichern Sie unter dem Pfad <code>~/bin/gitea-start.sh</code> ab.
Es hat folgenden Inhalt:
Es hat folgenden Inhalt:


Zeile 150: Zeile 152:
   echo $! > $PID
   echo $! > $PID


Das Stoppskript speichern Sie unter dem Pfad '~/bin/gitea-stopp.sh' an.
Das Stoppskript speichern Sie unter dem Pfad <code>~/bin/gitea-stop.sh</code> an.
Es hat folgenden Inhalt:
Es hat folgenden Inhalt:


Zeile 165: Zeile 167:
       rm $PID ;
       rm $PID ;
   fi
   fi
'''ACHTUNG''': Bitte prüfen Sie, ob die Skripte vom Nutzer xzy00 ausführbar sind. Bei Bedarf passen Sie die Berechtigungen entsprechend an.
  ls -lha ~/bin/
  chmod 744 ~/bin/gitea-st*
'''ACHTUNG''': Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend.
  mkdir -p /home/pacs/xyz00/users/gitea/custom/logs


Monit ist ein Programm zur Überwachung eines Servers oder eines Dienstes.
Monit ist ein Programm zur Überwachung eines Servers oder eines Dienstes.
Das Programm erwartet im Verzeichnis des Domain-Benutzers die Datei '~/.monitrc' mit der entsprechenden Konfiguration.
Das Programm erwartet im Verzeichnis des Domain-Benutzers die Datei <code>~/.monitrc</code> mit der entsprechenden Konfiguration.
Legen Sie die Datei mit folgendem Inhalt an:
Legen Sie die Datei mit folgendem Inhalt an:


Zeile 174: Zeile 185:
   set mailserver localhost
   set mailserver localhost
   set alert webmaster@gitea.hs-example.de
   set alert webmaster@gitea.hs-example.de
 
  #
   check process gitead with pidfile /home/pacs/xyz00/users/gitea/.gitea.pid
   check process gitead with pidfile /home/pacs/xyz00/users/gitea/.gitea.pid
       start program "/home/pacs/xyz00/users/gitea/bin/gitea-start.sh"
       start program "/home/pacs/xyz00/users/gitea/bin/gitea-start.sh"
Zeile 180: Zeile 191:
        
        
Nun können Sie noch die Rotation der Logfiles konfigurieren.
Nun können Sie noch die Rotation der Logfiles konfigurieren.
Dies geschieht in der Datei '~/.logrotate':
Dies geschieht in der Datei <code>~/.logrotate</code>:


   /home/pacs/xyz00/users/gitea/custom/logs/gitea.log {
   /home/pacs/xyz00/users/gitea/custom/logs/gitea.log {
Zeile 197: Zeile 208:
   }
   }


Damit die Konfiguration für logrotate und monit auch nach einem Server-Neustart eingelesen werden, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen:
Damit gitea auch nach einem Server-Neustart neu gestartet wird und auch die Konfiguration für logrotate und monit eingelesen werden, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen:


   # m h  dom mon dow  command
   # m h  dom mon dow  command
Zeile 204: Zeile 215:
   PID=$HOME/.gitea.pid
   PID=$HOME/.gitea.pid
   @reboot /usr/bin/monit -c $HOME/.monitrc > /dev/null
   @reboot /usr/bin/monit -c $HOME/.monitrc > /dev/null
  @reboot $HOME/gitea-start.sh
   51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
   51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
   
   
Wichtig ist der @reboot-Eintrag, der automatisch nach einem Neustart des Hosts ausgeführt wird.
Wichtig sind die @reboot-Einträge, die automatisch nach einem Neustart des Hosts ausgeführt werden.
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.


Zeile 212: Zeile 224:


   ~/bin/gitea-start.sh
   ~/bin/gitea-start.sh
== weiterführende Links ==
* [https://gitea.io/ Gitea Webseite]
* [https://docs.gitea.io/ Dokumentation von Gitea]
* [https://github.com/tpokorra/Hostsharing-Ansible-Gitea Ansible Playbook für Hostsharing]
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Ansible Playbook]]
[[Kategorie:Software]]
[[Kategorie:Projektmanagement]]
[[Kategorie:Projektverwaltung]]

Version vom 2. Dezember 2022, 08:00 Uhr

Gitea installieren

Gitea ist ein einfacher, selbst gehosteter Git-Service wie GitHub oder GitLab. Die Software ist ein Fork von Gogs und ebenfalls in der Programmiersprache Go geschrieben. Gitea benötigt wenig Ressourcen. Um Gitea auf der Hostsharing Plattform nutzen zu können, benötigt man entweder einen Managed Server oder man muss für seinen Managed Webspace einen Daemon hinzubuchen.

Gitea unterstützt verschiedene Datenbanken. Wir gehen in dieser Anleitung davon aus, dass PostgreSQL benutzt wird.

Vorbereitung der Installation

Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.

1. Anlegen eines Domain-Benutzers. In unserem Beispiel xyz00-gitea.

2. Anlegen einer Domain. In unserem Beispiel gitea.hs-example.de.

3. Anlegen eines Datenbank-Benutzers. Hier xyz00_giteadbuser.

4. Anlegen einer Datenbank. Hier xyz00_giteadb.

Auf der Kommandozeile kann man dies folgendermaßen erledigen.

Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl hsscript:

 hsscript -u xyz00 -i
 Password: ********

Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:

 xyz00@hsadmin> user.add({set:{name:'xyz00-gitea',password:'geheim',shell:'/bin/bash'}})
 xyz00@hsadmin> domain.add({set:{name:'gitea.hs-example.de',user:'xyz00-gitea'}})
 xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}})
 xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_giteadb',owner:'xyz00_giteadbuser'}})

Installation von Gitea

Gitea wird als Binary zur Verfügung gestellt. Wir installieren das Binary im Verzeichnis des Domain-Benutzers. Wenn wir als Paketbenutzer eingeloggt sind, können wir den Benutzer folgendermaßen wechseln:

 sudo -u xyz00-gitea -i
 

Nun laden wir das passende Binary herunter. Auf der Website https://dl.gitea.io/gitea/ finden Sie das jeweils aktuelle Binary (hier die 64-Bit-Version, für die shared Server h01 bis h08 bitte die 32-Bit-Version gitea-1.7.0-linux-i386 herunterladen).

 wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64
 chmod +x gitea

Wir laden die GPG-Signatur herunter und überprüfen sie:

 wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc
 gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
 gpg --verify gitea-1.7.0-linux-amd64.asc gitea

Nun können wir Gitea testweise starten:

 ./gitea web
 

Der Webserver von Gitea startet auf dem Port 3000. Das werden wir später ändern.

Der Server kann mit Ctrl-C beendet werden.

Konfiguration der Domain

Zunächst wechseln wir in das Verzeichnis doms/gitea.hs-example.de und löschen den Ordner für die Subdomain 'www':

 rm -rf subs/www
 rm -rf subs-ssl/www
 

Anschließend tragen wir die Umleitung auf HTTPS ein, falls dies nicht schon geschehen ist.

 vi htdocs/.htaccess
 

Der Eintrag muss lauten:

 Redirect permanent / https://gitea.hs-example.com/
 

Dann legen wir die Datei htdocs-ssl/.htaccess mit folgendem Inhalt an:

 DirectoryIndex disabled
 RewriteEngine on
 RewriteBase /
 RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last]
 

Merken Sie sich die Portnummer 31580. Sie wird später bei der Konfiguration von Gitea gebraucht. Die Portnummer bekommen Sie vom Hostmaster, wenn Sie für Ihren Webspace einen Serverdienst (Daemon) buchen. Wenn Sie einen Managed Server haben, können Sie selbst die Portnummer auswählen.

Damit ist die Konfiguration von Apache abgeschlossen.

Konfiguration von Gitea

Wir editieren nun die Konfigurationsdatei von Gitea app.ini. Sie befindet sich in dem Verzeichnis ~/custom/conf.

ACHTUNG: Sie können die Konfiguration teilweise auch über das Webinterface durchführen. Starten Sie dazu Gitea, wie oben beschrieben, und versuchen Sie einen Benutzer zu registrieren. Daraufhin öffnet sich der Konfigurationsdialog. Sie müssen den Gitea-Benutzer, den Namen der Datenbank, den Datenbank-Benutzer und sein Passwort parat haben.

Die Konfigurationsdatei beginnt mit allgemeinen Einträgen:

 APP_NAME = Gitea: Git with a cup of tea
 RUN_USER = xyz00-gitea
 RUN_MODE = prod
 

Im Abschnitt [database] folgen die Angaben zur Datenbank:

 [database]
 DB_TYPE  = postgres
 HOST     = 127.0.0.1:5432
 NAME     = xyz00_giteadb
 USER     = xyz00_giteadbuser
 PASSWD   = geheim
 SSL_MODE = disable
 PATH     = data/gitea.db

Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration:

 [repository]
 ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories
 
 [server]
 PROTOCOL         = http
 SSH_DOMAIN       = gitea.hs-example.de 
 DOMAIN           = gitea.hs-example.de
 HTTP_ADDR        = localhost
 HTTP_PORT        = 31580
 ROOT_URL         = https://gitea.hs-example.de/
 DISABLE_SSH      = false
 SSH_PORT         = 22
 LFS_START_SERVER = true
 

Sie können nun Gitea starten:

 ./gitea web
 

Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar.

Start- und Stopp-Skripte einrichten

Zum Schluss müssen Sie noch Start- und Stoppskripte einrichten und Monit konfigurieren.

Das Startskript speichern Sie unter dem Pfad ~/bin/gitea-start.sh ab. Es hat folgenden Inhalt:

 #!/bin/bash
 export HOME=/home/pacs/xyz00/users/gitea
 export PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
 export PID=$HOME/.gitea.pid
 cd $HOME
 exec $HOME/gitea web >$HOME/custom/logs/gitea.log 2>&1 &
 echo $! > $PID

Das Stoppskript speichern Sie unter dem Pfad ~/bin/gitea-stop.sh an. Es hat folgenden Inhalt:

 #!/bin/bash
 export HOME=/home/pacs/xyz00/users/gitea
 export PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
 export PID=$HOME/.gitea.pid
 cd $HOME
 
 if [ -f $PID ] ; then 
     kill $( cat $PID );
     sleep 20 ;
     kill -9 $( cat $PID ) >/dev/null 2>&1 ;
     rm $PID ;
 fi

ACHTUNG: Bitte prüfen Sie, ob die Skripte vom Nutzer xzy00 ausführbar sind. Bei Bedarf passen Sie die Berechtigungen entsprechend an.

 ls -lha ~/bin/
 chmod 744 ~/bin/gitea-st*

ACHTUNG: Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend.

 mkdir -p /home/pacs/xyz00/users/gitea/custom/logs

Monit ist ein Programm zur Überwachung eines Servers oder eines Dienstes. Das Programm erwartet im Verzeichnis des Domain-Benutzers die Datei ~/.monitrc mit der entsprechenden Konfiguration. Legen Sie die Datei mit folgendem Inhalt an:

 set daemon 600
 set logfile /home/pacs/xyz00/users/gitea/custom/logs/monit.log
 set mailserver localhost
 set alert webmaster@gitea.hs-example.de
 #
 check process gitead with pidfile /home/pacs/xyz00/users/gitea/.gitea.pid
     start program "/home/pacs/xyz00/users/gitea/bin/gitea-start.sh"
     stop program "/home/pacs/xyz00/users/gitea/bin/gitea-stop.sh"
     

Nun können Sie noch die Rotation der Logfiles konfigurieren. Dies geschieht in der Datei ~/.logrotate:

 /home/pacs/xyz00/users/gitea/custom/logs/gitea.log {
   copytruncate
   daily
   rotate 7
   compress
   missingok
 }
 /home/pacs/xyz00/users/gitea/custom/logs/monit.log {
   copytruncate
   monthly
   rotate 2
   compress
   missingok
 }

Damit gitea auch nach einem Server-Neustart neu gestartet wird und auch die Konfiguration für logrotate und monit eingelesen werden, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen:

 # m h  dom mon dow   command
 HOME=/home/pacs/xyz00/users/gitea
 PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
 PID=$HOME/.gitea.pid
 @reboot /usr/bin/monit -c $HOME/.monitrc > /dev/null
 @reboot $HOME/gitea-start.sh
 51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate

Wichtig sind die @reboot-Einträge, die automatisch nach einem Neustart des Hosts ausgeführt werden. Die Uhrzeit für die Logrotation können Sie beliebig einstellen.

Abschließend können Sie Ihre Gitea-Instanz starten:

 ~/bin/gitea-start.sh

weiterführende Links