Linux.wine: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 26: Zeile 26:
== cOrgaMon (Win32) 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 das 32 Bit Target erweitert werden muss (das ist nicht mehr default)


  #
  #

Version vom 5. Februar 2024, 14:45 Uhr

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
    • wineconsole
    • wine cmd

cOrgaMon (Win32) installieren

  • die 32 Bit Umgebung von Wine muss installiert werden, dazu kann es sein dass die ganze Distribution um das 32 Bit Target erweitert werden 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 Server 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

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