These are instructions for flex.bi Enterprise 6.0 and later. For earlier version please contact flex.bi support.
On this page:
System Requirements
Information about system requirements for flex.bi Enterprise installation can be found here: Requirements.
Our default setup
We have chosen Linux CentOS 8 as our default server platform and MySQL/MariaDB as a database engine, so these instruction apply for this specific setup.
However, flex.bi Enterprise can also be installed on older CentOS, Redhat versions as well as other distributions of Linux, by adjusting the available software, it's versions and installation methods. For example using rpm
or apt-get
or yum
instead of dnf
or PostgreSQP
instead of MySQL
.
Versions mentioned here are current as of 2021.03.24 - they might of course change in the future.
Software Installation
The following are instructions for flex.bi Enterprise and the required software installation on Centos 8 operating system.
Java installation
Run the following command to install Java JDK 11:
sudo dnf install java-11-openjdk-devel
Run the following command, to test if the result matches the version you installed
java -version
Install MySQL server
The CentOS 8 AppStream repository only contain MySQL 8.0 packages, so, to install MySQL 5.7, we need to do some prep-work.
Disable MySQL default AppStream repository.
sudo yum install mariadb-server
Create a new repository file..
sudo vi /etc/yum.repos.d/mysql-community.repo
Create a new repository file..
sudo vi /etc/yum.repos.d/mysql-community.repo
Paste the following dat into the new repo file.
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=0 [mysql-connectors-community] name=MySQL Connectors Community baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/ enabled=1 gpgcheck=0 [mysql-tools-community] name=MySQL Tools Community baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/ enabled=1 gpgcheck=0
Disable MySQL 8 repository.
sudo vi /etc/yum.repos.d/mysql-community.repo
Enable repository for MySQL 5.7.
sudo dnf config-manager --enable mysql57-community
Install MySQL 5.7.
sudo dnf install mysql-community-server
flex.bi Enterprise installation
For security reasons we recommend creating dedicated
flexbi
user. Run the following command to achieve that:sudo useradd flexbi
Move the flex.bi Enterprise installation
.zip
archive file to/home/flexbi
directory on your server.Run the following command to unzip the
.zip
archive file (file name in the example can differ from the actual file depending on the software version):unzip flexbi_private_6.0.zip
After the unzip process finishes, you should have a new
/home/flexbi/flexbi_private
directory containing the following folders:app bin config examples lib log public spec tmp
Run the following commands, to ensure that the flex.bi folder and its contents are owned by the user flexbi:
chown -R flexbi:flexbi flexbi_private
MySQL connector installation
- Download the MySQL JDBC driver version 5.1.
Move the downloaded
.zip
archive to/home/flexbi
directory on your server and then run the following command to unzip the archive (file name in the example can differ from the actual file depending on the software version):unzip mysql-connector-java-5.1.49.zip
Copy the
.jar
file from the newly created folder to the/home/flexbi/flexbi_private/lib
directory (if it doesn't exist, create it). Run the following command to achieve that (file name in the example can differ from the actual name depending on the software version):cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar flexbi_private/lib/
Setup and configuration
MySQL Server configuration
If you have large amount of records, we suggest to adjust the database engine performance by editing
/etc/my.conf
file using appropriate values.
The following is an example of a good performance configuration that you can insert under the [mysqld]
part of the configuration file:innodb_buffer_pool_size = 1024M innodb_log_file_size = 256M query_cache_size= 16M query_cache_type = 1 max_connections = 200
If you change the log file size after starting the MySQL server, you have to delete
id_logfile0
andid_logfile1
file from/var/lib/mysql
directory.Adjust the
innodb_buffer_pool_size
to a level that you can actually afford on your server, taking into account Java and other application memory needRun the following command to start MySQL Server and ensure that it will be automatically started during server startup:
systemctl enable --now mysqld
Run the following command, to get the automatically generated MySQL Server
root
user password:sudo grep 'A temporary password' /var/log/mysqld.log |tail -1
- Make note of the password shown on screen.
Start MySQL Secure Installation to change the
root
password, Disallow root login remotely, remove anonymous users and remove test database.sudo mysql_secure_installation
Connect to MySQL Database as
root
user, using the new password.mysql -u root -p
Run the following commands, to create a flex.bi user named
flexbi_private
: (Exchangesecret
with the actual password you want to use.)CREATE USER 'flexbi_private'@'localhost' IDENTIFIED BY 'secret'; GRANT ALL PRIVILEGES ON `flexbi_private%`.* TO 'flexbi_private'@'%' IDENTIFIED BY 'secret'; FLUSH PRIVILEGES;
flex.bi Enterprise configuration
- Configure the eazybi.toml file:
Run the following command, to copy the eazybi.toml.sample file in the /config folder to a new file named eazybi.toml:
cp eazybi.toml.sample eazybi.toml
In a text editor of your choice, open the newly created eazybi.toml file and make the necessary configurations:
- Licence parameters
- Change the name to the organisation name (it must be exactly the same as the name that you sent it to flex.bi, because the enabler is tied to this name)
- Change the name to the organisation name (it must be exactly the same as the name that you sent it to flex.bi, because the enabler is tied to this name)
- General parameters, for example, specify:
- If you wish to allow users to register themselves or only invite them
- If you would like to allow public accounts or not etc.
- Default URL parameters
- Specify host and port that you will use to access flex.bi, for example, bi.company.com:8080
- Specify host and port that you will use to access flex.bi, for example, bi.company.com:8080
Mailer parameters
You can set up the name and address used for outgoing e-mails from this private instance, for example, like this:
[mailer] from = "My private flex.bi <flexbi@mydomain.com>"
In the code example above, you should use your dedicated e-mail address instead of flexbi@mydomain.com.
SMTP parameters
Specify your SMTP server parameters, in order to be able to send invitations, dashboards and error messages
- Licence parameters
Add a systemd initialization script for flex.bi server:
Create a new file named flexbi.service in the /etc/systemd/system directory using a text editor or copy the provided example file from the flex.bi server package folder bin/systemd. Configure the file like this (adjust the configuration to your particular case):
# Sample init script for flex.bi [Unit] Description=flex.bi reporting service After=syslog.target network.target [Service] Type=simple # Run the service as this user and group User=flexbi Group=flexbi TimeoutSec=30 # Remember to change /home/flexbi/flexbi_private to the actual home directory of flex.bi in all places WorkingDirectory=/home/flexbi/flexbi_private Environment="RAILS_ENV=production" Environment="EAZYBI_HOME=/home/flexbi/flexbi_private" Environment="EAZYBI_PREFIX=/flexbi" Environment="RUBYOPT=-W0" # Adjust to available memory Environment="JAVA_OPTS=-Xmx1024m -Xms256m -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dorg.eclipse.jetty.LEVEL=OFF -Djava.io.tmpdir=/home/flexbi/flexbi_private/tmp" # Default configuration ExecStart=/usr/bin/java $JAVA_OPTS -Dwarbler.host=localhost -Dwarbler.port=8080 -jar flexbi_private.jar Restart=on-failure StandardOutput=syslog StandardError=syslog SyslogIdentifier=flexbi #LimitNOFILE=10000 [Install] WantedBy=multi-user.target
Check and adjust the necessary parameters, such as user, group and working directory, in the example, as they can differ from your setup.
If you have changed the configuration after the flex.bi service has been started, run the following code:
systemctl daemon-reload
If you don't use any proxy web server to route web requests to flex.bi, you need to enable public access, because by default flex.bi will answer requests only from localhost. In order to do that, in the flexbi.service file, add a comment symbol (#) before this line:
ExecStart=/usr/bin/java $JAVA_OPTS "${JAVA_TMPDIR}" -jar flexbi_private.jar -e production "$@"
and remove the comment symbol (#) from this line:
# ExecStart=/usr/bin/java $JAVA_OPTS "${JAVA_TMPDIR}" -jar flexbi_private.jar -e production -b 0.0.0.0 "$@"
-
Run the following command to ensure flex.bi service is started during system startup:
systemctl enable flexbi.service
Firewall
- Open the port 8080 in your firewall to allow remote access to the flex.bi server:
Run the following command to open the port 8080:
firewall-cmd --permanent --add-port=8080/tcp
Run the following command to reload the firewall:
firewall-cmd --reload
Run the following command to check if the port is open:
firewall-cmd --list-ports
Google Chrome
If you have installed and configured PhantomJS for previous flex.bi enterprise versions then remove PhantomJS settings from the eazybi.toml file by deleting the following lines:
[phantomjs]location = "..."
Run the following command to enable Google YUM repository:
cat << EOF > /etc/yum.repos.d/google-chrome.repo [google-chrome] name=google-chrome - \$basearch baseurl=http://dl.google.com/linux/chrome/rpm/stable/\$basearch enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub EOF
Run the following command to install the package:
yum install google-chrome-stable
After you have installed Google Chrome, please restart flex.bi enterprise. During the startup, flex.bi will detect installed Google Chrome and will start to use it for PDF exports.
For additional information regarding Google Chrome installation please see Google Chrome installation instructions.
We recommend to set up a web server running as reverse proxy to have SSL support for you site. For more information and instructions see this setup manual.
Make sure there is enough (and any for that matter) swap space available and set the swappiness setting to 1. See this manual for CentOS.
Run the flex.bi server
Finally, now you can start the flex.bi service using this code:
systemctl start flexbi
Configure the database connection in the wizard that should open once you connect for the first time using the database parameters from above.
There are many tutorials on how to use systemd out there, such as this one from Digital Ocean.
Troubleshooting
In case of any issues, inspect the log files and contact our support.