Technical Articles
Run SAP Customer Checkout on Linux
Hello everybody!
It has been a while now that I have wanted to try to run CCO on Linux. So I finally came around to give it a go. Here is what I did and the result.
- Installed SUSE Linux Enterprise Desktop 15 SP2 (but I guess any Linux distro would be equally fine).
I installed it on Hyper-V since I had that at hand. I assigned 4GB RAM and 20GB hard disk space and otherwise went with all the defaults. I went with the “minimal desktop experience”, that does not include office applications or a whole lot of other bells and whistles. - Ran Firefox to download Google Chrome and set that as the new default
- Downloaded SAPMachine JRE 11 and installed that to /usr/lib64:
wget https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.8/sapmachine-jre-11.0.8_linux-x64_bin.tar.gz tar -xvf sapmachine-jre-11.0.8_linux-x64_bin.tar.gz sudo mv sapmachine-jre-11.0.8 /usr/lib64
- Downloaded CCO 2.0 FP10 PL00 on my Windows machine, prepared the “update file” like I normally would for upload to CCOM (PowerShell):
$downloaded_file = "SAPCUSCHK10_0-70001338.ZIP"; $shortname = $downloaded_file.Split('-')[0]; Expand-Archive $downloaded_file -DestinationPath $shortname; & 'C:\Program Files\WinRAR\WinRAR.exe' x ".\$shortname\SapCustomerCheckout_2_0.exe" ($shortname + '_extracted\') | Out-Null; Compress-Archive -Path ($shortname + '_extracted\CustomerCheckout\*') -DestinationPath ($shortname + '.zip'); Remove-Item ($shortname) -Force -Recurse; Remove-Item ($shortname + '_extracted\') -Force -Recurse;
- Moved the resulting file to my Linux machine and uncompressed to /SAPCustomerCheckout:
sudo mkdir /SAPCustomerCheckout sudo chown joerg. /SAPCustomerCheckout unzip SAPCUSCHK10_0.zip -d /SAPCustomerCheckout
- Finally, with all the files in place, I ran the application (command based on run.bat and adapted to Linux environment):
/usr/lib64/sapmachine-jre-11.0.8/bin/java -client -Xms128m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxMetaspaceSize=256m -Djava.util.logging.config.file="/SAPCustomerCheckout/cco/conf/logging.properties" -Dlog4j.configuration="file:/SAPCustomerCheckout/cco/conf/log4j.properties" -Dredeploy=false -DupdateDone=false -Dfile.encoding=UTF-8 -Dapp.home="/SAPCustomerCheckout/" -Djava.library.path=/SAPCustomerCheckout/cco/lib -Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger -cp "/SAPCustomerCheckout/cco/lib/*;/SAPCustomerCheckout/ENV.jar;/SAPCustomerCheckout/cco/POSPlugins/Translations;" -splash:splash.png -javaagent:ENV.jar com.sap.scco.env.Runner
And the result is:
CCO-on-SUSE-Linux
I hope this post inspires a few people to try this exercise and to take a look at a couple of the error messages produced in the console (yes, there are a couple, but I haven’t seen any “critical”). Maybe even migrate the “run.bat” to a fully-fledged “run.sh” on Linux.
And maybe, just maybe, the CCO team might even decide to support Linux officially in the future. Or at least publish their MacOS installation steps, which I know exist, so we can compare them to these… 🙂
Comments are welcome!
Best regards,
Joerg.
So, I fixed one of the error messages in the terminal by linking the "incorrect" directory to the "correct" directory. There seems to be a missing (back-)slash in the code that causes this, or the parsing of paths is different on Linux:
Regards,
Joerg.
Thanks for sharing Joerg Aldinger
So I followed the same process on a SUSE Linux Enterprise Server 15 SP2 in Azure and then published the application using an nginx reverse proxy. It basically works, but I haven't tried a lot of operations.
Here's the result, CCO running from a linux based cloud server in tablet mode: