A customer of mine wants to integrate harbour code for his ERP into an online shop - with mod_harbour or modharbour.exe as fastcgi service.
At the moment, we want to use a Windows Server 2019 installation. Our main goal is to circumvent to rewrite all the code in PHP.
Unfortunately, installation out of the box works only with Apache and mod_harbour on Windows Server 2019, but mod_harbour is very slow. On our testserver we get response time around 700ms just with a simple "Hello World" script.
- Installing modharbour as fastcgi service has errors on Windows and Linux Debian (see below)
- On IIS installing neither mod_harbour as an IIS module or as a fastcgi handler works.
Since mod_harbour as a module is slow, how can I setup mod_harbour as a fastcgi handler or as a proxy-fastcgi-Service in Windows Server 2019?
My Installation tries:
Windows Server 2019
As IIS module:
mod_harbour.dll
- "mod_harbour error:C:\Windows\TEMP\libharbour.1028.950 The modul was not found."
With FastCGI:
modharbour.exe - call with double click:
- "The code execution cannot proceed because ace64.dll was not found."
- -> copy ace32.dll from "mod_harbour/ads/Program Files 64/Advantage 9.0/Server" to directory with modharbour.exe:
- "The ordinal number 521 was not found in the DLL modharbour.exe" (but in the renamed "ace64.dll" there is an ordinal number 521)
modharbour.exe - registering as fastcgi handler in IIS is resulting in undefinied 500 errors (guess the problem is also the missing dependencies).
modharbour.exe: Inspection via software "Dependencies" (https://github.com/lucasg/Dependencies):- "C:\Windows\system32\WS2_32.dll module has missing imports"
- "ace64.dll could not be found on disk"
- "C:\Windows\system32\OLEAUT32.dll module has missing imports"
Debian 9 Stretch (for comparison Linux/Windows)
modharbour via Apache module mod_harbour.so:
- Error: mod_harbour version Jul 14 2020, 14:33:26/tmp/libharbour.507655936.916993992: cannot open shared object file: No such file or directory, failed to load hb_apache()
I symlinked ln -sf ~/mod_harbour/linux/libharbour.so.3.2.0 libharbour.so.3.2.0 in different directories:
- var/www/html
- var/www
- var/customers (with froxlor as admin tool)
- var/curtomers/webs (with froxlor as admin tool)
No success, always the above error occurs.
Debian: modharbour via fcgi:
Following the steps described in readme.md in "mod_harbour/fastcgi/linux" results in a oviously missing libcurl.so-File.
- The Apache error_log says: "/usr/bin/modharbour: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by /usr/bin/modharbour)"
Inspection of the dependencies of modharbour ("ldd modharbour") I get the following result:
./modharbour: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by ./modharbour)
- linux-vdso.so.1 (0x00007fff01b85000)
- libfcgi.so.0 => /usr/lib/libfcgi.so.0 (0x00007f6b7134c000)
- libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f6b70746000)
- libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f6b704da000)
- libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f6b7003f000)
- libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6b6fd3b000)
- libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6b6fb1e000)
- libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6b6f91a000)
- librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f6b6f712000)
- libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6b6f373000)
- /lib64/ld-linux-x86-64.so.2 (0x00007f6b71143000)
- libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f6b6f14d000)
- libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f6b6ef00000)
- librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f6b6ece3000)
- libssh2.so.1 => /usr/lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f6b6eab6000)
- libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f6b6e8a8000)
- libssl.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 (0x00007f6b6e63f000)
- libcrypto.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 (0x00007f6b6e1d8000)
- libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f6b6df8d000)
- libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f6b6dcb3000)
- libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f6b6da80000)
- libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f6b6d87c000)
- liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f6b6d66d000)
- libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f6b6d41c000)
- libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6b6d202000)
- libunistring.so.0 => /usr/lib/x86_64-linux-gnu/libunistring.so.0 (0x00007f6b6ceeb000)
- libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f6b6cb52000)
- libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f6b6c91d000)
- libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f6b6c6e6000)
- libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f6b6c463000)
- libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f6b6c153000)
- libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f6b6bf47000)
- libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f6b6bd43000)
- libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f6b6bb2c000)
- libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f6b6b911000)
- libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f6b6b6ac000)
- libidn.so.11 => /lib/x86_64-linux-gnu/libidn.so.11 (0x00007f6b6b478000)
- libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f6b6b265000)
- libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f6b6b051000)
- libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f6b6ae48000)
The files in /usr/lib/x86_64-linux-gnu are/
- libcurl.so -> symlink to libcurl.so.4.4.0
- libcurl.so.3 -> symlink to libcurl.so.4
- libcurl.so.4 -> symlink to libcurl.so.4.4.0
- libcurl.so.4.4.0
- libcurl-gnutls.so.3 -> symlink to libcurl-gnutls.so.4
- libcurl-gnutls.so.4 -> symlink to libcurl-gnutls.so.4.4.0
- libcurl-gnutls.so.4.4.0
Perhaps someone can give me some hints solving this problems?
Regards
Christoph