In dieser Anleitung zeige ich wie man Odoo 11 Community Edition aus dem Quelltext installiert. Die offizielle Installationsanleitung setzt einiges an Basiswissen voraus und behandelt nicht jedes Detail der Installation erschöpfend. Im vorliegenden Artikel zeige ich alle notwendigen Installationsschritte und versuche dabei keine Fragen offen zu lassen.
Vorbereitungen
Zunächst muss eine Reihe von Vorbereitungen getroffen werden. Das Software-Paket wkhtmltopdf wird von Odoo benötigt um Rechnungen und weitere Dokumentenarten nicht nur als HTML, sondern auch als PDF auszugeben. Außerdem müssen Ubuntu aktualisiert, die PostgreSQL Datenbank und Node.js installiert, sowie ein Linux- und Datenbank-Benutzer für Odoo erstellt werden.
wkhtmltopdf herunterladen
Inzwischen gibt es zwar eine neuere Version von wkhtmltopdf, die offizielle Quelle empfiehlt jedoch die bereits etwas ältere Version v0.12.1 zu verwenden. Um Schwierigkeiten zu vermeiden halten wir uns an diese Empfehlung.
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
Bitte achte darauf, dass wir den Download als regulärer Benutzer durchführen. Somit landet die Datei zunächst auch in unserem Benutzerverzeichnis, in meinem Fall unter /home/peter
.
Um deinen tatsächlichen Pfad anzuzeigen, kannst du den Befehl pwd
verwenden, als Ausgabe wird der Pfad angezeigt.
pwd
/home/peter
Ubuntu Update durchführen
Als nächstes bringen wir Ubuntu auf den neuesten Stand. Hierzu wechseln wir zum Benutzer root.
sudo su [sudo] Passwort für peter:
Das eigentliche Update wird mit den folgenden zwei Befehlen durchgeführt.
apt-get update
apt-get upgrade
Dieser Vorgang kann je nach Verbindungsgeschwindigkeit und Anzahl der verfügbaren Updates einige Minuten dauern.
PostgreSQL installieren
Jetzt installieren wir die von Odoo verwendete PostgreSQL Datenbank.
apt-get install postgresql
wkhtmltopdf und seine Voraussetzungen installieren
Um das zuvor heruntergeladene wkhtmltopdf installieren zu können, müssen einige Voraussetzungen erfüllt sein. Diese installieren wir wie folgt:
apt-get install fonts-freefont-ttf fonts-dejavu-core fontconfig-config fontconfig libfontconfig1 libjpeg-turbo8 libxrender1
Jetzt kann die eigentliche Installation von wkhtmltopdf erfolgen. Diese installieren wir nicht aus dem Ubuntu Repository, sondern direkt mit der herunter geladenen .deb Datei mittels dpkg
. Dazu müssen wir uns in dem Verzeichnis befinden, in dem sich die herunter geladene Datei befindet (/home/peter
). Im Normalfall befinden wir uns noch in diesem Verzeichnis, was man auch am Command-Prompt ablesen kann.
dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb
Damit diese später auch von Odoo verwendet werden können, kopieren wir die Binaries von wkhtmltopdf nach /usr/bin/
cp /usr/local/bin/wkhtmltoimage /usr/bin/
cp /usr/local/bin/wkhtmltopdf /usr/bin/
Optional: wkhtmltopdf Installationsdatei löschen
rm wkhtmltox-0.12.1_linux-trusty-amd64.deb
Linux-Benutzer odoo anlegen
Jetzt legen wir einen neuen Benutzer für Odoo an. Unter diesem Benutzer wird Odoo später ausgeführt werden. Sinngemäß nennen wir den Benutzer auch odoo.
adduser --system --home=/opt/odoo --group odoo
In diesem Zuge wird auch das Benutzerverzeichnis /opt/odoo
erstellt, in diesem wird sich später die Odoo Installation befinden.
Jetzt legen wir noch das Kennwort für den Benutzer odoo fest, hier kannst du deiner Fantasie freien Lauf lassen.
passwd odoo
Gib zur Bestätigung zwei Mal das gewünschte Kennwort ein.
Node.js installieren
Als nächstes installieren wir einige weitere Voraussetzungen für Odoo: Node.js und node-less.
apt-get install npm
Damit Node.js unter Debian und dem darauf basierenden Ubuntu richtig funktioniert, muss noch folgende Verknüpfung erstellt werden
ln -s /usr/bin/nodejs /usr/bin/node
Jetzt installieren wir noch zwei npm Pakete global
npm install -g less less-plugin-clean-css
Und anschließend noch node-less
apt-get install node-less
DB-Benutzer odoo anlegen
Den Linux-Benutzer odoo haben wir in einem vorherigen Schritt bereits angelegt, jetzt muss noch ein Datenbank-Benutzer odoo erstellt werden. Zu diesem Zweck wechseln wir zum (durch die Installation von PostgreSQL) vorhandenen Linux-Benutzer postgres:
sudo su - postgres
Und legen den Datenbank-Benutzer odoo an
createuser -s odoo
Anschließend verlassen wir den Benutzer postgres wieder und wechseln mit exit
zurück zum Benutzer root.
exit
git installieren
Normalerweise sollte git bereits installiert sein, falls nicht kann es mit dem folgenden Befehl installiert werden
apt-get install git
Falls git bereits installiert war, wird nichts passieren, es erscheint lediglich ein entsprechender Hinweis. Also schadet es nicht die Installation von git zu versuchen, um zu testen, ob es bereits vorhanden ist.
Damit haben wir die Vorbereitungen abgeschlossen und können zu der eigentlichen Installation von Odoo übergehen.
Installation Odoo
Zunächst wechseln wir wieder von Benutzer root zum Standard-Benutzer, in meinem Fall peter.
exit
Und anschließend zum zum Benutzer odoo
sudo su - odoo -s /bin/bash
Zu diesem Zweck wirst du ggf. nach dem Kennwort des Benutzers odoo gefragt.
Odoo git Repository klonen
Jetzt laden wir (klonen mittels git) den Quellcode von Odoo direkt von GitHub
git clone https://github.com/odoo/odoo.git --depth 1 --branch 11.0 --single-branch .
Beachte den Punkt am Ende des Befehls, dieser gehört zum Befehl dazu!
Wichtig ist auch, das Klonen direkt nach dem Wechsel zu odoo durchzuführen. Andernfalls, wenn man vorher andere Befehle ausführt, wird im Benutzerverzeichnis /opt/odoo
u.U. die unsichtbare Datei .bash_history
erstellt und das Verzeichnis /opt/odoo
ist damit nicht mehr leer. Das führt dazu, dass git sich beschwert und sich weigert in ein nicht leeres Verzeichnis zu klonen.
Das ist jedoch kein großes Problem, man muss in diesem Fall lediglich die Datei .bash_history
wieder löschen. Wende folgenden Befehl also nur an, wenn git sich weigert den Quellcode zu laden.
rm .bash_history
pip3 installieren
Für die Installation der Odoo Python Voraussetzungen brauchen wir zunächst den Paketmanager pip3. Für die weitere Installation wechseln wir erneut zum Benutzer root.
sudo su
Danach sollten wir uns wieder im eigenen Benutzerverzeichnis (/home/peter
) befinden.
apt-get install python3-pip
Bevor wir jetzt die eigentlichen Python Pakete installieren können, müssen vorher noch zwei Bibliotheken installiert werden.
apt-get install libldap2-dev libsasl2-dev
Dann installieren wir die Python Voraussetzungen für Odoo.
pip3 install babel decorator docutils feedparser gevent html2text Jinja2 lxml mako mock ofxparse passlib pillow psutil psycopg2 pydot pyldap pyparsing pypdf2 pyserial python-dateutil pytz pyusb pyyaml qrcode reportlab requests suds-jurko vatnumber vobject werkzeug xlsxwriter xlwt ebaysdk greenlet MarkupSafe num2words six xlrd
Installation testen
Damit sollte die Installation bereits lauffähig sein. Nun ist es an der Zeit unsere Installation zu testen. Hierzu führen wir einen manuellen Start von Odoo durch.
exit
sudo su - odoo -s /bin/bash
./odoo-bin
Wenn jetzt keine Fehler auftreten und deine Ausgabe ungefähr so aussieht, dann hat bis hierher alles geklappt:
2017-12-26 21:37:21,107 23820 INFO ? odoo: Odoo version 11.0 2017-12-26 21:37:21,107 23820 INFO ? odoo: addons paths: ['/opt/odoo/.local/share/Odoo/addons/11.0', '/opt/odoo/odoo/addons', '/opt/odoo/addons'] 2017-12-26 21:37:21,107 23820 INFO ? odoo: database: default@default:default 2017-12-26 21:37:21,124 23820 INFO ? odoo.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069 2017-12-26 21:37:21,205 23820 INFO ? odoo.addons.base.ir.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf
Jetzt testen wir noch die Erreichbarkeit über den Webbrowser von einem anderen Rechner aus. Es sei denn du hast die grafische Oberfläche und einen Webbrowser auf deinem Server bereits installiert, dann kannst du narürlich auch direkt vom Server aus testen. Um den Test im Webbrowser machen zu können brauchst due die IP Adresse deines Servers. Diese kann mit dem folgenden Befehl ermittelt werden:
ip address show
1: lo: <loopback ,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <broadcast ,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:03:76:ee brd ff:ff:ff:ff:ff:ff inet 192.168.178.63/24 brd 192.168.178.255 scope global ens3 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe03:76ee/64 scope link valid_lft forever preferred_lft forever </broadcast></loopback>
Meine IP Adresse lautet also 192.168.178.63, daraus leite ich folgenden URL ab: http://192.168.178.63:8069
Um die IP mit dem zuvor genannten Befehl nachsehen zu können, muss Odoo vorher beendet werden (Strg + C) oder du wechselst dazu zu einen anderen Terminal z.B. mit Strg + Alt + F2.
Um den Test im Browser durchführen zu können muss Odoo, falls du es zuvor beendet hast mit
./odoo-bin
wieder gestartet werden. Der Port 8069 muss mit einem Doppelpunkt an die IP Adresse angehängt werden. Und so sollte das nach dem Aufruf des URLs im Browser aussehen.
Damit ist der Test abgeschlossen und wir beenden Odoo wieder indem wir “Strg+C” drücken.
Einrichtung von Odoo als Dienst
Jetzt haben wir bereits eien lauffähige Odoo Installation. Das Problem ist nur, dass wir Odoo jedes Mal von Hand starten müssen. Wir wollen aber, das Odoo als Dienst automatisch mit dem Server mit startet. Dazu müssen die nachfolgenden Einrichtungen noch vorgenommen werden.
Vorarbeiten und Korrekturen
Um die Log-Datei von Odoo ein wenig von den anderen Logs zu trennen, erstellen wir einen eigenen Ordner in dem sich die Log-Datei befinden wird.
exit
Bevor wir jetzt weiter zu root wechseln, laden wir noch die folgende Datei in den Benutzerordner unseres Standardbenutzers. Diese Datei wird die Grundlage unseres Server-Scripts.
wget https://raw.githubusercontent.com/mohitg1213/odoo_scripts/master/odoo-server
sudo su
Wir erstellen das Log-Verzeichnis und übergeben odoo seinen Besitz.
mkdir /var/log/odoo
chown odoo:root /var/log/odoo/
Nun erstellen wir die Datei /etc/odoo-server.conf
. Ich verwende hierzu den Editor vim, es kann aber jeder andere installierte Editor wie z.B. nano verwendet werden.
vim /etc/odoo-server.conf
Der Inhalt dieser Datei sieht folgendermaßen aus:
[options] ; This is the password that allows database operations: ; admin_passwd = admin db_host = False db_port = False db_user = odoo db_password = False logfile = /var/log/odoo/odoo-server.log log_level = warn addons_path = /opt/odoo/addons,/opt/odoo/odoo/addons
Wir passen die Attribute der Datei wie folgt an.
chown odoo: /etc/odoo-server.conf
chmod 640 /etc/odoo-server.conf
Dann verschieben wir die zuvor herunter geladene Datei odoo-server
und passen auch ihre Attribute entsprechend an.
mv odoo-server /etc/init.d/
chmod 755 /etc/init.d/odoo-server
chown root: /etc/init.d/odoo-server
Jetzt bearbeiten wir die Datei noch.
vim /etc/init.d/odoo-server
Und passen die folgende Zeile (sollte Zeile 36 sein) an.
PIDFILE=/var/run/$NAME.pid # pidfile
Diese Zeile soll so geändert werden.
PIDFILE=/opt/odoo/$NAME.pid # pidfile
D.h. unser PIDFILE wird nicht wie in der ursprünglichen Fassung unter /var/run
, sondern unter /opt/odoo
erstellt. Der Grund ist, dass der Benutzer odoo, mit dem unsere Odoo Installation laufen wird, keinen Zugriff auf /var/run
hat und somit würde ohne diese Anpassung der automatische Start des Dienstes scheitern.
Jetzt noch
update-rc.d odoo-server defaults
Wir testen den Autostart des Odoo Dienstes indem wir den Server einmal neu starten.
reboot
Nach einem Neustart des Servers hat bei mir der Autostart zunächst nicht funktioniert. Das habe ich zum einen daran gesehen, dass das Odoo-Frontend nicht lief und zum anderen, dass überhaupt keine Log-Datei erstellt worden war, /var/log/odoo war leer. Nachdem ich die beiden Dateien odoo-server und odoo-server.conf nochmal überprüft hatte und keinen Fehler entdecken konnte, habe ich den Dienst kurzerhand als root manuell gestartet
sudo su [sudo] Passwort für peter:
service odoo-server start
Der Dienst ließ sich problemlos starten und lief auch. Jetzt habe ich den Dienst sicherheitshalber nochmal registriert
update-rc.d odoo-server defaults
Und erneut den Server neu gestartet und siehe da, Odoo startet jetzt wie gewünscht mit dem Server!
Ich vermute, dass der manuelle Start des Dienstes als root etwas bewirkt hat, was zuvor noch fehlte oder aufgrund fehlender Zugriffsrechte nicht erstellt werden konnte.
Der folgende Schritt korrigiert das Encoding:
peter@u1604:~$ sudo su – postgres postgres@u1604:~$ psql postgres=# update pg_database set encoding = pg_char_to_encoding(‘UTF8’); postgres=# \q