Samstag, 26. Juli 2014

Installation odoo (OpenERP) Version 8 unter Ubuntu

Heute werde ich meine Erfahrungen mit der Installation von odoo (OpenERP) in der Version 8 unter Ubuntu veröffentlichen. Ich benutze dazu eine Ubuntu 64 Bit Version. Gehostet wird diese bei Contabo.

Ich habe den Server komplett zurückgesetzt und beschreibe jetzt Schritt für Schritt meine Vorgehensweise.

Zunächst melde ich mich mittels SSH von meinem Mac an:
$ ssh -l root 10.11.12.13
(10.11.12.13 steht für die IP Adresse des Servers)

Da ich mittels "apt-get" weitere Pakete installieren will, muss man mit dem Befehl
$ sudo apt-get update
die Paketverzeichnis aktualisieren.

Hinweis: Ubuntu benutzt als Basis keinen "root"-User.
Man kann aber mit
$ sudo -i
auf den "root"-Level umschalten, wenn man das Administratorspasswort weiss.

Ich will zwar hier keine Linux-Schulung machen, aber dennoch einige hilfreiche Zusatzinformationen mitgeben.

Installation aller benötigten Pakete

apt-get


Damit lassen sich die meisten Bestandteile des Betriebssystem installieren, update oder entfernen. Ich möchte nur auf die wichtigsten Befehlsvarianten eingehen, die Sie für den Betrieb Ihres OpenERP Server brauchen.
$ sudo apt-get update
Aktualisiert die lokale Paketdatenbank mit dem Ubuntu Server.
$ sudo apt-get install PAKETNAME
Installiert das Paket "PAKETNAME" inkl. aller Pakete, die für dieses Paket benötigt werden.
$ sudo apt-get dist-upgrade
Aktualisiert die installieren Pakete.

$ sudo apt-get autoremove
Deinstallation ungenutzter Abhängigkeiten.
$ sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
Sie können auch alle Befehle zusammen laufen lassen. Dazu werden diese mit "&&" verknüpft.

Mit dieser Befehlsfolge wird zunächst die lokale Paketdatenbank mit der zentralen Paketdatenbank abgeglichen. Danach werden ggf. alle relevanten Pakete auf den aktuellen Stand gebracht. Zuletzt werden die nicht mehr benötigten Pakete entfernt.

Nützliche Tools

Was man immer brauchen kann ist der MidnightCommander (mc) sowie zip und unzip.
$ sudo apt-get install mc zip unzip
installiert diese Tools in einem Rutsch.

Benötigte Basis-Pakete

Ferner installieren wir noch:
$ sudo apt-get install ghostscript
$ sudo apt-get install graphviz
$ sudo apt-get install antiword
$ sudo apt-get install git
$ sudo apt-get install libpq-dev
$ sudo apt-get install poppler-utils
$ sudo apt-get install curl
$ sudo apt-get install wget

PostgreSQL

Zunächst installiere ich immer die Postgres Datenbank, die als Basis für odoo dient.
$ sudo apt-get install postgresql
Falls Sie eine ältere Ubuntu Version verwenden, würde ich doch die neuste PostgreSQL Version empfehlen. Unter Ubuntu 12 wird nur die Version 9.1.x installiert.
$ echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install postgresql-9.3 postgresql-contrib-9.3

Python-Pakete für odoo

Programmiert wurde odoo mit Python 2.7.x, welche unter Linux bereits installiert ist und wichtige Aufgaben im Betriebssystem übernimmt.

Folgende Zusatzpakete müssen aber noch installiert werden. Sie könnte die Pakete auf einmal mittels Copy&Paste in die Shell einfügen:
$ sudo apt-get install python-dateutil python-pypdf python-requests
$ sudo apt-get install python-feedparser python-gdata python-ldap python-libxslt1
$ sudo apt-get install python-lxml python-mako python-openid python-psycopg2
$ sudo apt-get install python-pybabel python-pychart python-pydot python-pyparsing
$ sudo apt-get install python-reportlab python-simplejson python-tz python-vatnumber
$ sudo apt-get install python-vobject python-webdav python-werkzeug python-xlwt
$ sudo apt-get install python-yaml python-zsi python-docutils python-psutil
$ sudo apt-get install python-unittest2 python-mock python-jinja2 python-dev
$ sudo apt-get install python-pdftools python-decorator python-openssl python-babel
$ sudo apt-get install python-imaging python-reportlab-accel
$ sudo apt-get install python-paramiko python-software-properties
Alternativ kann man auch alle Pakete in einem Schwung installieren:
$ sudo apt-get install python-dateutil python-pypdf python-requests \
 python-feedparser python-gdata python-ldap python-libxslt1 \
 python-lxml python-mako python-openid python-psycopg2 \
 python-pybabel python-pychart python-pydot python-pyparsing \
 python-reportlab python-simplejson python-tz python-vatnumber \
 python-vobject python-webdav python-werkzeug python-xlwt \
 python-yaml python-zsi python-docutils python-psutil \
 python-unittest2 python-mock python-jinja2 python-dev \
 python-pdftools python-decorator python-openssl python-babel \
 python-imaging python-reportlab-accel \
 python-paramiko python-software-properties

Wenn Sie später das System komplett patchen und bereinigen wollen, reicht wie oben beschrieben folgende Zeile:
$ sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove

wkhtmltopdf

Ab Odoo v8 werden die Reports mittels der "QWEB" Template-Engine erzeugt. Für diese Reportvariante ist die Wandlung von HTML zu PDF notwendig. Dazu verwendet Odoo das Open Source Projekt http://wkhtmltopdf.org
Zwar können Sie das Modul auch mit apt-get installieren, nur bekommen Sie hier eine ältere Version, die nicht kompatibel zu Odoo v8 ist.
$ sudo apt-get install wkhtmltopdf
Deshalb können wir uns auch eine aktuellere Version direkt von der Projekt-Homepage (http://wkhtmltopdf.org) laden, entpacken und danach in den entsprechenden Ordner von Ubuntu installieren. Da wir als Server die 64Bit Version verwenden, laden wir auch das entsprechende Paket:
$ wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb

odoo-Benutzer anlegen und Datenbank-Passwort festlegen

Jetzt legen wir noch den Linux-User "odoo" an und legen das Homeverzeichnis für diesen Benutzer unter "/opt/odoo" fest. Hier werden wir auch odoo installieren.
$ sudo adduser odoo --home /opt/odoo
Adding user `odoo' ...
Adding new group `odoo' (1000) ...
Adding new user `odoo' (1000) with group `odoo' ...
Creating home directory `/opt/odoo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for odoo
Enter the new value, or press ENTER for the default
 Full Name []: 
 Room Number []: 
 Work Phone []: 
 Home Phone []: 
 Other []: 
Is the information correct? [Y/n] Y
Danach erstellen wir einen Postgres-User für odoo, setzen das Passwort für den User "odoo" und auch für den User "postgres"
root@xxx:/# cd ..
root@xxx:/# sudo -u postgres createuser -s odoo
root@xxx:/# sudo su postgres
postgres@xxx:/$ psql
psql (9.3.4)
Type "help" for help.
postgres=# \password odoo
Enter new password: 
Enter it again: 
postgres=# \password postgres
Enter new password: 
Enter it again: 
postgres=# \q
postgres@xxx:/$ exit
Wichtig: Notieren Sie sich die Passwörter!

Jetzt wechseln wir auf den Benutzer "odoo" und geben ihm "Superuser"-Rechte.
$ sudo su odoo
$ cd /opt/odoo

Bei dem Contabo VPS funktioniert das nicht richtig, da dort immer ein root-User existiert.
Deshalb gebe ich dem odoo-User die Rechte an dem Verzeichnis.

odoo-Quellcode holen

Odoo wird seit Mai 2014 mit der Quellcodeverwaltung "Github" verwaltet.
Im Folgenden holen wir uns aber die aktuellen Pakete für die Version 8 aus meiner eigenen Quellcode-Verwaltungsplattform "Bitbucket". Dort habe ich die "Phone Home"-Funktion deaktiviert, d.h. odoo fragt nicht dauernd ob man einen Wartungsvertrag abschließen will. Außer dem versuche ich auch Fehler in meinem Git-Paket zu entfernen, wo ich sie finde. Ich teste auch alle unsere Pakete gegen diese Version.

$ curl https://bitbucket.org/equitania-ondemand/odoo/get/master.zip -o odoo.zip
$ unzip odoo.zip
Nach dem entpackten hat das odoo-Verzeichnis den Branch-Namen:


Diesen benennen wir mit

$ sudo mv equitania-ondemand-odoo-b5ddb94cb835 odoo-server

um, wobei "b5ddb94cb835" sich mit jeder Änderung von odoo eine andere ID hat!

Wie oben erwähnt, gebe ich die Ordner-Rechte separat:
$ sudo chown -R odoo: odoo-server
$ exit
Bitte beachten Sie, dass dies in Abhängigkeit mit Ihrer Verbindungsgeschwindigkeit einige Zeit in Anspruch nehmen kann.

Natürlich könnte ich mir mittels git auch den kompletten Quellcode holen. Dies mache ich aber in der Regel nur auf Entwicklungsmaschinen.

Konfiguration anpassen


Zuerst kopieren wir uns die Konfiguration.
$ sudo cp /opt/odoo/odoo-server/debian/openerp-server.conf /etc/odoo-server.conf
Hinweis: Im Gegensatz zur Version 7 gibt es unter Version 8 diese Vorlage nicht mehr. Deshalb habe ich sie wieder in mein Repository ergänzt.

Mit dem Editor "nano" passen wir die Datei jetzt an:
$ sudo nano /etc/odoo-server.conf


Hinweis: Als Standard kann man mit dem Passwort "admin" Datenbank anlegen, duplizieren, löschen, backupen und restoren. Aus Sicherheitsgründen sollten Sie dieses Passwort von Anfang an ändern!


[options]
; Mit diesem Passwort greifen Sie auf die Datenbank zu:
; Passwort zum Datenbank anlegen wird in Datei "odoo-server/openerp/tools/config.py" definiert
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo-server/addons
;Log settings
logfile = /var/log/odoo/odoo-server.log
log_level = error



Nun geben wir dem Benutzer "odoo" alle Rechte an der Konfigurationsdatei.

$ sudo chown odoo:odoo /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Es folgt das anlegen des "Log"-Ordners und der entsprechenden Rechte.
$ sudo mkdir /var/log/odoo
$ sudo chown odoo:root /var/log/odoo
Zuletzt kopieren wir die "Logrotate"-Datei aus dem Ursprungsordner zum "/etc/logrotate.d"-Ordner
$ sudo cp /opt/odoo/odoo-server/debian/openerp.logrotate /etc/logrotate.d/odoo-server
$ chmod 755 /etc/logrotate.d/odoo-server

odoo Server zum ersten Mal starten

Den Server starten

$ sudo su odoo
$ cd /opt/odoo/odoo-server/
$ sudo ./openerp-server -c /etc/odoo-server.conf &
In meiner Contabo musste ich beim Start den Benutzer explizit angeben, da aus Sicherheitsgründen nicht mit dem root-Benutzer gestartet werden kann:
$ sudo -H -u odoo ./openerp-server -c /etc/odoo-server.conf &
Wenn Sie odoo im Browser aufrufen wollen, dann geben Sie http://IhreIP:8069 oder lokal mittels http://127.0.0.1:8069 ein.

Danach sollten Sie folgenden Bildschirmen sehen.





odoo Server automatisch starten

Nun erzeugen wir eine Init-Datei im Verzeichnis "/etc/init.d/" mit dem Namen "openerp-server"
$ sudo cp /opt/odoo/odoo-server/debian/openerp.init.d /etc/init.d/openerp-server
$ sudo nano /etc/init.d/openerp-server
Mit folgendem Inhalt:
#!/bin/sh
### BEGIN INIT INFO
# Provides: openerp-server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Enterprise Resource Management software
# Description: Open ERP is a complete ERP and CRM software.
### END INIT INFO
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/odoo/odoo-server/openerp-server
NAME=openerp-server
DESC=openerp-server
CONFIGFILE="/etc/odoo-server.conf"
LOGFILE=/var/log/odoo/odoo-server.log
USER=odoo
test -x ${DAEMON} || exit 0
set -e
do_start () {
    echo -n "Starting ${DESC}: "
    start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid --chuid ${USER} --background --make-pidfile --exec ${DAEMON} -- --config=${CONFIG} --logfile=${LOGFILE}
    echo "${NAME}."
}
do_stop () {
    echo -n "Stopping ${DESC}: "
    start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
    echo "${NAME}."
}
case "${1}" in
    start)
        do_start
        ;;
    stop)
        do_stop
        ;;
    restart|force-reload)
        echo -n "Restarting ${DESC}: "
        do_stop
        sleep 1
        do_start
        ;;
    *)
        N=/etc/init.d/${NAME}
        echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0
Diese machen wir nun ausführbar:
$ sudo chmod +x /etc/init.d/openerp-server
Jetzt fügen wir sie dem Betriebssystem in den Autostart hinzu:
$ sudo update-rc.d openerp-server defaults
Nun starten Sie den Server neu, um zu überprüfen, ob der odoo-Server automatisch startet.
$ sudo shutdown -r now
Nach dem Neustart sollten Sie den odoo-Server im Browser mit dessen IP-Adresse aufrufen können. http://Server-IP:8069

Geschafft!

Odoo Server starten/stoppen/restarten

Starten des odoo Servers:
$ sudo /etc/init.d/openerp-server start
Stoppen des odoo Servers:
$ sudo /etc/init.d/openerp-server stop
Neustart des odoo Servers:
$ sudo /etc/init.d/openerp-server restart

Kommentare:

  1. Super Sache, Danke. noch zwei Fragen:
    Kann man problemlos eine bestehende Installation (DB) von odoo 8.0rc1 auf ihre Version wechseln?
    Übernehmen sie alle updates von odoo Github in ihre Version und in welcher Frequenz?

    AntwortenLöschen
  2. Bitte verwendet jetzt die Skripte siehe http://www.software-insel.de/2014/11/odooopenerp-installieren-updaten.html

    AntwortenLöschen