Created by hww3. Last updated by hww3,
4 years ago. Version #14.
FinServe is a simple web server which can serve Fins applications. Primarily intended as a development tool, FinServe is also useful when fronted by a full web server such as Apache or Roxen.
FinServe is bundled with the Fins framework, and is run using the following command line:
pike -x fins start [-p portnum|--port=portnum|--hilfe] [-s ram|file|sqlite|--session-manager=ram|file|sqlite [-l storage_path|--session-storage-location=storage_path]] [-c|--config configname] [--local-network=CIDR] [-d] -a appname
Ports and URLs
If you specify a port number, FinServe will start an HTTP listener on that port (the default is 8080). If you access this port (called the administrative port) using the ip address of your server, or using a hostname that isn't some application's specified url (see below), you will get an informational page that describes the current version of FinServe, along with information about applcations that are currently running in-process. Note that this administrative page is only available via requests from the localhost or networks specified using the --local-network option.
Each application may specify one or more ports to open for that application (see [ create
]). If any are specified, that specific application will be served from that port. Each application may also be accessed via the administrative port using name based virtual hosting
, in which case the hostname used to access FinServe will be used to determine the application to serve. For details of how hostnames are mapped to applications, see the following paragraph.
URLs and Name-based virtual hosting
Fins will attempt to determine an appropriate URL for each application, used for constructing redirects as well as for determining which application to serve a request when using name based virtual hosting on the administrative port. Fins will apply the following algorithm:
- If the url setting in the web section of an application's config file is set, then this will be used as the application's canonical url.
- If one or more ports have been opened for the application, the last one opened will be used and either the bound ip's hostname or the hostname of the machine will be used to generate a url.
- If the use_xip_io setting in the web section of the config file is set, then the hostname portion of the application's url be appname-~~configname~~-my_ip_address.xip.io. See http://www.xip.io for additional details of the dns service provided by xip.io.
- Otherwise, fins will attempt to look up the hostname of the server. In this case, a warning will be printed to the debug log indicating that this situation may produce undesired results.
In any case, a message will be printed to the log indicating the URL(s) that may be used to access an application.
Hilfe and Interactive Fins
If you specify the "--hilfe" option, FinServe will load the application and drop you to an interactive Pike session. The Fins application will be loaded and made available as the variable "application". From there, you may access the model, view and controller directly, which is useful for debugging the model and many other tasks.
If you have the Protocols.DNS_SD module, you'll get a Bonjour Bookmark in your browser which supports Bonjour (Rendezvous), such as Safari or Camino.
When using Pike 7.9 or higher, FinServe supports Multi-Tenant
mode, which allows multiple applications to be hosted from within a single process. Isolation between applications is quite good, and you can even run multiple copies of the same application (using different configurations).
The command line option -d
causes FinServe to run in daemon mode (not available on Windows). When starting in daemon mode, FinServe will detach from the console and redirect its standard out and standard error streams to a log file (finserve.log, by default, specified using the -l option). Additionally, each application should have a logging configuration that generates an application specific debug log file.
The following configuration file values are used by FinServe, describing the default values:
# defaults to ram, options include sqlite or file
# used for file or sqlite storage, this is the path
# to the database file or file storage location
# timeout period for sessions, in seconds
# default port number to listen on