Changed docu from gogs to gitea, added system scripts, fixed some typos
This commit is contained in:
parent
f93e0dfc73
commit
42d36d2e9f
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
|
||||
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 deineTeammitgleider
|
||||
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