Linux.wine
cOrgaMon (XMLRPC-Server des OrgaMon) kann mit Hilfe von wine unter Linux ausgeführt werden. Der Betrieb ist identisch problemlos wie unter Windows, mit dem Vorteil dass man sich so manch Windows-VM sparen kann.
Wine Installation
OpenSuse
zypper install p11-kit-32bit wine
Debian
- dpkg --add-architecture i386
- apt update
- apt install wine32
Option 1: Grafische Benutzeroberfläche vorhanden
- In einer grafischen Oberfläche einmalig
-> System -> Configure Wine
starten- dies installiert Mono (ist für den cOrgaMon aber nicht nötig) ...
- dies legt das .wine Verzeichnis an ...
- Ein Umkonfiguration abseits der Defaults ist nicht nötig.
Option 2: Nur Terminal
- In der reinen Console für folgender Befehl zum Anlegen der Verzeichnisse und setzen der Defaults
winecfg
wineconsole
wine cmd
cOrgaMon (Win32) installieren
- die 32 Bit Umgebung von Wine muss installiert werden, dazu kann es sein dass die ganze Distribution um die 32 Bit Architektur erweitern muss (das ist nicht mehr default)
# # Install 7zip # cd ~/.wine/drive_c wget https://www.7-zip.org/a/7z2201-x64.exe wine 7z2201-x64.exe /S # # Install cOrgaMon # mkdir "/root/.wine/drive_c/Program Files (x86)/OrgaMon/" cd "/root/.wine/drive_c/Program Files (x86)/OrgaMon/" wget https://cargobay.orgamon.org/cOrgaMon-Wine-8695.zip unzip -o cOrgaMon-Wine-8695.zip # # Install SystemD-Services # mv .service /etc/systemd/system # # Install OrgaMon.ini # mkdir ~/Documents/OrgaMon/ cd ~/Documents/OrgaMon/ joe OrgaMon.ini
# # OrgaMon.ini # Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id # wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben. # # via systemctl lässt sicher der ~Id~ nach dem "@" angeben # [~Id~] DataBaseName=N:\Mandanten\Huber\dat\
lOrgaMon (Win64) installieren
- lOrgaMon.exe läuft in einer wine-7.0 Win64 Umgebung
- Verwenden Sie die aktuelle Version von https://cargobay.orgamon.org/lOrgaMon-Wine.html
# # Install 7zip # cd ~/.wine/drive_c wget https://www.7-zip.org/a/7z2201-x64.exe wine 7z2201-x64.exe /S # # Install lOrgaMon # mkdir "/root/.wine/drive_c/Program Files/OrgaMon/" cd "/root/.wine/drive_c/Program Files/OrgaMon/" wget https://cargobay.orgamon.org/lOrgaMon-Wine-8xxx.zip unzip -o lOrgaMon-Wine-8xxx.zip wine vccrt8_x64.msi /S # # Install OrgaMon.ini # mkdir ~/Documents/OrgaMon/ cd ~/Documents/OrgaMon/ joe OrgaMon.ini # # OrgaMon.ini # Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id # wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben. # # via systemctl lässt sicher der ~Id~ nach dem "@" angeben # [~Id~] DataBaseName=N:\Mandanten\Huber\dat\
Laufwerke
- Zum Betrieb der XLMRPC-Server cOrgaMon/lOrgaMon ist immer ein Windows-Laufwerk nötig
- Dieses muss man wine bekannt machen, dazu werden Verzeichnisse mit mount oder bind mount zur Verfügung gestellt
H:\ (Beispiel)
cd ~/.wine md drive_h # Nur wenn man gleich mal mounten will: # mount //server/share drive_h cd dosdevices ln -s ../drive_h h:
- UNC Pfade funktionieren nicht einfach so, hier muss man unter
dosdevices/unc
den host UND den share-Namen als Unterverzeichnisse erstellen
cd ~/.wine cd dosdevices mkdir unc cd unc mkdir host cd host ln -s /srv/firebird firebird
systemd.mount
Beispiel 1
- joe /etc/systemd/system/root-.wine-drive_i.mount
[Unit] Description=root-.wine-drive_i Requires=network-online.target After=network-online.target [Mount] What=//server/share Where=/root/.wine/drive_i Type=cifs Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777 [Install] WantedBy=remote-fs.target
Beispiel 2
- joe /etc/systemd/system/srv-ftp.mount
[Unit] Description=srv-ftp Wants=nss-lookup.target After=nss-lookup.target [Mount] What=//server/web Where=/srv/ftp Type=cifs Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777 [Install] WantedBy=remote-fs.target
Beispiel 3
- Wenn obige Methode nicht funktioniert muss man mit einem Bind-Mount arbeiten
- locales Verzeichnis mit "bind"
- Geht aber auch, Beispiel
root-.wine-drive_i.mount
[Unit] Description=root-.wine-drive_i After=srv-smb-ra6.mount Requires=srv-smb-ra6.mount [Mount] What=/srv/smb/ra6/i Where=/root/.wine/drive_i Type=none Options=bind [Install] WantedBy=remote-fs.target
cOrgaMon.exe Start als systemd.service
systemd bietet die Möglichkeit für beliebig viele Instanzen nur eine Konfigurations-Datei zu führen. Die ganze Infrastruktur mit Start und Stop und Enable kann benutzt werden. Also mit
- systemctl start cOrgaMon@3049
startet man eine cOrgaMon-Instanz mit dem Port 3049.
- joe /etc/systemd/system/cOrgaMon\@.service
# # systemd Rulez for the cOrgaMon Service # # (c) 2015 Andreas Filsinger # [Unit] Description=cOrgaMon XMLRPC-Server After=multi-user.target Requires=root-.wine-drive_i.mount [Service] SyslogIdentifier=cOrgaMon UMask=000 Environment="WINEDEBUG=-all" "LANG=de_DE.UTF-8" ExecStart=/usr/bin/wine "C:\\Program Files (x86)\\OrgaMon\\cOrgaMon.exe" "--app" "--Id=%i" KillSignal=SIGKILL TimeoutStopSec=5 [Install] WantedBy=multi-user.target
- Starte dann mehrere Instanzen:
- systemctl start cOrgaMon@3000
- systemctl start cOrgaMon@3001
- systemctl start cOrgaMon@3002
- systemctl start cOrgaMon@3003
lOrgaMon/cOrgaMon für Tagwache/Tagesabschluss
- In System kann definiert werden "was" einzelne Hosts im Rahmen eines Tagesabschlusses/Tagwache tun sollen, es lassen sich einzelne Aktionen ausschließen
# # Host EDORAS soll z.B. nur den Artikelindex neu erstellen # TagesabschlussAusschluss@EDORAS=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28 # # ein Cron-Job kann nun Artikelindex neu erstellen, Alle anderes Hosts # die einen Tagesabschluss machen sollten um diesen Punkt entlastet werden # (auch durch Ausschluss-Option) # wine lOrgaMon.exe --tagesabschluss --Id=~Id~
Update
systemctl stop cOrgaMonApp@... systemctl stop cOrgaMonFoto@... cd "~/.wine/drive_c/Program Files (x86)/OrgaMon" wget https://cargobay.orgamon.org/cOrgaMon-Wine-8644.zip unzip -o cOrgaMon-Wine-8644.zip systemctl start cOrgaMonApp@... systemctl start cOrgaMonFoto@...
Diagnose
# # Welche Ports werden verwendet? # lsof -P | grep cOrgaMon | grep TCP # # Welche Dienste laufen? # systemctl status | grep cOrgaMon.exe