A Guide to FME Server on Linux

Richard Mosley
Richard Mosley
  • Updated

FME Version

  • FME 2022.2

Introduction

The speed and price point of Linux installations make it an enticing option for an FME Server Installation. This article will go over considerations when planning an installation on a Linux operating system. Having a good understanding of Linux is helpful, but a less experienced Linux user can have FME Server up and running easily. This is a hands-on guide, designed to help you plan and install FMEServer so it can work well in your organization.

 

Format Integrations

Linux FME has a few unsupported formats and even fewer transformers, but the vast majority of both are supported on Linux. In most cases, if there is not a 3rd party dependency then the format or transformer will be available on both Windows and Linux installations. The most common of these unsupported formats are ArcGIS formats, which include SDE Geodatabases and access to Arcpy Python libraries. There are several ways customers handle ArcGIS integration on Linux Installations.

 

Distribute Engine Installation

FME Server allows you to have a complete FME Server installation on a Linux machine and then add another windows machine to that installation for a distributed engine installation that can be used to process the Geodatabase SDE and other ArcGIS-dependent formats. This way you can have the Linux side handle the other workflows that may require more memory and CPU and then route only the ArcGIS jobs to the distributed Engine.
 

Use ArcGIS Online / Portal

You can still have the automated capabilities of FME when you host your data on ArcGIS online. Beyond ArcGIS Online and ArcGIS Portal Readers we have several custom transformers designed for ArcGIS Online Integration that allow you to get more out of your data. 

 

Use an ArcGIS format supported on Linux (File Geodatabase, Shapefile) 

Some formats are still supported on Linux installations the Shapefile reader has recently undergone a speed overhaul, however, the API File Geodatabase reader lacks some of the advanced features such as relationship table integration. 
 

Pre Installation Considerations

File-Based Data Storage

Before you install FME Server in a Linux environment it's important to decide where you are going to put your data. If you are storing your data in a file share there are a couple of options.

  • Use cloud storage like an s3 Bucket. This will allow you to set the same location for your data on both Windows desktops and Linux alike. 
  • Mount a file share to the Linux Machine and set it up as an FME Server Network Resource. For examples on mounting and adding network resources, please see our Linux Mounting article.

 

Python

Custom python interpreters are not supported on a Linux Server. However, adding custom modules into FME’s python interpreter is simple and flexible.
 

Desktop Compatibility

Workspaces can be authored on a Windows, Mac, or Linux machine and run the same on Linux. There are very few formats and transformers that are not supported on Linux. The normal considerations do apply though when publishing, and it's important to make sure the paths to data are accessible from the FME Server machine. You can of course upload data at run time, but uploading data can be time-consuming and lead to a congested server, so it's not recommended for every process.
 

Installation and Upgrade

FME Server Linux installations have a few more considerations than typical Windows installations, however, installation can be simple and fast on default environments.
  

2022 Changes

Starting in 2022, FME has included an NGINX reverse proxy in front of the FME Server Web Application server. This allows users to select privileged ports under 1024 without having to worry about giving the web application root permissions. Leading to consistent permissions for logs and files across the installation. Secondly, it allows for easier SSL configuration. Lastly, NGINX can provide more security.  This component is not mandatory and if you want to disable or uninstall Nginx you can. See “Disabling FME Servers NGINX reverse proxy in favor of your own ” for a method for removing Nginx and reconfiguring tomcat. 
 

Linux FME Server Checklists

This article goes through a number of checklists to help with the Online, Offline, and distributed Installations.

 

Uninstalling

On Linux, uninstalling removes the configuration of the below components but does not uninstall them. They are reconfigured when FME Server is reinstalled. If you want to use the more current version of these components, remove them completely, and update the system packages before re-installing:

  •  The PostgreSQL FME Server Database, if applicable
  •  The NGINX reverse proxy


In these cases, after a reinstall, you may be prompted to use port 81 instead of 80. You can however choose port 80 despite the warning and it will reconfigure the NGINX to use that or any port set.

Similarly, the Postgres database will not be removed with the Uninstall. If you choose to keep the database and do not manually remove it, the installer will use an existing install of Postgres (as long as it has been installed from the system package), regardless of the version.
 

Customization 

Changing the FME Server user account running the Server services

There are instances, especially in Distributed installations where data is hosted in multiple machines and you might have a specific account created to access data across a network. 

You might also want to manage this user account with your enterprise IAM and would like it to be a domain account instead of a local account. We can achieve this by changing the account that runs the FME Server services. The default service account on Linux is the “fme server” account. 

Steps

  1. Add or identify a new user account- You can create a new user and assign it to a group with the command  useradd -m -g <groupname> <username>
  2. Confirm that the account has read/write rights to the FME Server System Share and the FME Server install directory 
  3. Change the owner of all files and folders located under Logs to allow the new account to write to the FME Server log directories.
  4. Edit the startServer.sh and stopServer.sh script to replace all the super user “su” references from default “fmeserver” to the said account
  5. Optionally, change file ownership and super user references from default “fmeserver” to the said account if Systemd scripts or SysV scripts are configured to run at system start-up

 

Disabling FME Servers NGINX reverse proxy in favor of your own

If you have a Native reverse proxy already setup and would like to use it instead of the Nginx reverse proxy shipped with FME Server, we can disable the Nginx proxy. 

Installing proxies on all the FME Server Web Applications in a fault-tolerant installation may be redundant and might increases complexity and points of failure. You can follow these steps to remove NGINX after installation.

Steps

  1.  Remove the below line [loopback address] from the /opt/fmeserver/Utilities/tomcat/conf/server.xml file to allow traffic from outside of the machine. 
    address="127.0.0.1" 

  2. Optionally, replace Connector port="8080" to 80/any port number if required.

  3. Run the following commands to stop, uninstall NGINX and remove the configuration files and from the system

    1. sudo systemctl stop nginx

    2. sudo apt-get remove nginx nginx-common

    3. sudo apt-get purge nginx nginx-common

    4. sudo apt-get autoremove

    5. Reboot the host.

 

Moving the Engines to a new directory

FME Server engines can’t be installed in a different directory, however, it is possible to move the engines to a new directory after installation. The steps are outlined below.

Steps

  1. Install FME Server with Engine
  2. Stop FME Server
  3. Move Engine directory  
    1. cp -R  /opt/fme-engine-2022 /EngineDirectory
  4. Remove old Engine
    1. rm -rf /opt/fme-engine-2022
  5. Edit the <FMEServerDir>\Server\processMonitorConfigEngines.txt file:
    1. Under the Admin section at the bottom of the file, add the following line: NODE_OVERWRITE=true
    2. Change TEMPLATE_START_ENGINE to use the new directory. 
      1. TEMPLATE_START_ENGINE="/EngineDirectory/fme-engine-2022/fme
  6. Start FME Server

 

Starting and Stopping FME Server

FME Server provides a template you can use for setting up the FME Server processes as services. These not only provide a method for starting the services on boot, but also allow you to restart an FME Server service in the event of a crash. This is also a location you can add custom variables such as FME_TEMP and change the owner starting the services.

 

 Common Questions

What Mix and Match( win / Linux) options are available?
You should be able to install any OS combination as Server core/Engines in a Distributed or a Fault-tolerant environment. A common setup is a Linux distributed engine with a Windows core server distributed installation. 

Does Windows IWA / SAML, Azure AD work on FME Server?
Yes, all of the Authentication Services IWA, SAML, and Azure AD work on Linux installations.

Do readers or workspace connections with IWA work?
No, unfortunately, there is no way to allow the engines to work on behalf of a windows user or service account.

I have Postgres already installed on my machine, will an express version work?
Yes, FME server should be able to pick up the existing Postgres installation and use it, but only if it was installed from the system package and was not manually installed from a direct Postgres download or another source.

Do you support CentOS Steam, Red Hat 7 and Centos 7?
We currently support Red Hat 7 and CentOS 7. However, we do not have plans to support CentOS Steam. Please though let us know if this is important for your organization.

 

Documentation Links

System Requirements
Provide a Remote File System for the FME Server System Share
Silent Installation
Uninstalling

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.