Browse Source

Changed docu from gogs to gitea, added system scripts, fixed some typos

develop
Hauke Zühl 6 years ago
parent
commit
42d36d2e9f
  1. 251
      Git.tex

251
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 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 Gigabitinterfaces, da kann man schon mal gut was "uber die Leitung jagen (wobei des Raspberries
Interface langsamer ist).\\ 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 Wenn du dich damit besch"aftigen willst, solltest du aber "uber gute Linuxkenntnisse
verf"ugen.\\ 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 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 deineTeammitgleider und mit Hilfe der Benutzerverwaltung kannst du auch Einfluss darauf nehmen, was deine Teammitgleider
alles so d"urfen. alles so d"urfen.
\subsection{gogs} \subsection{gitea}
Gogs ist ein kleines, aber feines Projekt, das ein Webfrontend f"ur einen git-Server bereitstellt. 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. Es ist in der Programmiersprache go geschrieben und ben"otigt nur minimale Resourcen.
\subsubsection{Vorbereiten der Datenbank} \subsubsection{Vorbereiten der Datenbank}
Bevor du dir gogs herunterl"adst und installierst, solltest du das Datenbanksystem Bevor du dir gitea herunterl"adst und installierst, solltest du das Datenbanksystem
ausw"ahlen, das gogs sp"ater benutzen soll. Du kannst zwischen MariaDB/MySQL und PostgreSQL ausw"ahlen, das gitea 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 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 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!\\ tats"achlich auf dem Netzwerkinterface horcht, das du bei der Installation angibst!\\
\paragraph{PostgreSQL} \paragraph{PostgreSQL}
Am einfachsten loggst du dich per ``sudo su - postgres'' als Benutzer postgres in deiner 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 Shell auf deinem GIT-Server ein, dann erzeugst du per ``createuser -P -d gitea'' einen Benutzer
f"ur die Datenbank ``gogs''.\\ f"ur die Datenbank ``gitea''.\\
Im n"achsten Schritt loggst du dich auf der Shell per ``psql -h localhost template1 gogs'' 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 gogs;'', um die Datenbank in das Datenbanksystem ein. Hier reicht nun ein ``CREATE DATABASE gitea;'', um die Datenbank
f"ur gogs anzulegen. f"ur gitea anzulegen.
\paragraph{MariaDB/MySQL} \paragraph{MariaDB/MySQL}
Du loggst dich mit dem administrativen Benutzer in MariaDB/MySQL, den du bei der Installation 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'' 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 (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 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 gogs'' 'geheimes passwort';''. Dann loggst du dich aus, loggst dich per ``mysql -p -u gitea''
wieder ein und f"uhrst ein ``CREATE DATABASE gogs CHARACTER SET utf8mb4;'' aus, wieder ein und f"uhrst ein ``CREATE DATABASE gitea CHARACTER SET utf8mb4;'' aus,
um die Datenbank f"ur gogs anzulegen. um die Datenbank f"ur gitea anzulegen.
\\ \\
\textbf{Hinweis:} Sollte bei Benutzung von MariaDB w"ahrend der Installation im \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 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} \subsubsection{Installation}
Bevor du dir gleich die Software runterl"adst, lege bitte einen Benutzer ``git'' auf deinem Bevor du dir gleich die Software runterl"adst, lege bitte einen Benutzer ``git'' auf deinem
Server an, sofern der Benutzer noch nicht existiert.\\ 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 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).\\ 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 Um gitea beim Systemstart zu starten, benötigst du die passenden Skripte.\\
automatisch zu starten. Das geht zum Beispiel via init oder systemd.\\
Nat"urlich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen Nat"urlich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen
die Pfade unter Umst"anden nicht. 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} \subsubsection{Konfigurationsdatei}
Um sp"ater noch ein wenig Feintuning vorzunehmen, kann man im Verzeichnis ``custom/conf'' 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.\\ die Datei ``app.ini'' "andern, die bei der Installation automatisch angelegt wird.\\
Ein Beispiel f"ur eine app.ini: Ein Beispiel f"ur eine app.ini:
\begin{verbatim} \begin{verbatim}
APP_NAME = Gogs APP_NAME = Gitea
RUN_USER = git RUN_USER = git
RUN_MODE = prod RUN_MODE = prod
@ -460,11 +637,11 @@ ROOT = /home/git/repositories
[database] [database]
DB_TYPE = postgres DB_TYPE = postgres
HOST = 127.0.0.1:5432 HOST = 127.0.0.1:5432
NAME = gogs NAME = gitea
USER = gogs USER = gitea
PASSWD = GEHEIM PASSWD = GEHEIM
SSL_MODE = disable SSL_MODE = disable
PATH = data/gogs.db PATH = data/gitea.db
[server] [server]
DOMAIN = git.hauke-zuehl.de DOMAIN = git.hauke-zuehl.de
@ -495,7 +672,7 @@ PROVIDER = file
[log] [log]
MODE = file MODE = file
LEVEL = Info LEVEL = Info
ROOT_PATH = /home/git/gogs/log ROOT_PATH = /home/git/gitea/log
[security] [security]
INSTALL_LOCK = true INSTALL_LOCK = true
@ -508,29 +685,29 @@ kannst aber gerne MariaDB oder MySQL verwenden.
\subsubsection{Der erste Start} \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.\\ 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 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 ``pi.deinzuhause.net'' dann gibst du eben diesen Namen bei der Domain und der Application
URL ein.\\ 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.\\ 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.\\ verwalten.\\
Der erste Benutzer, der sich registriert bei gogs, wird "ubrigens als Administrator Der erste Benutzer, der sich registriert bei gitea, wird "ubrigens als Administrator
angelegt, also Obacht! Von nun kannst du gogs in aller Ruhe erforschen und angelegt, also Obacht! Von nun kannst du gitea in aller Ruhe erforschen und
eigene Repositores anlegen, Organiosationen und Teams erzeugen, usw.! 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 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.\\ toll, hat das Projekt geklont und fortgeführt.\\
\\ \\
Gitea hat inzwischen einige Features mehr als gogs, lässt sich aber genau so installieren Gogs dagegen ist zur Zeit ein wenig eingeschlafen, sodass hier nicht weiter darauf eingegangen wird.
wie gogs, von daher wird nur auf die Installation von gogs verwiesen. Wer aber gogs verwenden möge, kann dies nach der Installationsanleitung von
Gitea kann unter https://gitea.io/ heruntergeladen werden. gitea durchführen.
\section{GIT from scratch} \section{GIT from scratch}
Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder

Loading…
Cancel
Save