WSL Windows subsystem for Linux
No edit summary
No edit summary
Line 6: Line 6:
  wget <nowiki>https://packages.microsoft.com/config/ubuntu/22.04/packages-microso</nowiki> ft-prod.deb -O packages-microsoft-prod.deb
  wget <nowiki>https://packages.microsoft.com/config/ubuntu/22.04/packages-microso</nowiki> ft-prod.deb -O packages-microsoft-prod.deb
  sudo dpkg -i packages-microsoft-prod.deb
  sudo dpkg -i packages-microsoft-prod.deb
You then install .net core (we use .net core 5.0):
Then, install .net core (we use .net core 5.0):
  sudo apt-get update; \   
  sudo apt-get update; \   
   sudo apt-get install -y apt-transport-https && \
   sudo apt-get install -y apt-transport-https && \
Line 13: Line 13:
This is a good overview: https://weblog.west-wind.com/posts/2017/apr/13/running-net-core-apps-under-windows-subsystem-for-linux-bash-for-windows
This is a good overview: https://weblog.west-wind.com/posts/2017/apr/13/running-net-core-apps-under-windows-subsystem-for-linux-bash-for-windows


Remember that your c disk is found here  /mnt/c/
Remember that your c disk is found here: /mnt/c/


====== WSL2 ======
====== WSL2 ======
Line 32: Line 32:
# All backslashes in filepaths are replaced with Path.DirectorySeparatorChar
# All backslashes in filepaths are replaced with Path.DirectorySeparatorChar
# CompactCE connection reads registry and fails on WSL
# CompactCE connection reads registry and fails on WSL
# Model checksum is built on modelcontent with a stringbuilder that uses \r\n on windows and \n on Linux - causing checksum diff
# Model checksum is built on modelcontent with a stringbuilder that uses \r\n on Windows and \n on Linux - causing checksum diff
# Issues with localhost cert force all tests to be done over HTTP
# Issues with localhost cert force all tests to be done over HTTP
# Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdrivenserverport" - if found we use it over HTTP.
# Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdrivenserverport" - if found, we use it over HTTP.


====== Issues on Turnkey: ======
====== Issues on Turnkey: ======
# Path.DirectorySeparatorChar
# Path.DirectorySeparatorChar
# Issues with sending parameters via WSL2-VS-Start ; workaround: program checks for environmentvariable "mdriventurnkeyport" - if found we use it over HTTP
# Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdriventurnkeyport" - if found, we use it over HTTP.


=== Deploy on Linux ===
=== Deploy on Linux ===
Line 45: Line 45:
Dlls are platform independent - but exe's are not: https://docs.microsoft.com/en-us/dotnet/core/deploying/ - this leads to a separate publish being needed to get the Linux distribution:
Dlls are platform independent - but exe's are not: https://docs.microsoft.com/en-us/dotnet/core/deploying/ - this leads to a separate publish being needed to get the Linux distribution:
  dotnet publish -r linux-x64 --self-contained false
  dotnet publish -r linux-x64 --self-contained false
You can download the Linux distributions from here:
You can download the Linux distributions from here: [https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux__ https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux_]<version>.zip.
 
[https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux__ https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux_]<version>.zip.


The current version is found here: https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml
The current version is found here: https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml
Line 55: Line 53:
The current version is found here: [https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml https://mdriven.net/PublicDownloads/MDrivenTurnkeyOnCoreVersion.xml]
The current version is found here: [https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml https://mdriven.net/PublicDownloads/MDrivenTurnkeyOnCoreVersion.xml]


You download the server-zips as described above. In these 2 zips, you will find StreaminAppCoreWebApp.dll (TurnkeyServer as dll), and AppCompleteGenericCore.dll (MDrivenServer as dll).
Download the server-zips as described above. In these 2 zips, you will find StreaminAppCoreWebApp.dll (TurnkeyServer as dll), and AppCompleteGenericCore.dll (MDrivenServer as dll).


Expand the zips to your desired locations on Linux - in two different directories.
Expand the zips to your desired locations on Linux - in two different directories.


====== Starting on Linux ======
====== Starting on Linux ======
To start the applications, you need to install at least dotnet core 3.1 on your Linux machine.
To start the applications, install at least dotnet core 3.1 on your Linux machine.


Configure [https://wiki.mdriven.net/index.php/MDrivenServerOverride MDrivenServerOverride] to set the address and port to MDriven Server.
Configure [https://wiki.mdriven.net/index.php/MDrivenServerOverride MDrivenServerOverride] to set the address and port to MDriven Server.
Line 69: Line 67:
  dotnet StreaminAppCoreWebApp.dll -port=5011 -nohttps
  dotnet StreaminAppCoreWebApp.dll -port=5011 -nohttps
[[File:2021-05-18 15h34 54.png|none|thumb|626x626px]]
[[File:2021-05-18 15h34 54.png|none|thumb|626x626px]]
After starting, you can navigate to the MDrivenServer by using the chosen URL - you can log in with user "a" and password "123456".
After starting, navigate to the MDrivenServer by using the chosen URL - log in with user "a" and password "123456".


The MDrivenServer does not yet have a model - you [[Upload model in MDrivenDesigner|upload a model with MDrivenDesigner]]. After this step, you can run the application in the MDrivenTurnkey.
The MDrivenServer does not yet have a model - [[Upload model in MDrivenDesigner|upload a model with MDrivenDesigner]]. After this step, you can run the application in the MDrivenTurnkey.


=== Tips and Tricks ===
=== Tips and Tricks ===
Line 79: Line 77:
  sudo ln -s libgdiplus.so gdiplus.dll
  sudo ln -s libgdiplus.so gdiplus.dll
  [[Category:MDriven Turnkey]]
  [[Category:MDriven Turnkey]]
  [[Category:MDriven Server]]
  [[Category:MDriven Server]]

Revision as of 06:31, 7 July 2023

To get started with Linux, you may use WSL. WSL is the Windows SubSystem for Linux that is built into Windows 10.

Make sure you have the feature on; Turn Windows features on or off -> Windows Subsystem for Linux

Once you have it on, you need a Linux install; we use Ubuntu (22.04 at the time of writing).

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microso ft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Then, install .net core (we use .net core 5.0):

sudo apt-get update; \  
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0

This is a good overview: https://weblog.west-wind.com/posts/2017/apr/13/running-net-core-apps-under-windows-subsystem-for-linux-bash-for-windows

Remember that your c disk is found here: /mnt/c/

WSL2

WSL2 offers better interaction between Visual Studio and WSL. Read more here: https://docs.microsoft.com/en-us/visualstudio/debugger/debug-dotnet-core-in-wsl-2?view=vs-2019

Had to install the “.Net Core Debugging with WSL 2” component in Visual Studio Installer (Visual Studio Edition->Modify->Individual Components->.Net Core Debugging with WSL 2

Build MDrivenServer

You need to register a Nuget package source to find the VistaDB packages not available on the Nuget site - this is only needed once:

sudo dotnet nuget add source /mnt/c/capableobjectswush/Xternal/VistaDB --name  XternatVistaDB    

Build the sln, navigate to the directory, then:

sudo dotnet build

To start the MDrivenServer project, navigate to the directory:

sudo dotnet run -port=5001 -nohttps -host=ip/domain
What issues have been identified on MDrivenServer:
  1. CompactCE is a Windows-only embedded database - we are looking to replace it with a license version of VistaDB. If file App_Data/UseVistaDBIfThisFileExists.xml exists, we will now use VistaDB instead of CompactCE.
  2. All backslashes in filepaths are replaced with Path.DirectorySeparatorChar
  3. CompactCE connection reads registry and fails on WSL
  4. Model checksum is built on modelcontent with a stringbuilder that uses \r\n on Windows and \n on Linux - causing checksum diff
  5. Issues with localhost cert force all tests to be done over HTTP
  6. Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdrivenserverport" - if found, we use it over HTTP.
Issues on Turnkey:
  1. Path.DirectorySeparatorChar
  2. Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdriventurnkeyport" - if found, we use it over HTTP.

Deploy on Linux

The deployment on Linux works much the same as described in the LocalServers description. The reason is that Linux and LocalServers both use the same .net core editions of MDrivenTurnkey and MDrivenServer.

Dlls are platform independent - but exe's are not: https://docs.microsoft.com/en-us/dotnet/core/deploying/ - this leads to a separate publish being needed to get the Linux distribution:

dotnet publish -r linux-x64 --self-contained false

You can download the Linux distributions from here: https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux_<version>.zip.

The current version is found here: https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml

https://mdriven.net/PublicDownloads/MDrivenTurnkeyCoreLinux_<version>.zip.

The current version is found here: https://mdriven.net/PublicDownloads/MDrivenTurnkeyOnCoreVersion.xml

Download the server-zips as described above. In these 2 zips, you will find StreaminAppCoreWebApp.dll (TurnkeyServer as dll), and AppCompleteGenericCore.dll (MDrivenServer as dll).

Expand the zips to your desired locations on Linux - in two different directories.

Starting on Linux

To start the applications, install at least dotnet core 3.1 on your Linux machine.

Configure MDrivenServerOverride to set the address and port to MDriven Server.

Start the applications - MDrivenServer first - by navigating to the directory of the app and:

dotnet AppCompleteGenericCore.dll -port=5010 -nohttps

Then, navigate to the TurnkeyApp directory and:

dotnet StreaminAppCoreWebApp.dll -port=5011 -nohttps
2021-05-18 15h34 54.png

After starting, navigate to the MDrivenServer by using the chosen URL - log in with user "a" and password "123456".

The MDrivenServer does not yet have a model - upload a model with MDrivenDesigner. After this step, you can run the application in the MDrivenTurnkey.

Tips and Tricks

This is no Linux-expert-wiki - but I noticed that the WorkInfo page of MDrivenServer ran into problems while creating bitmaps. It turned out that there was some graphics lib missing on the server - the following fixed it:

sudo apt-get install libgdiplus 
cd /usr/lib 
sudo ln -s libgdiplus.so gdiplus.dll
This page was edited 45 days ago on 03/26/2024. What links here