sharelatex.com Website
Die Software hinter sharelatex.com ist seit ein paar Wochen unter einer Open Source Lizenz verfügbar und kann auf einem eigenen Server installiert werden. Die Installation ist nicht ganz trivial, aber ich will euch hier eine einfach gehaltene Anleitung anbieten.
Ein Problem ist, dass die benötigte Software teilweise nur noch in veralteten Versionen im Ubuntu Repository vorliegt. Das macht die Installation ein wenig langwieriger. Zuerst werden aber die Pakete installiert, die aktuell genug sind:
sudo -s
apt-get update && apt-get install mongodb-server texlive make git build-essential unzip
Redis installieren
Neben MongoDB wird auch Redis genutzt, ein nicht-relationales Datenbanksystem. Da die in den Ubuntu-Respositories angebotene Redis Version veraltet ist, wird nun eine aktuelle Version von der Redis Website heruntergeladen und kompiliert.
Wechselt in das /opt/ Verzeichnis und ladet euch die aktuelle Redis Version von der offiziellen Website herunter.
cd /opt/
wget http://download.redis.io/releases/redis-2.8.7.tar.gz
Redis wird nun entpackt, kompiliert und installiert:
tar xzf redis-2.8.7.tar.gz
cd redis-2.8.7
make
Damit man Redis bequem und als anderer User im Hintergrund laufen lassen kann, wird jetzt noch ein Service für Redis erstellt. Erstellt die Datei “/etc/init.d/redis-server” und füllt sie mit folgendem Inhalt:
#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $syslog
# Required-Stop: $syslog
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: redis-server - Persistent key-value db
# Description: redis-server - Persistent key-value db
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/redis-2.8.7/src/redis-server
DAEMON_ARGS=/opt/redis-2.8.7/redis.conf
NAME=redis-server
DESC=redis-server
PIDFILE=/var/run/redis.pid
test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
touch $PIDFILE
chown redis:redis $PIDFILE
if start-stop-daemon --start --background --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
then
echo "$NAME."
else
echo "failed"
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --retry 10 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
then
echo "$NAME."
else
echo "failed"
fi
rm -f $PIDFILE
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Ggf muss der Pfad zu redis-server angepasst werden: Versionsnummer!)
Das Script wird ausführbar gemacht und im init System registriert:
chmod 755 /etc/init.d/redis-server
update-rc.d redis-server defaults
(Quelle des Scripts: GitHub Gist)
Außerdem wird noch ein Benutzer “redis” erstellt…
useradd -d /opt/redis-2.8.7/ redis
… und ihm das Redis Server Verzeichnis übereignet:
chown -R redis:redis /opt/redis-2.8.7/
Redis kann später über die service Kommandos gesteuert werden.
latexmk installieren
Für die Umwandlung von Dokumenten im TEX Format wird die Bibliothek latexmk genutzt. Dazu wird eine ausführbare Perl Datei in das /bin Verzeichnis verschoben, sodass das entsprechende Kommando in der Shell verfügbar ist.
cd /opt/
wget http://mirrors.ctan.org/support/latexmk.zip
unzip latexmk.zip
cd latexmk
cp latexmk.pl /usr/local/bin
mv /usr/local/bin/latexmk.pl /usr/local/bin/latexmk
chmod +x /usr/local/bin/latexmk
Node.js und NPM installieren
ShareLatex benötigt Node.js mit npm. Wie ihr beides installiert, erfahrt ihr hier: Install Node.js via package manager | GitHub
ShareLaTeX installieren
Nachdem nun alle benötigten Abhängigkeiten installiert sind, kann ShareLatex selbst installiert werden. Wechselt dazu erneut in das /opt/ Verzeichnis:
cd /opt
Jetzt wird der aktuelle ShareLatex Code von GitHub heruntergeladen und im Ordner “sharelatex” abgespeichert:
git clone https://github.com/sharelatex/sharelatex.git
cd sharelatex
Mit dem Node.js Paketmanager npm werden alle noch fehlenden Bibliotheken für Node.js nachinstalliert:
npm install
… auch das Tool “grunt” wird über npm installiert:
npm install -g grunt-cli
…sodass es genutzt werden kann, um ShareLatex endgültig zu installieren.
grunt install
In der Konfigurationsdatei “config/settings.development.coffee” kann ShareLatex konfiguriert werden – für erste Versuche ist das aber nicht nötig.
Ein Verzeichnis fehlt noch: Das Verzeichnis “user_files”, welches später einmal die Dateien der Benutzer anthalten wird. Dieses wird noch erstellt:
mkdir user_files
Sobald das erledigt ist, kann die ShareLatex Installation überprüft werden. So kann man sicher gehen, dass alle Komponenten, von denen ShareLatex abhängt, korrekt funktionieren und es später keine Probleme gibt. Mit
grunt check --force
… führt ihr eine Überprüfung der Umgebung aus. Hier sollten keine Fehler angezeigt werden. Sollte das dennoch der Fall sein, müssen diese behoben werden, sodass ShareLatex einwandfrei funktionieren kann. Wenn keine Fehler angezeigt werden, legen wir noch einen neuen User “sharelatex” an, unter dem ShareLatex laufen wird. Diesem Benutzer wird das sharelatex-Verzeichnis übereignet.
useradd -d /opt/sharelatex/ sharelatex
chown -R sharelatex:sharelatex /opt/sharelatex
ShareLatex ist jetzt fertig eingerichtet und kann gestartet werden. Zuvor muss aber noch Redis gestartet werden:
service redis-server start
Zum Starten wird “grunt run” ausgeführt:
sudo -u sharelatex grunt run
Die Weboberfläche ist über Port 3000 erreichbar.
Es empfiehlt sich, ShareLatex in einer screen-Session auszuführen, um es nicht zu beenden, wenn die SSH Session geschlossen wird. Bei Bedarf kann man sich wieder auf die Session aufschalten und die Ausgaben nach Fehlern durchsuchen.
Wer will, kann ShareLatex noch hinter einem Apache Webserver als Proxy verstecken, sodass auf die Angabe des Ports verzichtet werden kann.