Changed docu from gogs to gitea, added system scripts, fixed some typos
This commit is contained in:
		
							parent
							
								
									f93e0dfc73
								
							
						
					
					
						commit
						42d36d2e9f
					
				
							
								
								
									
										249
									
								
								Git.tex
									
									
									
									
									
								
							
							
						
						
									
										249
									
								
								Git.tex
									
									
									
									
									
								
							@ -390,41 +390,43 @@ sollte nat"urlich "uber LAN (und nicht via WLAN) mit dem Netz verbunden sein, da
 | 
			
		||||
Daten"ubertragung m"oglichst hastig erfolgen kann. Eine FritzBox zum Beispiel hat
 | 
			
		||||
Gigabitinterfaces, da kann man schon mal gut was "uber die Leitung jagen (wobei des Raspberries
 | 
			
		||||
Interface langsamer ist).\\
 | 
			
		||||
Als GIT-Serversoftware empfehle ich an dieser Stelle gogs\footnote{https://gogs.io/}.\\
 | 
			
		||||
Als GIT-Serversoftware empfehle ich an dieser Stelle gitea\footnote{https://gitea.io/}.\\
 | 
			
		||||
Wenn du dich damit besch"aftigen willst, solltest du aber "uber gute Linuxkenntnisse
 | 
			
		||||
verf"ugen.\\
 | 
			
		||||
Mit gogs hast du eine Weboberfl"ache, "ahnlich wie bei GitHub, unter der du deine Projekte
 | 
			
		||||
Mit gitea hast du eine Weboberfl"ache, "ahnlich wie bei GitHub, unter der du deine Projekte
 | 
			
		||||
recht einfach verwalten kannst. Du hast auch die M"oglichkeit, private Projekte dort anzulegen
 | 
			
		||||
und mit Hilfe der Benutzerverwaltung kannst du auch Einfluss darauf nehmen, was deine Teammitgleider
 | 
			
		||||
alles so d"urfen.
 | 
			
		||||
 | 
			
		||||
\subsection{gogs}
 | 
			
		||||
Gogs ist ein kleines, aber feines Projekt, das ein Webfrontend f"ur einen git-Server bereitstellt.
 | 
			
		||||
\subsection{gitea}
 | 
			
		||||
Gitea ist ein kleines, aber feines Projekt, das ein Webfrontend f"ur einen git-Server bereitstellt.
 | 
			
		||||
Es ist in der Programmiersprache go geschrieben und ben"otigt nur minimale Resourcen.
 | 
			
		||||
 | 
			
		||||
\subsubsection{Vorbereiten der Datenbank}
 | 
			
		||||
Bevor du dir gogs herunterl"adst und installierst, solltest du das Datenbanksystem
 | 
			
		||||
ausw"ahlen, das gogs sp"ater benutzen soll. Du kannst zwischen MariaDB/MySQL und PostgreSQL
 | 
			
		||||
w"ahlen. Gut, es giobt noch SQLite, MSSQL oder TiDB nutzen, aber die ersten beiden will man
 | 
			
		||||
Bevor du dir gitea herunterl"adst und installierst, solltest du das Datenbanksystem
 | 
			
		||||
ausw"ahlen, das gitea sp"ater benutzen soll. Du kannst zwischen MariaDB/MySQL und PostgreSQL
 | 
			
		||||
w"ahlen. Gut, es gibt noch SQLite, MSSQL oder TiDB nutzen, aber die ersten beiden will man
 | 
			
		||||
nicht wirklich und TiDB ist wohl noch zu speziell. Achte darauf, dass MySQL/MariaDB auch
 | 
			
		||||
tats"achlich auf dem Netzwerkinterface horcht, das du bei der Installation angibst!\\
 | 
			
		||||
 | 
			
		||||
\paragraph{PostgreSQL}
 | 
			
		||||
 | 
			
		||||
Am einfachsten loggst du dich per ``sudo su - postgres'' als Benutzer postgres in deiner
 | 
			
		||||
Shell auf deinem GIT-Server ein, dann erzeugst du per ``createuser -P -d gogs'' einen Benutzer
 | 
			
		||||
f"ur die Datenbank ``gogs''.\\
 | 
			
		||||
Im n"achsten Schritt loggst du dich auf der Shell per ``psql -h localhost template1 gogs''
 | 
			
		||||
in das Datenbanksystem ein. Hier reicht nun ein ``CREATE DATABASE gogs;'', um die Datenbank
 | 
			
		||||
f"ur gogs anzulegen.
 | 
			
		||||
Shell auf deinem GIT-Server ein, dann erzeugst du per ``createuser -P -d gitea'' einen Benutzer
 | 
			
		||||
f"ur die Datenbank ``gitea''.\\
 | 
			
		||||
Im n"achsten Schritt loggst du dich auf der Shell per ``psql -h localhost template1 gitea''
 | 
			
		||||
in das Datenbanksystem ein. Hier reicht nun ein ``CREATE DATABASE gitea;'', um die Datenbank
 | 
			
		||||
f"ur gitea anzulegen.
 | 
			
		||||
 | 
			
		||||
\paragraph{MariaDB/MySQL}
 | 
			
		||||
 | 
			
		||||
Du loggst dich mit dem administrativen Benutzer in MariaDB/MySQL, den du bei der Installation
 | 
			
		||||
eingerichtet hast, in das Datenbanksystem ein. Das ist oft der Datenbankbenutzer ``root''
 | 
			
		||||
(nicht zu verwechseln mit dem Systembenutzer ``root''). Also ``mysql -p -u root''. Nun
 | 
			
		||||
erfolgt ein ``GRANT ALL PRIVILEGES ON gogs.* to 'gogs'@'localhost' IDENTIFIED BY
 | 
			
		||||
'geheimes passwort';''. Dann loggst du dich aus, loggst dich per ``mysql -p -u gogs''
 | 
			
		||||
wieder ein und f"uhrst ein ``CREATE DATABASE gogs CHARACTER SET utf8mb4;'' aus,
 | 
			
		||||
um die Datenbank f"ur gogs anzulegen.
 | 
			
		||||
erfolgt ein ``GRANT ALL PRIVILEGES ON gitea.* to 'gitea'@'localhost' IDENTIFIED BY
 | 
			
		||||
'geheimes passwort';''. Dann loggst du dich aus, loggst dich per ``mysql -p -u gitea''
 | 
			
		||||
wieder ein und f"uhrst ein ``CREATE DATABASE gitea CHARACTER SET utf8mb4;'' aus,
 | 
			
		||||
um die Datenbank f"ur gitea anzulegen.
 | 
			
		||||
\\
 | 
			
		||||
\textbf{Hinweis:} Sollte bei Benutzung von MariaDB w"ahrend der Installation im
 | 
			
		||||
Webbrowser die Fehlermeldung ``Datenbankeinstellungen sind nicht korrekt: Error 1071: Specified key was too long; max key length is 767 bytes'', dann folgende Befehle in der
 | 
			
		||||
@ -437,20 +439,195 @@ set global innodb_file_format=Barracuda;
 | 
			
		||||
\subsubsection{Installation}
 | 
			
		||||
Bevor du dir gleich die Software runterl"adst, lege bitte einen Benutzer ``git'' auf deinem
 | 
			
		||||
Server an, sofern der Benutzer noch nicht existiert.\\
 | 
			
		||||
Von https://gogs.io/docs/installation/install\_from\_binary l"adt man sich die passende Version
 | 
			
		||||
Von https://gitea.io/ l"adt man sich die passende Version
 | 
			
		||||
f"ur seinen Server runter und entpackt diese. Das entstandene Verzeichnis wird dann in das
 | 
			
		||||
Benutzerverzeichnis des Benutzers ``git'' verschoben und diesem zu eigen gemacht (chown).\\
 | 
			
		||||
Im Verzeichnis gogs/scripts findest du Beispiele, um gogs auf deinem System bei Systemstart
 | 
			
		||||
automatisch zu starten. Das geht zum Beispiel via init oder systemd.\\
 | 
			
		||||
Um gitea beim Systemstart zu starten, benötigst du die passenden Skripte.\\
 | 
			
		||||
Nat"urlich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen
 | 
			
		||||
die Pfade unter Umst"anden nicht.
 | 
			
		||||
 | 
			
		||||
\paragraph{systemd}
 | 
			
		||||
In ``/etc/systemd/system/'' legst du (z.B. mit vim) die Datei ``gitea.service'' mit
 | 
			
		||||
folgendem Inhalt an:
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Gitea
 | 
			
		||||
After=syslog.target
 | 
			
		||||
After=network.target
 | 
			
		||||
After=mariadb.service mysqld.service postgresql.service
 | 
			
		||||
After=memcached.service 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
 | 
			
		||||
Type=simple
 | 
			
		||||
User=git
 | 
			
		||||
Group=git
 | 
			
		||||
WorkingDirectory=/home/git/gitea
 | 
			
		||||
ExecStart=/home/git/gitea/gitea web
 | 
			
		||||
Restart=always
 | 
			
		||||
Environment=USER=git HOME=/home/git
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
 | 
			
		||||
Dann folgen ein ``systemctl enable gitea'', danach ein ``systemctl start gitea''.
 | 
			
		||||
 | 
			
		||||
\paragraph{SystemV init}
 | 
			
		||||
 | 
			
		||||
Es gibt ja immer noch Puristen, die das alte init-System
 | 
			
		||||
von SystemV verwenden. Dafür benötigt man die Datei
 | 
			
		||||
``/etc/init.d/gitea'', die Executrechte benötigt.
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
### BEGIN INIT INFO
 | 
			
		||||
# Provides:          gitea
 | 
			
		||||
# Required-Start:    $syslog $network
 | 
			
		||||
# Required-Stop:     $syslog
 | 
			
		||||
# Should-Start:      mysql postgresql
 | 
			
		||||
# Should-Stop:       mysql postgresql
 | 
			
		||||
# Default-Start:     2 3 4 5
 | 
			
		||||
# Default-Stop:      0 1 6
 | 
			
		||||
# Short-Description: A self-hosted Git service written in Go.
 | 
			
		||||
# Description:       A self-hosted Git service written in Go.
 | 
			
		||||
### END INIT INFO
 | 
			
		||||
 | 
			
		||||
# Author: Danny Boisvert
 | 
			
		||||
 | 
			
		||||
# Do NOT "set -e"
 | 
			
		||||
 | 
			
		||||
# PATH should only include /usr/* if it runs after the mountnfs.sh script
 | 
			
		||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
 | 
			
		||||
DESC="Gitea"
 | 
			
		||||
NAME=gitea
 | 
			
		||||
SERVICEVERBOSE=yes
 | 
			
		||||
PIDFILE=/var/run/$NAME.pid
 | 
			
		||||
SCRIPTNAME=/etc/init.d/$NAME
 | 
			
		||||
WORKINGDIR=/home/git/gitea
 | 
			
		||||
DAEMON=$WORKINGDIR/$NAME
 | 
			
		||||
DAEMON_ARGS="web"
 | 
			
		||||
USER=git
 | 
			
		||||
 | 
			
		||||
# Read configuration variable file if it is present
 | 
			
		||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
 | 
			
		||||
 | 
			
		||||
# Exit if the package is not installed
 | 
			
		||||
[ -x "$DAEMON" ] || exit 0
 | 
			
		||||
 | 
			
		||||
# Load the VERBOSE setting and other rcS variables
 | 
			
		||||
. /lib/init/vars.sh
 | 
			
		||||
 | 
			
		||||
# Define LSB log_* functions.
 | 
			
		||||
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
 | 
			
		||||
# and status_of_proc is working.
 | 
			
		||||
. /lib/lsb/init-functions
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Function that starts the daemon/service
 | 
			
		||||
#
 | 
			
		||||
do_start()
 | 
			
		||||
{
 | 
			
		||||
        # Return
 | 
			
		||||
        #   0 if daemon has been started
 | 
			
		||||
        #   1 if daemon was already running
 | 
			
		||||
        #   2 if daemon could not be started
 | 
			
		||||
        sh -c "USER=$USER start-stop-daemon --start --quiet \\
 | 
			
		||||
                        --pidfile $PIDFILE --make-pidfile \\
 | 
			
		||||
                        --test --chdir $WORKINGDIR --chuid $USER \\
 | 
			
		||||
                        --exec $DAEMON -- $DAEMON_ARGS > /dev/null \\
 | 
			
		||||
                        || return 1"
 | 
			
		||||
        sh -c "USER=$USER start-stop-daemon --start --quiet \\
 | 
			
		||||
                        --pidfile $PIDFILE --make-pidfile \\
 | 
			
		||||
                        --background --chdir $WORKINGDIR --chuid $USER \\
 | 
			
		||||
                        --exec $DAEMON -- $DAEMON_ARGS \\
 | 
			
		||||
                        || return 2"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Function that stops the daemon/service
 | 
			
		||||
#
 | 
			
		||||
do_stop()
 | 
			
		||||
{
 | 
			
		||||
        # Return
 | 
			
		||||
        #   0 if daemon has been stopped
 | 
			
		||||
        #   1 if daemon was already stopped
 | 
			
		||||
        #   2 if daemon could not be stopped
 | 
			
		||||
        #   other if a failure occurred
 | 
			
		||||
        start-stop-daemon --stop --quiet --retry=TERM/1/KILL/5 \\
 | 
			
		||||
                          --pidfile $PIDFILE --name $NAME
 | 
			
		||||
        RETVAL="$?"
 | 
			
		||||
        [ "$RETVAL" = 2 ] && return 2
 | 
			
		||||
        start-stop-daemon --stop --quiet --oknodo \\
 | 
			
		||||
                          --retry=0/1/KILL/5 --exec $DAEMON
 | 
			
		||||
        [ "$?" = 2 ] && return 2
 | 
			
		||||
        # Many daemons don't delete their pidfiles when they exit.
 | 
			
		||||
        rm -f $PIDFILE
 | 
			
		||||
        return "$RETVAL"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
case "$1" in
 | 
			
		||||
  start)
 | 
			
		||||
        [ "$SERVICEVERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
 | 
			
		||||
        do_start
 | 
			
		||||
        case "$?" in
 | 
			
		||||
                0|1) [ "$SERVICEVERBOSE" != no ] && log_end_msg 0 ;;
 | 
			
		||||
                2) [ "$SERVICEVERBOSE" != no ] && log_end_msg 1 ;;
 | 
			
		||||
        esac
 | 
			
		||||
        ;;
 | 
			
		||||
  stop)
 | 
			
		||||
        [ "$SERVICEVERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
 | 
			
		||||
        do_stop
 | 
			
		||||
        case "$?" in
 | 
			
		||||
                0|1) [ "$SERVICEVERBOSE" != no ] && log_end_msg 0 ;;
 | 
			
		||||
                2) [ "$SERVICEVERBOSE" != no ] && log_end_msg 1 ;;
 | 
			
		||||
        esac
 | 
			
		||||
        ;;
 | 
			
		||||
  status)
 | 
			
		||||
        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
 | 
			
		||||
        ;;
 | 
			
		||||
  restart|force-reload)
 | 
			
		||||
        log_daemon_msg "Restarting $DESC" "$NAME"
 | 
			
		||||
        do_stop
 | 
			
		||||
        case "$?" in
 | 
			
		||||
          0|1)
 | 
			
		||||
                do_start
 | 
			
		||||
                case "$?" in
 | 
			
		||||
                        0) log_end_msg 0 ;;
 | 
			
		||||
                        1) log_end_msg 1 ;; # Old process is still running
 | 
			
		||||
                        *) log_end_msg 1 ;; # Failed to start
 | 
			
		||||
                esac
 | 
			
		||||
                ;;
 | 
			
		||||
          *)
 | 
			
		||||
                # Failed to stop
 | 
			
		||||
                log_end_msg 1
 | 
			
		||||
                ;;
 | 
			
		||||
                esac
 | 
			
		||||
        ;;
 | 
			
		||||
  *)
 | 
			
		||||
                echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
 | 
			
		||||
                exit 3
 | 
			
		||||
                ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
 | 
			
		||||
Um das Skript zu aktivieren, führt man ``update-rc.d gitea defaults'' aus und
 | 
			
		||||
startet gitea per ``/etc/init.d/gitea start''.
 | 
			
		||||
 | 
			
		||||
\subsubsection{Konfigurationsdatei}
 | 
			
		||||
Um sp"ater noch ein wenig Feintuning vorzunehmen, kann man im Verzeichnis ``custom/conf''
 | 
			
		||||
die Datei ``app.ini'' "andern, die bei der Installation automatisch angelegt wird.\\
 | 
			
		||||
Ein Beispiel f"ur eine app.ini:
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
APP_NAME = Gogs
 | 
			
		||||
APP_NAME = Gitea
 | 
			
		||||
RUN_USER = git
 | 
			
		||||
RUN_MODE = prod
 | 
			
		||||
 | 
			
		||||
@ -460,11 +637,11 @@ ROOT = /home/git/repositories
 | 
			
		||||
[database]
 | 
			
		||||
DB_TYPE  = postgres
 | 
			
		||||
HOST     = 127.0.0.1:5432
 | 
			
		||||
NAME     = gogs
 | 
			
		||||
USER     = gogs
 | 
			
		||||
NAME     = gitea
 | 
			
		||||
USER     = gitea
 | 
			
		||||
PASSWD   = GEHEIM
 | 
			
		||||
SSL_MODE = disable
 | 
			
		||||
PATH     = data/gogs.db
 | 
			
		||||
PATH     = data/gitea.db
 | 
			
		||||
 | 
			
		||||
[server]
 | 
			
		||||
DOMAIN           = git.hauke-zuehl.de
 | 
			
		||||
@ -495,7 +672,7 @@ PROVIDER = file
 | 
			
		||||
[log]
 | 
			
		||||
MODE      = file
 | 
			
		||||
LEVEL     = Info
 | 
			
		||||
ROOT_PATH = /home/git/gogs/log
 | 
			
		||||
ROOT_PATH = /home/git/gitea/log
 | 
			
		||||
 | 
			
		||||
[security]
 | 
			
		||||
INSTALL_LOCK = true
 | 
			
		||||
@ -508,29 +685,29 @@ kannst aber gerne MariaDB oder MySQL verwenden.
 | 
			
		||||
 | 
			
		||||
\subsubsection{Der erste Start}
 | 
			
		||||
 | 
			
		||||
Du startest gogs zun"achst "uber die Kommandozeil per ``./gogs web'' und gibst dann in
 | 
			
		||||
Du startest gitea zun"achst "uber die Kommandozeil per ``./gitea web'' und gibst dann in
 | 
			
		||||
deinem Webbrowser die URL ``http://localhost:3000'' ein.\\
 | 
			
		||||
Du wirst nun durch die Konfiguration der Datenbank und von gogs gef"uhrt. Bei der Domain
 | 
			
		||||
Du wirst nun durch die Konfiguration der Datenbank und von gitea gef"uhrt. Bei der Domain
 | 
			
		||||
solltest du den Server- oder einen ordentlichen Domainnamen eingeben. Hast du also zum
 | 
			
		||||
Beispiel einen kleinen RaspberryPi zu Hause, auf dem gogs laufen soll, und dieser heisst
 | 
			
		||||
Beispiel einen kleinen RaspberryPi zu Hause, auf dem gitea laufen soll, und dieser heisst
 | 
			
		||||
``pi.deinzuhause.net'' dann gibst du eben diesen Namen bei der Domain und der Application
 | 
			
		||||
URL ein.\\
 | 
			
		||||
Den Datenbankbenutzer f"ur gogs und die entsprechende Datenbank solltest du nun auch
 | 
			
		||||
Den Datenbankbenutzer f"ur gitea und die entsprechende Datenbank solltest du nun auch
 | 
			
		||||
anlegen, sonst kracht es bei der Einrichtung der Tabellen.\\
 | 
			
		||||
Hast du soweit alles eingetragen, kannst du dich anmelden und deine Projekte mit gogs
 | 
			
		||||
Hast du soweit alles eingetragen, kannst du dich anmelden und deine Projekte mit gitea
 | 
			
		||||
verwalten.\\
 | 
			
		||||
Der erste Benutzer, der sich registriert bei gogs, wird "ubrigens als Administrator
 | 
			
		||||
angelegt, also Obacht! Von nun kannst du gogs in aller Ruhe erforschen und
 | 
			
		||||
eigene Repositores anlegen, Organiosationen und Teams erzeugen, usw.!
 | 
			
		||||
Der erste Benutzer, der sich registriert bei gitea, wird "ubrigens als Administrator
 | 
			
		||||
angelegt, also Obacht! Von nun kannst du gitea in aller Ruhe erforschen und
 | 
			
		||||
eigene Repositores anlegen, Organisationen und Teams erzeugen, usw.!
 | 
			
		||||
 | 
			
		||||
\subsection{Gitea}
 | 
			
		||||
\subsection{Gogs}
 | 
			
		||||
 | 
			
		||||
Gitea ist ein sog. ``fork'' von gogs, d.h, jemand fand die Entwicklung von gogs nicht so
 | 
			
		||||
toll, hat das Projekt geklont und fortgeführt.\\
 | 
			
		||||
\\
 | 
			
		||||
Gitea hat inzwischen einige Features mehr als gogs, lässt sich aber genau so installieren
 | 
			
		||||
wie gogs, von daher wird nur auf die Installation von gogs verwiesen.
 | 
			
		||||
Gitea kann unter https://gitea.io/ heruntergeladen werden.
 | 
			
		||||
Gogs dagegen ist zur Zeit ein wenig eingeschlafen, sodass hier nicht weiter darauf eingegangen wird.
 | 
			
		||||
Wer aber gogs verwenden möge, kann dies nach der Installationsanleitung von
 | 
			
		||||
gitea durchführen.
 | 
			
		||||
 | 
			
		||||
\section{GIT from scratch}
 | 
			
		||||
Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user