Server¶
When run as a service, InEngine runs scheduled commands in the background and actively listens for commands to be queued.
Running the Server¶
The server can be run in a variety of ways.
In the Foreground¶
Running the server from the CommandLine is useful for debugging or local development:
inengine.exe -s
It can also be run on Mac and Linux with Mono via a shell wrapper script:
./inengine -s
In ASP.NET¶
The server can be run in Global.asax.cs:
using System.Web; using InEngine.Core; namespace MyWebApp { public class Global : HttpApplication { public ServerHost ServerHost { get; set; } protected void Application_Start() { var settings = InEngineSettings.Make(); ServerHost = new ServerHost() { MailSettings = settings.Mail, QueueSettings = settings.Queue, }; } protected void Application_End() { ServerHost.Dispose(); } } }
On Windows as a Service¶
Run the Install.ps1 PowerShell script in the InEngine directory to install the InEngine as a service. The script needs to be run as an administrator. The script will register the service at the location where the script is run - i.e. put the files where you want them installed before running the installation script.
ps Install.ps1
Simply run the Uninstall.ps1 script with elevated permissions to remove the service.
ps Uninstall.ps1
On Linux with Supervisor¶
Supervisor is a process control system for Linux. It has extensive documentation, but the following should be enough to get started.
Installing Supervisor¶
This command installs Supervisor on Ubuntu:
sudo apt-get install supervisor
Configuring Supervisor¶
Supervisor configuration files are stored in the /etc/supervisor/conf.d directory. Multiple files can be created in this directory to specify different programs, or multiple instances of the same program, for Supervisor to monitor. Copy this sample config into a file called /etc/supervisor/conf.d/inengine-scheduler.conf.
[program:inengine] process_name=%(program_name)s_%(process_num)02d directory=/path/to/inengine command=mono inengine.exe -s autostart=true autorestart=true user=InEngine numprocs=1 redirect_stderr=true stdout_logfile=./inengine.log
Starting Supervisor¶
Whenever a configuration change happens to files in the Supervisor config files, Supervisor needs to be instructed to reload its configuration.
sudo supervisorctl reread sudo supervisorctl update
Now, simply start the server workers with the supervisorctl program:
sudo supervisorctl start inengine:*
In a Container with Docker¶
Install Docker first, then pull the ethanhann/inengine image:
docker pull ethanhann/inengine:latest
Now run InEngine in server mode:
docker run --rm -i ethanhann/inengine:latest -s