Manifold Server, called Server for short, is a read-only, parallel, spatial database server that also includes a TCP data sharing server, an HTTP map server and WMS server. This topic provides an overview of Manifold Server with installation, activation, and launching instructions.
Server can run in three modes:
Manifold Server is built into Release 9 Universal edition and Release 9 Server edition as follows:
Manifold Server is not a part of Manifold 9 Professional edition, Manifold Viewer, or Manifold's SQL for ArcGIS® Pro product. Although those products do not install Server, they can connect to Manifold Server as clients, to use the data served by Server.
Server can run on a machine at the same time as a regular Manifold session. When a Manifold 9 Server has been installed, multiple Server instances can run at the same time on the same machine, with each Server instance sharing out a different .map file. The limited version of Server installed by Manifold 9 Universal can run only a single Server instance on the server machine. Running as a TCP server, Server is by far the easiest spatial database server to install, load, launch, manage, and use, and running as an HTTP server, Server is by far the easiest way to publish GIS displays for browsing on Internet.
Universal edition is limited to 20 TCP Server simultaneous connections and to 100 HTTP Server simultaneous connections. The number of HTTP Server connections allowed with Universal edition is larger because browsers will often launch multiple connections from a single session.
To use the Manage Services dialog, a Server license must be installed for all users. If the license is not installed for all users, it will not be possible to run new services from the dialog. Check that setting in the Help - About dialog to verify that the license has been installed for all users.
Manifold 9 Universal edition or Manifold 9 Server edition must be installed and activated on the server machine before Server can be used. Manifold 9 Universal edition and Manifold 9 Server edition automatically install Manifold Server as part of the installation. Manifold 9 Professional edition does not install Server.
Installing and Activating Server
A typical Manifold installation will install a variety of files in the Manifold installation folder:
Server appears as manifoldsrv.exe in the installation folder of a Manifold Release 9 Universal installation.
The manifold.exe executable in the installation folder is a regular Manifold application. Launch manifold.exe to run Manifold in the usual way, for example, to work with projects in the Manifold desktop or to run Manifold as a client that uses data from Server. A regular Manifold session can run on a server machine at the same time as Server, so long as the two different sessions do not open the same .map file directly. The regular Manifold session could connect to the Server to use the contents of a .map file launched with Server.
Activating Manifold on a machine also activates Manifold Server on that machine. The same license allows launching both Server instances and also regular desktop sessions of Manifold on that machine.
If Manifold has not yet been activated on the server machine, launch Manifold in the usual way by double-clicking the manifold.exe executable. That will raise the activation dialog to allow entering a Release 9 Universal edition or Release 9 Server serial number. You can then close Manifold and proceed with launching Server.
When activating a Manifold 9 Server license, launch Manifold with administrator privileges (right-click and choose Run as administrator), and make sure to check the Install for all users (admin) box to activate the license for all users.
Server can be launched using a single command line in a Command Prompt window. Server can be launched from a command prompt window using either a Manifold Universal or a Manifold Server license.
If the computer being used does not have a Manifold 9 Universal license or Manifold 9 Server license activated, manifoldsrv will exit without prompting to activate the license. Activate the license using the main manifold.exe application by launching a desktop session of Manifold in the usual way.
When launched from a command prompt, Server runs as long as the Command Prompt window stays open, and we have not logged out, and we have not stopped Server in the Command Prompt window with a Ctrl-C. We can continue working on the computer running Server using that same user login. Users running Server on their machines will usually just minimize the Command Prompt window to the taskbar and then keep running other programs. If we do not want to leave a server machine with an open login, we can lock the screen by simultaneously pressing the Windows logo key and L.
Manifold Server launched from a Command Prompt window automatically stops if the console window attached to it is closed, if the Windows user who launched manifoldsrv starts logging off Windows, or if the computer system starts shutting down.
A Manifold 9 Server license also allows Server to be launched as a Windows service. A Manifold 9 Universal license cannot launch Server as a Windows service.
A regular Manifold interactive session launched with administrator privileges (right-click and choose Run as administrator) is used to control Server instances when run as Windows services. Launch Manifold interactively to get access to the Tools - Manage Services dialog that allows adding, starting, stopping, and otherwise managing Server instances running as services.
Windows Firewall wants to protect users from themselves by preventing programs from accessing ports. If you know how to work Firewall, you can easily give Server access to the ports it uses. If your Firewall skills are rusty, it is easier to simply launch Server at least once from a Command Prompt window as described above, so you can press the Allow access button and let Windows Firewall configure itself.
Getting Server Ready
The above procedure need be done only once for a new Server installation, to verify that the license has been installed for all users, and to allow access through Windows Firewall. If the Manifold installation is updated, launch Server again from a Command Prompt window to once again configure Windows Firewall. Or, learn how to use Windows Firewall to open the ports that will be used for any Manifold Server installation.
When running Server as an HTTP server from a portable installation, if the manifoldsrv.exe executable file is in a different folder than previously used, it must be added to the exceptions list for Windows Defender Firewall. See the instructions at the end of this topic for adding Server as an exception to Windows Defender Firewall.
See the Tools - Manage Services topic for details on starting, stopping, and otherwise managing Server instances. Watch the new 10 Minute Tutorial - Manage Services video to see the new Manage Services dialog in action. The topic and video use a TCP server as an example. Procedures are exactly the same for an HTTP server.
Manifold clients connect to Server running as a TCP server by creating a data source just as they would for any database. Any Manifold edition can connect as a client, including Manifold Professional, Manifold Universal, Manifold Server, Manifold Viewer, and SQL for ArcGIS® Pro.
Multiple different Manifold sessions on the same machine can connect to the same Server, just as multiple different Manifold sessions on different machines can connect to the same Server.
Disconnect a client by deleting the Server data source in a project, or by closing the project or the Manifold session.
Keep in mind that the Server data source is read-only. For greater interactive flexibility, copy drawings, images, labels, and maps (do not copy their tables, just the drawings, images, labels or maps) and paste into the main part of the Project. The pasted components will automatically have links in their properties back to the originating tables in the Server data source, but the pasted components will exist in the read/write portion of the project. That will enable styling of drawings, the ability to turn labels off and on in maps and so on.
Shutting down Server when clients are connect will generate a Server Disconnected message on the client machines. Server administrators should use a messaging or chat application to send out warnings to possible client users in their organization before shutting down Server.
Internet browsers connect to a map served by Server running as an HTTP server by using a URL that has the IP address (or a domain that resolves to that IP address) used for that Server instance. For example, if we have launched Server as an HTTP server on a computer that has an IP address of 192.168.1.99 we can enter a URL of http://192.168.1.99 into our browser to visit the web page Server generates.
When launching Server from a command line in a Command Prompt window, the following syntax applies.
manifoldsrv [<options>] <file>
File names or paths that use spaces should be wrapped with double quote " characters.
Default values are used for any options not explicitly specified. The following options are also used in the Options box in the Service dialog when running Server as a service using Tools - Manage Services in Manifold Server licenses.
-addr:xxx |
Network interface to listen on. Default: primary network interface |
-component:xxx |
Used only with HTTP server. The name of the served component, a single map, drawing, image, or labels component. Enclose component names that have spaces with double " quote characters, as in
-component:"Cities and Provinces of Mexico"
The default component name used is Main if no component name is explicitly specified. |
-connections:xxx |
Maximum number of connections. Use 0 for no limit. Default: 20 More than 20 connections when using TCP Server require a Manifold 9 Server license. More than 100 connections when using HTTP Server require a Manifold 9 Server license. |
-cx:xxx -cy:xxx |
Width (cx)
and height (cy) in
pixels of the image to render on the web page. Cannot exceed 4096. If no specified,
the default height and width is 800
by 800 pixels.
If only cx or cy is specified, the image will have the width and height of that specified number of pixels, providing a quick way to set square image sizes by specifying only one parameter. Example: -cx:800 -cy:600 specifies an image size 800 pixels wide by 600 pixels high. Example: -cx:400 -cy:600 specifies an image size 400 pixels wide by 600 pixels high. Example: -cx:500 specifies an image size 500 pixels wide and 500 pixels high. Example: -cy:450 specifies an image size 450 pixels wide and 450 pixels high. |
-logfolder:xxx |
Specify file to use for a log file instead of the default location. |
-memory:xxx |
Memory size in GB
to use for system cache. Default if not specified is 4 GB. Memory size for
system can be set as low as 1
GB. Manifold server ignores the amount
of memory to use for system cache size specified in Tools - Options and instead
allows specifying it with the
-memory:xxx command-line parameter.
(Server ignores the user value set because server instances frequently are run using specialized accounts and accessing interactively-set user options for these accounts might be hard or even impossible.) |
-password:xxx |
Used only with TCP server. Optional password for access. Ignored if no -user name is specified. If not specified, any or no password can be used. |
-port:xxx |
Port to listen on.
Default for TCP: 9099.
Default for HTTP: 80.
Internet browsers default to using port 80 for HTTP. When running as an HTTP server, using the default port allows any browser to connect by just using the IP address as the URL, for example, http://192.168.1.99. You can use other ports by specifiying the -port:xxx command line option, for example, -port:8080 to use port 8080. Using the non-default port will require use of a URL that specifies the port, such as http://192.168.1.99:8080.
See the comments on specifying ports in the Notes section at the end of this topic. |
-service |
Launch the Server instance as a Windows service. Requires administrator privileges. Requires a Manifold 9 Server license. |
-scripts:xxx |
Used only with TCP
server. Control availability of scripts with either an on
or off (the
default) setting:
-scripts:on - Allow running scripts. This currently applies to calling script functions in queries, computed fields and constraints. In the future it will also apply to running script components.
-scripts:off - Disaallow running scripts (the default).
|
-type:xxx |
Server type. Specifying -type:http runs the HTTP server and specifying -type:tcp runs the TCP server. The default is running as a TCP server. |
-urlbase:xxx |
Specifies the URL
base to use by the Javascript control that generates the web site.
The default is /.
This option is useful when the HTTP server is used
together with a general-purpose web server.
Suppose, for example, the image generated by server is to be used within a site that is supposed to have a URL of https://mydomain.com/parcels/. Without using the urlbase option the HTTP control would not be aware that is is being run from within a web server(or proxied) and the URL of the image would end up being /map?, which would translate to https://mydomain.com/map?... with similarly wrong URLs for the icons used. Using an option of -urlbase:https://mydomain.com/parcels/ would translate to https://mydomain.com/parcels/map?... and so the HTTP control will work correctly. |
-user:xxx |
Used only with TCP server. Optional user login name. If no login name is specified, any login name or no login name can be used. |
-workers:xxx |
Number of worker threads
per connection, from 1
to 128. Default:
4
Used only with TCP server. Threads used by the HTTP server are organized differently from threads used by the TCP server: the number of threads for the HTTP server is managed automatically. |
If no IP address is specified, Server will pick an IP address to use from the network connections currently available. See all available IP addresses by doing an ipconfig command in the Command Prompt window prior to launching Server.
Systems often have multiple networks running, including virtual networks for services such as VPNs in addition to physical networks such as WiFi adaptors or Bluetooth networks, so do not assume that the IP address Server picks as the primary is the one you want it to use. Explicitly specify which IP address you would like Server to use instead of letting Server pick from those available. To tell Server to listen on the IP address of an Ethernet or WiFi connection, specify that IP address using the -addr: option.
Port 9099 is the default port for Manifold Server. It is currently unassigned by IANA and will be requested by Manifold when Manifold Server is issued in a Base build.
To launch a Server instance as a Windows service, a more convenient way than using the -service option is to use the new Tools - Manage Services dialog.
In a Command Prompt window, launch Manifold Server using a .map file called standard layers.map, using an IP address of 192.168.2.12, the default port of 9099, up to 20 connections (the default), and 6 worker threads per connection:
manifoldsrv -addr:192.168.2.12 -workers:6 "C:\mfd\projects\standard layers.map"
Any options not explicitly set when launching Server will remain at their default values. If no user login name or password are specified, none will be required for connections.
manifoldsrv writes log files, similar to how regular Manifold sessions write log files. The manifoldsrv log files are named xxx-srv.log, extended to xxx-srv-yyy.log for multiple instances of manifoldsrv running at the same time, to distinguish them from the log files for Manifold. manifoldsrv logs each accepted and closed connection as well as messages generated by worker threads that process requests.
The -logfolder:xxx allows specifying a file to use for a logfile instead of the default log file.
Credentials encryption - Credentials are stored in database and other data sources in plain text. Manifold expects to provide encryption options so data sources can be provided with Server without exposing credentials.
TCP - Manifold clients connect to Server running as a TCP server through TCP protocol, a standard part of networking.
Exclusive use - A Manifold project being shared by Server cannot be opened or used by a different Server session or by a regular Manifold desktop session. To update that project, the Server session using it must be shut down. Server cannot share a project that is in use in a regular Manifold desktop session or which is being provided by a different Server session.
Exclusive binding - For security, Server binds to the network interface in exclusive mode.
Console title - When launched in a Command Prompt window, Server sets the console title to Server - addr:port - filename. This hides sensitive information like user logins and passwords and it also shows connection information even if that was not spelled out in the command line. The console window will show the server type (HTTP or TCP) in the window caption when Server is run in a console window.
Non-routable IP addresses - The examples in this documentation use non-routable IP addresses beginning with 192.... Such IP addresses may be visible on your local network, but they cannot be visited across Internet. When connecting to Server through the Internet, either for sharing data using the TCP server or for publishing maps using the HTTP server, the computer should have a static IP address that is routable (visible over Internet), like 20.81.111.85, and the Server instances that are launched should use that IP address.
File - Create - New Data Source