Installing on RedHat and CentOS (Manual)
If you decide installing Redhat, take in consideration you should have a licensed Redhat version, otherwise the repositories for installing software are locked.
Does not have much sense installing Redhat without a license subscription in the same direction does not have much sense enable CentOS repos in a Redhat, if this is your way better intalling CentOS at the begining.
Preliminaries
In case to configure OpenKM in a cluster mode, please before starting with the installation process read the sections:
Check disk size
$ df -h
Create a user named openkm
$ sudo adduser openkm
You can easily generate random passwords at https://www.random.org/passwords.
Check server configuration
$ wget -Nc smxi.org/inxi
$ sudo chmod +x inxi
$ sudo ./inxi -F
If it doesn't work, try installing this package:
$ sudo yum install pciutils
Increase ulimit
$ sudo vim /etc/security/limits.conf
add the following lines to the end of the file (before the line # End of file)
* soft nofile 6084
* hard nofile 6084
Execute ulimit -n and see the open files limits are now updated.
Checking Java version
$ java -version
If Java is correctly installed on your computer, the name and version of the Java virtual machine is displayed:
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
The Java version numeration name can be altered in order to be upgraded to major version.
Install Java
Perform these steps only if Java 8 is not already installed on your server.
$ sudo yum install java-1.8.0-openjdk-devel
The Java version may be different depending on your installed one, but we always recommend the lastest 1.8 release.
Set OpenJDK 1.8 as your default Java version
Perform this only if Java 8 is not your default Java version.
$ alternatives --config java
Installing database
Install MySQL if you do not have it already installed:
$ sudo yum install mysql-server mysql
Configure it as service:
$ sudo chkconfig --levels 235 mysqld on
On latest CentOS the MySQL package has been replaced in the repositories by MariaDB.
Install MariaDB:
$ sudo yum install mariadb-server
Configure as service:
$ sudo systemctl enable mariadb
Start database:
$ sudo systemctl start mariadb
If you get some trouble on the first database startup because it can not create files into tmp folder do:
Edit the /etc/selinux/config file:
$ sudo vim /etc/selinux/config
And apply this change to:
'SELINUX=disabled'
To take effect inmediatelly, execute from command line:
$ sudo setenforce 0
Change MySQL root password
Do it only If it's necessary to change the MySQL root password.
Method 1
$ /usr/bin/mysqladmin -u root -h localhost password 'password'
Method 2
$ sudo /etc/init.d/mysql stop
$ sudo mysqld --skip-grant-tables &
$ mysql -u root mysql
> UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root';
> FLUSH PRIVILEGES;
> exit;
In this case MySQL has not been started as a service. The process must be killed to stop MySQL and start it again as service.
Method 3
$ mysql
> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
> flush privileges;
Method 4
$ sudo /etc/init.d/mysql stop
$ mysqld_safe --skip-grant-tables &
$ mysql -u root mysql
> UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root';
> FLUSH PRIVILEGES;
> exit;
In this case MySQL has not been started as service. The process must be killed to stop MySQL and start it again as service.
More information at MySQL : Reseting permissions.
Check InnoDB is default MySQL engine
$ mysql -h localhost -u root -p
> show engines;
It should show something like this:
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
If it not default, modify /etc/mysql/my.cnf
$ vim /etc/mysql/my.cnf
and under [mysqld] add
default-storage-engine = innodb
After changing the default MySQL engine the MySQL service must be restarted to take effect.
Create database
CREATE DATABASE okmdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
CREATE USER openkm@localhost IDENTIFIED BY 'password';
GRANT ALL ON okmdb.* TO openkm@localhost WITH GRANT OPTION;
Installing Tomcat
$ cd /home/openkm
$ unzip Tomcat-7.0.61.zip
The tomcat version numeration name can be altered in order to be upgraded to major version.
Configuring Tomcat as a service
For security reasons you shouldn't run Tomcat as root. It is better to use the user named openkm.
Create a file with the script:
$ sudo vim /etc/init.d/tomcat
#!/bin/sh
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop Apache Tomcat
# Description: Enable Apache Tomcat service provided by daemon.
### END INIT INFO
ECHO=/bin/echo
TEST=/usr/bin/test
TOMCAT_USER=openkm
TOMCAT_HOME=/home/openkm/tomcat-7.0.61
TOMCAT_START_SCRIPT=$TOMCAT_HOME/bin/startup.sh
TOMCAT_STOP_SCRIPT=$TOMCAT_HOME/bin/shutdown.sh
$TEST -x $TOMCAT_START_SCRIPT || exit 0
$TEST -x $TOMCAT_STOP_SCRIPT || exit 0
start() {
$ECHO -n "Starting Tomcat"
su - $TOMCAT_USER -c "$TOMCAT_START_SCRIPT &"
$ECHO "."
}
stop() {
$ECHO -n "Stopping Tomcat"
su - $TOMCAT_USER -c "$TOMCAT_STOP_SCRIPT 60 -force &"
while [ "$(ps -fu $TOMCAT_USER | grep java | grep tomcat | wc -l)" -gt "0" ]; do
sleep 5; $ECHO -n "."
done
$ECHO "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 30
start
;;
*)
$ECHO "Usage: tomcat {start|stop|restart}"
exit 1
esac
exit 0
The script must be changed if you use other user to start the service or your $TOMCAT_HOME is not /home/openkm/tomcat-7.0.61
Make it executable:
$ sudo chmod 755 /etc/init.d/tomcat
Update the run-levels:
$ sudo chkconfig tomcat --level 2345 on
Check the service
Start the service:
$ sudo service tomcat start
Stop the service:
$ sudo service tomcat stop
Installing OpenKM
With tomcat stopped copy the OpenKM.war file into /home/openkm/tomcat-7.0.61/webapps
$ cp OpenKM.war /home/openkm/tomcat-7.0.61/webapps
Installing thirdparty software
Software | Required | Description |
---|---|---|
OpenOffice or LibreOffice |
Yes |
Check these packages are present:
Execute this command line to check the installed packages: $ rpm -qa | grep openoffice Take the names of the packages as an orientation. If headless package is not installed OpenKM will not be able to start soffice service. |
Tesseract |
No |
Some useful links: |
ClamAV |
No |
Some useful links: |
Imagemagick |
Yes |
$ yum install ImageMagick |
GhostScript |
Yes |
$ yum install ghostscript |
Htop |
no |
Download from http://pkgs.repoforge.org/htop/ $ rpm -ivH htop-1.0.3-1.el6.rf.x86_64.rpm |
Start application
Check OpenKM.cfg parameters
$ vim /home/openkm/tomcat-7.0.61/OpenKM.cfg
Your configuration should be something like this:
# OpenKM Hibernate configuration values
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.hbm2ddl=create
Ensure hibernate.dialect=org.hibernate.dialect.MySQL5Dialect is enabled if your database is MySQL
First time application start:
$ service tomcat start
To check if the startup process can execute the command:
$ tail -f /home/openkm/tomcat-7.0.61/log/catalina.log
When the application is started you'll see in log file the lines:
2015-07-04 18:28:10,680 [main] INFO org.apache.coyote.http11.Http11Protocol - Starting ProtocolHandler ["http-bio-0.0.0.0-8080"]
2015-07-04 18:28:10,688 [main] INFO org.apache.coyote.ajp.AjpProtocol - Starting ProtocolHandler ["ajp-bio-127.0.0.1-8009"]
2015-07-04 18:28:10,692 [main] INFO org.apache.catalina.startup.Catalina - Server startup in 41456 ms
The application will be accessible at http://YOUR_IP:8080/OpenKM by user:okmAdmin with password:admin. ( Do not forget to change it !). For more information please check: Manage users and roles.
Configure the default extensions:
Go to Administration > Utilities > Database query and execute:
INSERT INTO OKM_EXTENSION (EXT_UUID, EXT_NAME) VALUES ('808e7a42-2e73-470c-ba23-e4c9d5c3a0f4', 'Live Edit');
INSERT INTO OKM_EXTENSION (EXT_UUID, EXT_NAME) VALUES ('58392af6-2131-413b-b188-1851aa7b651c', 'HTML Editor 4');
INSERT INTO OKM_PROFILE_MSC_EXTENSION (PEX_ID, PEX_EXTENSION) VALUES (1, '808e7a42-2e73-470c-ba23-e4c9d5c3a0f4');
INSERT INTO OKM_PROFILE_MSC_EXTENSION (PEX_ID, PEX_EXTENSION) VALUES (1, '58392af6-2131-413b-b188-1851aa7b651c');
Linux Oracle 7.X Throubleshooting
The libreoffice and tesseract tools are not into the default repositories, you cal follow the steps described in the URL below for installing them:
Install libreoffice from RPM
You should download the last RPM file version, what might be found at https://www.libreoffice.org/download/download/?type=rpm-x86&version=6.0.4&lang=en
The process description below has been described at https://www.tecmint.com/install-libreoffice-on-rhel-centos-fedora-debian-ubuntu-linux-mint/
Libreoffice at the end will be installed into the folder /opt/libreoffice6.0
$ yum remove openoffice* libreoffice*
$ cd /opt
$ wget https://www.libreoffice.org/donate/dl/rpm-x86_64/6.0.4/es/LibreOffice_6.0.4_Linux_x86-64_rpm.tar.gz
$ tar -xvf LibreOffice_6.0.4_Linux_x86-64_rpm.tar.gz
$ cd LibreOffice_6.0.4_Linux_x86-64_rpm/RPMS
$ yum localinstall *.rpm
Install Tesseract
The script below has been found from https://github.com/EisenVault/install-tesseract-redhat-centos/ we suggest take a look at the last version of the script in the github project for updates.
Before executing the script, review it, consider to apply changes about downloading the dictionaries you need, for example for spanish dictionary should be download https://github.com/tesseract-ocr/tessdata/raw/3.04.00/spa.traineddata what is not present in the script by default.
#!/bin/sh
cd /opt
yum -y update
yum -y install libstdc++ autoconf automake libtool autoconf-archive pkg-config gcc gcc-c++ make libjpeg-devel libpng-devel libtiff-devel zlib-devel
#Install AutoConf-Archive
wget ftp://mirror.switch.ch/pool/4/mirror/epel/7/ppc64/a/autoconf-archive-2016.09.16-1.el7.noarch.rpm
rpm -i autoconf-archive-2016.09.16-1.el7.noarch.rpm
#Install Leptonica from Source
wget http://www.leptonica.com/source/leptonica-1.75.3.tar.gz
tar -zxvf leptonica-1.75.3.tar.gz
cd leptonica-1.75.3
./autobuild
./configure
make
make install
cd ..
#!/bin/sh
#Install Tesseract from Source
wget https://github.com/tesseract-ocr/tesseract/archive/3.05.01.tar.gz
tar -zxvf 3.05.01.tar.gz
cd tesseract-3.05.01
./autogen.sh
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig LIBLEPT_HEADERSDIR=/usr/local/include ./configure --with-extra-includes=/usr/local/include --with-extra-libraries=/usr/local/lib
LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" make
make install
ldconfig
cd ..
#Download and install tesseract language files
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/ben.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/eng.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/tha.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/osd.traineddata
mv *.traineddata /usr/local/share/tessdata
#Download Hindi Cube data
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.bigrams
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.fold
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.lm
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.nn
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.params
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.cube.word-freq
wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/hin.tesseract_cube.nn
mv hin.* /usr/local/share/tessdata
ln -s /opt/tesseract-3.05.01 /opt/tesseract-latest
Other common additional setup configurations
OpenKM comes with a lot of configuration parameters we suggest taking a look at: Recommended configuration parameters.