Linux.wine: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
 
(38 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
cOrgaMon.exe, lOrgaMon.exe 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 ==
== Wine Installation ==


=== OpenSuse ===
* <code>zypper install p11-kit-32bit wine</code>
* <code>zypper install p11-kit-32bit wine</code>
=== Debian ===
* dpkg --add-architecture i386
* apt update
* apt install wine32
=== Option 1: Grafische Benutzeroberfläche vorhanden ===
* In einer grafischen Oberfläche einmalig <code>-> System -> Configure Wine</code> starten
* In einer grafischen Oberfläche einmalig <code>-> System -> Configure Wine</code> starten
** dies installiert Mono ...
** dies installiert Mono (ist für den cOrgaMon aber nicht nötig) ...
** dies legt das .wine Verzeichnis an ...
** dies legt das .wine Verzeichnis an ...
** Ein Umkonfiguration abseits der Defaults ist nicht nötig.
** 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
* In der reinen Console für folgender Befehl zum Anlegen der Verzeichnisse und setzen der Defaults
** <code>winecfg</code>
** <code>wineconsole</code>
** <code>wineconsole</code>
** <code>wine cmd</code>


== cOrgaMon installieren ==
== cOrgaMon (Win32) installieren ==


=== über Konsole (empfohlen) ===
* 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)


  #
  #
Zeile 19: Zeile 33:
  #
  #
  cd ~/.wine/drive_c
  cd ~/.wine/drive_c
  wget https://www.7-zip.org/a/7z1900-x64.exe
  wget https://www.7-zip.org/a/7z2201-x64.exe
  wine 7z1900-x64.exe /S
  wine 7z2201-x64.exe /S
   
   
  #
  #
Zeile 27: Zeile 41:
  mkdir "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
  mkdir "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
  cd "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
  cd "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
  wget https://cargobay.orgamon.org/cOrgaMon-wine.zip
  wget https://cargobay.orgamon.org/cOrgaMon-Wine-8695.zip
  unzip cOrgaMon-wine
  unzip -o cOrgaMon-Wine-8695.zip
   
   
  #
  #
  # Install SystemD-Services
  # Install SystemD-Services
  #
  #
  mv systemd/* /etc/systemd/system
  mv .service /etc/systemd/system
   
   
  #
  #
Zeile 45: Zeile 59:
  #
  #
  # 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
  #
  #
  [Sektion]
  [~Id~]
  DataBaseName=N:\Mandanten\Huber\dat\
  DataBaseName=N:\Mandanten\Huber\dat\


=== über die grafische Benutzeroberfläche ===
== lOrgaMon (Win64) installieren ==


* cd .wine/drive_c
* lOrgaMon.exe läuft in einer wine-7.0 Win64 Umgebung
* <code><b>wget https://www.7-zip.org/a/7z1900-x64.exe</b></code>
* Verwenden Sie die aktuelle Version von https://cargobay.orgamon.org/lOrgaMon-Wine.html
* <code><b>wine 7z1900-x64.exe /S</b></code> installieren
 
* wget https://cargobay.orgamon.org/Setup-Firebird-Client-OrgaMon-2.5.2.26415.exe
#
* wine Setup-Firebird-Client-OrgaMon-2.5.2.26415.exe
# Install 7zip
* wget https://cargobay.orgamon.org/Setup-OrgaMon-8404-Update.exe
#
* wine Setup-OrgaMon-8404-Update.exe
cd ~/.wine/drive_c
** Lizenz akzeptieren, oder nicht
wget https://www.7-zip.org/a/7z2201-x64.exe
** [ ] Starte OrgaMon deaktivieren
wine 7z2201-x64.exe /S
* cd ../../Documents/OrgaMon
* joe OrgaMon.ini
#
# 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 ==
== Laufwerke ==


* Zum Betrieb der Server ist immer ein Windows-Laufwerk nötig
* 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
* Dieses muss man wine bekannt machen, dazu werden Verzeichnisse mit mount oder bind mount zur Verfügung gestellt


Zeile 76: Zeile 118:
  cd dosdevices
  cd dosdevices
  ln -s ../drive_h h:
  ln -s ../drive_h h:
=== \\host\share (Beispiel) ===
* UNC Pfade funktionieren nicht einfach so, hier muss man unter <code>dosdevices/unc</code> den <b>host</b> UND den <b>share</b>-Namen als Unterverzeichnisse erstellen
cd ~/.wine
cd dosdevices
mkdir unc
cd unc
mkdir host
cd host
ln -s /srv/firebird firebird


=== systemd.mount ===
=== systemd.mount ===
Zeile 85: Zeile 139:
  [Unit]
  [Unit]
  Description=root-.wine-drive_i
  Description=root-.wine-drive_i
  Requires=network-online.target smb.service
  Requires=network-online.target
  After=network-online.target smb.service
  After=network-online.target
    
    
  [Mount]
  [Mount]
Zeile 115: Zeile 169:
  WantedBy=remote-fs.target
  WantedBy=remote-fs.target


=== locales Verzeichnis mit "bind" ===
==== Beispiel 3 ====


* Wenn obige Methode nicht funktioniert muss man mit einem Bind-Mount arbeiten
* Wenn obige Methode nicht funktioniert muss man mit einem Bind-Mount arbeiten
* locales Verzeichnis mit "bind"
* Geht aber auch, Beispiel <code>root-.wine-drive_i.mount</code>
* Geht aber auch, Beispiel <code>root-.wine-drive_i.mount</code>


Zeile 155: Zeile 210:
   
   
  [Service]
  [Service]
SyslogIdentifier=cOrgaMon
  UMask=000
  UMask=000
  Environment="WINEDEBUG=-all" "LANG=de_DE.UTF-8"
  Environment="WINEDEBUG=-all" "LANG=de_DE.UTF-8"
  ExecStart=/usr/bin/wine "C:\\Program Files (x86)\\OrgaMon\\cOrgaMon.exe" "--app" "--Id=%i"
  ExecStart=/usr/bin/wine "C:\\Program Files (x86)\\OrgaMon\\cOrgaMon.exe" "--app" "--Id=%i"
KillSignal=SIGKILL
TimeoutStopSec=5
   
   
  [Install]
  [Install]
Zeile 167: Zeile 225:
** systemctl start cOrgaMon@3002
** systemctl start cOrgaMon@3002
** systemctl start cOrgaMon@3003
** systemctl start cOrgaMon@3003
== lOrgaMon/cOrgaMon für Tagwache/Tagesabschluss ==
* In <code>System</code> 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 auf EDORAS 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 ==
== Update ==
* Per AutoUp, das Projekt "cOrgaMon-Wine" wird auf https://cargobay.orgamon.org/ das neueste cOrgaMon zur Verfügung gestellt
* Ein Update wird durchgeführt durch
** Stop der Dienste
** Download der neuesten Version
** Überschreiben aller alten Dateien im Ausführungsverzeichnis
** Start der Dienste


  systemctl stop cOrgaMonApp@...
  systemctl stop cOrgaMonApp@...
  systemctl stop cOrgaMonFoto@...
  systemctl stop cOrgaMonFoto@...
  cd .wine/drive_c
  cd "~/.wine/drive_c/Program Files (x86)/OrgaMon"
  wget http://cargobay.orgamon.de/Setup-OrgaMon-8195-Update.exe
  wget https://cargobay.orgamon.org/cOrgaMon-Wine-8644.zip
  wine Setup-OrgaMon-8195-Update.exe /VERYSILENT /NORESTARTAPPLICATIONS
  unzip -o cOrgaMon-Wine-8644.zip
  systemctl start cOrgaMonApp@...
  systemctl start cOrgaMonApp@...
  systemctl start cOrgaMonFoto@...
  systemctl start cOrgaMonFoto@...
Zeile 181: Zeile 262:


  #
  #
  # Weclhe Ports werden verwendet
  # Welche Ports werden verwendet?
  #  
  #  
  lsof -P | grep cOrgaMon | grep TCP
  lsof -P | grep cOrgaMon | grep TCP
   
   
  #
  #
  # Welche Dienste laufen
  # Welche Dienste laufen?
  #
  #
  systemctl status | grep cOrgaMon.exe
  systemctl status | grep cOrgaMon.exe

Aktuelle Version vom 7. Oktober 2024, 14:36 Uhr

cOrgaMon.exe, lOrgaMon.exe 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

#
# 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:

\\host\share (Beispiel)

  • 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 auf EDORAS 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

  • Per AutoUp, das Projekt "cOrgaMon-Wine" wird auf https://cargobay.orgamon.org/ das neueste cOrgaMon zur Verfügung gestellt
  • Ein Update wird durchgeführt durch
    • Stop der Dienste
    • Download der neuesten Version
    • Überschreiben aller alten Dateien im Ausführungsverzeichnis
    • Start der Dienste
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