cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Install CCOM in Linux

JoergAldinger
Active Contributor
0 Kudos
765

Hello all,

I wonder if anybody has tried to install CCOM in a Linux OS?

Since the two main prerequisites are a DB system and a Tomcat Server, that should be theoretically possible, unless there are some windows/dll dependencies somewhere...

Best regards,

Joerg.

Accepted Solutions (1)

Accepted Solutions (1)

bikash_bansal
Product and Topic Expert
Product and Topic Expert

Hello joerg.ceo,

This is now officially supported from release 2.0 FP09. Many of our customers use SAP Customer Checkout manager on linux.
This came a bit later hence it was not mentioned in our Whats New presentation and youtube videos.
https://www.youtube.com/watch?v=VyLRWZaKWLA


Detailed Documentation
https://help.sap.com/viewer/8f711df7d2aa4f1aa29f88c86cef2081/2.0.9/en-US/fa5d957a0dd6444a9992b78758f...


SAP PAM screenshot


If your question in answered correctly, kindly select the answer as "Right Answer". This helps others to follow and easily locate answers.


Regards,
Bikash Bansal
Product Owner - SAP Customer Checkout

JoergAldinger
Active Contributor
0 Kudos

Thank you Bikash.

I checked the Guide_CCO_Server_EN.pdf delivered with 2.0 FP09 PL04 and the system requirements there still mention Windows only. So you may want to include a review of that documentation in the next update, although the PAM is actually referenced.

Thanks and all the best!

Joerg.

Answers (3)

Answers (3)

R_Zieschang
Contributor
0 Kudos

Dear joerg.ceo

we use manual installation of tomcat. I know the downsides are, you have to update manually etc. But on the other hand, you have more control over the path structure, where tomcat is running and furthermore it is an ease to have multiple ccoms running on the same metal. So e.g. having a test/staging ccom running on port 9090 and a prod ccom on 8080.

So these are the steps we used:

cd ~
wget http://www.us.apache.org/dist/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz (check if the link still works)

After that determine which id has the "nobody" group:

cat /etc/group | grep nobody

Next we add a user for the tomcat with the home directory and we also forbid that this user can logon into the shell for security reasons.

useradd -g 65533 -s /sbin/nologin -d /home/tomcat tomcat

Now we extract the tomcat package into a prod and dev folder and change the owner of these directories recursively to the tomcat user.

tar -zxvf apache-tomcat-8.5.38.tar.gz -C /home/tomcat
mv /home/tomcat/apache-tomcat-8.5.38/ /home/tomcat/tomcat-dev
 
tar -zxvf apache-tomcat-8.5.38.tar.gz -C /home/tomcat
mv /home/tomcat/apache-tomcat-8.5.38/ /home/tomcat/tomcat-prod
 
chown -R tomcat:nobody /home/tomcat/

You should now have to folders /home/tomcat/tomcat-dev and /home/tomcat/tomcat-prod.

Configure the test tomcat to listen on port 9090

vi /home/tomcat/tomcat-dev/conf/server.xml

Change Ports 8005 -> 9005, 8080 -> 9090, 8009 -> 9009

<Server port="8005" shutdown="SHUTDOWN">
...

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Exiting vi is the tricky part. 😉

Adding the tomcats to the systemd so that suse starts both tomcats while startup.

vi /usr/lib/systemd/system/tomcat-prod.service

vi /usr/lib/systemd/system/tomcat-dev.service

tomcat-prod.service (change paths according to your installation -> Java_Home etc):

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
 
[Service]
Type=forking
# Root folder of Tomcat prod
WorkingDirectory=/home/tomcat/tomcat-prod/
 
Environment=JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/
Environment=CATALINA_PID=/home/tomcat-prod/temp/tomcat.pid
Environment=CATALINA_HOME=/home/tomcat/tomcat-prod/
Environment=CATALINE_BASE=/home/tomcat/tomcat-prod/
Environment='CATALINE_OPTS=-Xms128M -Xmx4096M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.haedless=true -Djava.security.egd=file:/dev/./urandom -DCONFIG_FILE_PATH=/home/tomcat/tomcat-prod/ccom-prod -DFILE_STORAGE_PATH=/home/tomcat/tomcat-prod/ccom-prod Dapp.home=/home/tomcat/tomcat-prod/ccom-prod/cco'
 
ExecStart=/home/tomcat/tomcat-prod/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
 
User=tomcat
Group=nobody
 
[Install]
WantedBy=multi-user.target

tomcat-dev.service (change paths accordingly)

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
 
[Service]
Type=forking
# Root folder of tomcat dev
WorkingDirectory=/home/tomcat/tomcat-dev/
 
Environment=JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/
Environment=CATALINA_PID=/home/tomcat-dev/temp/tomcat.pid
Environment=CATALINA_HOME=/home/tomcat/tomcat-dev/
Environment=CATALINE_BASE=/home/tomcat/tomcat-dev/
Environment='CATALINE_OPTS=-Xms128M -Xmx4096M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.haedless=true -Djava.security.egd=file:/dev/./urandom -DCONFIG_FILE_PATH=/home/tomcat/tomcat-dev/ccom-dev -DFILE_STORAGE_PATH=/home/tomcat/tomcat-dev/ccom-dev -Dapp.home=/home/tomcat/tomcat-dev/ccom-dev/cco'
 
ExecStart=/home/tomcat/tomcat-dev/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
 
User=tomcat
Group=nobody
 
[Install]
WantedBy=multi-user.target

In the JAVA_OPTS we defined the config folder where ccom should store it's config files etc. so we need to create them:

mkdir /home/tomcat/tomcat-dev/ccom-dev
mkdir /home/tomcat/tomcat-prod/ccom-prod
chown -R tomcat:nobody /home/tomcat/tomcat-dev/ccom-dev
chown -R tomcat:nobody /home/tomcat/tomcat-prod/ccom-prod

Now enable the systemd scripts:

systemctl enable tomcat-prod.service
systemctl enable tomcat-dev.service

Now you should be able to start both tomcat instances up and check for their status:

systemctl start tomcat-prod.service
systemctl start tomcat-dev.servicesystemctl status tomcat-prod.service
systemctl status tomcat-dev.service

After all this you can deploy your ccom war file into the webapp folder of both tomcats and after some short minutes you can access your ccom via http://[ip-of-your-linux-beast]:8080/ccos or ttp://[ip-of-your-linux-beast]:9090/ccos.

# Assuming your ccos.war is in ~/Downloads
cp ~/Downloads/ccos.war /home/tomcat/tomcat-prod/webapps/

hth

Robert

P.S.: It is even possible to have this setup running on a raspberry pi. 😉

JoergAldinger
Active Contributor
0 Kudos

Extremely detailed, thanks! It confirms what I thought regarding the tomcat version, but it kind of contradicts the instructions published on the help site, since you won't get tomcat 8.5 using YaST.

Before removing Tomcat 9 though, I will check for different configurations and see if I can get it to work. Since we can now use multi-tenant functionality, I may not need different instances at all.

What database have you used to run CCOM on Linux so far? HANA, SQL, Derby? All of them?

Thanks and best regards,

Joerg.

R_Zieschang
Contributor
0 Kudos

Hi joerg.ceo ,

we also had one installation with tomcat 9 but this was just a presentation/prototype installation so no experience with prod use so far.

Just use another link with the wget command to download tomcat 9, the rest of hte instructions also applies to this version. We had no issues so far. Maybe the tomcat logs can make it more clear what the problem with your system is.

Mostly HANA running on the same machine.

Regards

Robert

R_Zieschang
Contributor
0 Kudos

Hi joerg.ceo ,

I did some installations on linux machines. Drop me a line if you need any help.

Regards

Robert

JoergAldinger
Active Contributor
0 Kudos

Hi Robert!

Here are the steps I took so far using a clean (azure-optimized) SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit) image:

sudo su -
cd /home/cco
wget --http-user=S001683**** --http-password='****' --output-document=/usr/bin/SAPCAR 'https://origin.softwaredownloads.sap.com/tokengen/?file=0020000000662062020'
wget --http-user=S00168**** --http-password='****' --output-document=/home/cco/SAPJVM8_63-80000202.SAR 'https://softwaredownloads.sap.com/file/0020000000636562020'
wget --http-user=S00168**** --http-password='****' --output-document=/home/cco/SAPCUSCHKSVR09_4-70001339.ZIP 'https://origin.softwaredownloads.sap.com/tokengen/?file=0020000000821372020'
chmod +x /usr/bin/SAPCAR
SAPCAR -xvf SAPJVM8_63-80000202.SAR
mkdir /usr/lib64/jvm/
mv sapjvm_8 /usr/lib64/jvm/
zypper in tomcat

vi /usr/share/tomcat/conf/tomcat.conf
# uncomment and define: 
# JAVA_HOME="/usr/lib64/jvm/sapjvm_8"

unzip SAPCUSCHKSVR09_4-70001339.ZIP
cp ccos.war /srv/tomcat/webapps/
chown tomcat:tomcat /srv/tomcat/webapps/ccos.war
mkdir /SAP
chown tomcat:tomcat /SAP
service tomcat start

After those, when opening http://servername:8080/ccos/ I get the following response:

I will do some digging into the log files today, since yesterday the time before curfew ran out, but my suspicion is that the culprit is the Tomcat version here. The version installed by zypper is 9.0.35-4.30.2, and I know that this should be 8.5+, but Yast/zypper only offer the latest version which is 9.0. Am I right in that assumption? What version of Tomcat did you use?

Thanks in advance!

Joerg.

bikash_bansal
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hello,

The documentation will be updated with PL05 of FP09.
Best Regards,
Bikash