Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
AndyS
Explorer

1 Introduction


This blog post shows how to setup a SAP Content Server 6.50 in combination with Docker.

On Linux an Apache Server provides the components for the http(s) communication. Details on SAP Content Server API can be found in SAP Help.

By default, a MaxDB is normally used as storage for the documents and it's automatically installed during the provided standard setup.

But there is also the possibility to store documents in file system, which makes backup and recovery from content much easier.

For the operation with filesystem you don't need the complete standard installation, only a few binaries from SAP Softwarecenter.

2 Main Part


2.1 Prerequisites



  • Linux OS (e.g. Ubuntu on WLS2) with Docker Container runtime.

  • Valid S-User for access to SAP Softwarecenter


Information how to get WLS2 running on your windows environment can be found here:
https://docs.microsoft.com/de-de/windows/wsl/install-win10

2.2 Download Files from Softwarecenter


Open URL https://launchpad.support.sap.com/#/softwarecenter

2.2.1 Content Server Binaries


Search for "SAP Content Server" within Downloads.




  1. Choose SAP CONTENT SERVER 6.50 - Maintenance Software Component.

  2. Select LINUX ON X86_64 64BIT Operating System.

  3. Download CONTSERVE650SP10_0-10013599.SAR (or a different SP version) file.


2.2.2 SAPCAR Utility


Search for "SAPCAR" within Downloads.




  1. Choose SAPCAR 7.21 - Maintenance Software Component.

  2. Select LINUX ON X86_64 64BITOperating System.

  3. Download SAPCAR_1320-80000935.EXE (or a different SP version) file.


2.3 Prepare Download


Create (or change to) a directory containing your docker images and create a sub-folder for the content to build the docker image.


Create a sub-folder for the content of the downloaded binaries.


Copy the downloaded files into that directory. On WLS2 this can be done with cp command.
cp /mnt/c/Users/<WindowsUser>/Downloads/SAPCAR_1320-80000935.EXE .
cp /mnt/c/Users/<WindowsUser>/Downloads/CONTSERVE650SP10_0-10013599.SAR .

( don't forget the dot at the end of the command. )

Extract SAR image.
./SAPCAR_1320-80000935.EXE -xvf CONTSERVE650SP10_0-10013599.SAR

Change to parent directory.



2.4 Repository Folder


Create repository root directory and sub-directory for the repository named REPO1.


Enable writing.
sudo chmod -R a+w RepRoot

Check attributes.



2.5 Content Server Configuration - cs.conf


Create the SAP Content Server configuration file.
Details about the configuration file can be found here.


Content of cs.conf
[ContentServer]
TraceLevel=warning
AdminSecurity=0
AdminSecurityGroup=sapsys
ContRepRoot=/usr/local/apache2/RepRoot
PSEDir=/usr/local/apache2/RepRoot
StorageDriver=FSStorage

[contRep-REPO1]
Storage=FileSystemStorage. dll
Security=0
ContRepDescription=Demo Content Repository

( Exit VIM with ESC and :wq )

2.6 Dockerfile


Create Dockerfile and open VIM.


Content of Dockerfile
FROM httpd:2.2
COPY ./cs.conf /usr/local/apache2/
#COPY ./httpd.conf /usr/local/apache2/conf
COPY ./download/*.so /usr/local/apache2/modules/
RUN chmod a+x /usr/local/apache2/modules/*
RUN mkdir /usr/local/apache2/RepRoot

2.7 Build Docker Image


docker build -t sapcs-650 .

( don't forget the dot at the end of the command. )

2.8 Apache Configuration - httpd.conf


Run Docker Image
docker run -dit --rm --name my-sapcs-650 -p 1090:80 sapcs-650:latest

Copy httpd.conf from docker image to host.
docker cp my-sapcs-650:/usr/local/apache2/conf/httpd.conf .

( don't forget the dot at the end of the command. )

Stop docker container.
docker stop my-sapcs-650

Adapt httpd.conf file


Part to be inserted
LoadModule sapcs_module modules/mod_sapcs22.so
<IfModule mod_sapcs.cpp>
AddModuleInfo sapcs "SAP Content Server (C) SAP AG 1998,2003"
CSConfigPath /usr/local/apache2/cs.conf

<Location /sapcs>
SetHandler sapcs_module
Allow from all
</Location>

<Location /ContentServer/ContentServer.dll>
SetHandler sapcs_module
Allow from all
</Location>

<Location /contentserver/contentserver.dll>
SetHandler sapcs_module
Allow from all
</Location>
</IfModule>

Insert position



2.9 Include httpd.conf into Dockerfile


Start VIM with Dockerfile


Remove comment in order to use your customized httpd.conf file.



2.10 docker-compose.yml


Create docker-compose.yml file and start VIM.


Content of docker-compose.yml
version: "3.8"
services:
version-650:
build: .
ports:
- "1090:80"
volumes:
- type: bind
source: ./RepRoot
target: /usr/local/apache2/RepRoot

2.11 Start Content Server


Start container.
docker-compose up -d



2.12 Test Content Server


2.12.1 Get ServerInfo


Open browser with URL.
http://localhost:1090/ContentServer/ContentServer.dll?serverInfo

You should see something similar to this.



2.12.2 Store and Receive demo.txt


Prepare a demo.txt File


Upload File

Use Postman or a similar tool to create a PUT request.
http://localhost:1090/ContentServer/ContentServer.dll?create&pVersion=0046&contRep=REPO1&docId=4B768... 


Download File

Use Postman, a similar tool or a browser to create a GET request.
http://localhost:1090/ContentServer/ContentServer.dll?get&http://localhost:1090/ContentServer/Conten...



2.12.3 Check REPO1 Folder



Note: The content of demo.txt can't be viewed directly on the file system, because it's encoded as each stored document.

2.13 Stop Content Server


Stop the running container.
docker-compose down

3 Conclusion


As you have seen, using Docker to set up an apache2 server on linux is quite easy. And with proper preconfigured configuration files it's not a big deal for an SAP Content Server either.

Also backup and restore of the content within the REPO1 folder is compared to MaxDB unsophisticated.

The Docker Image as shown here is suitable for test purposes and POCs w/o high security requirements. Additional security settings must be taken into account in productive operation.







1 Comment
Labels in this area