Daemons
Learn how to configure and manage background processes on your Forge server.
Overview
Powered by Supervisor, daemons are used to keep long-running scripts alive. For instance, you could start a daemon to keep a ReactPHP application running. If the process stops executing, Supervisor will automatically restart the process.
Configuring Daemons
When creating a new daemon you need to provide Forge with the following information:
Command: The command that should be run by the daemon. For example: php artisan websockets:serve
.
User: The operating system user that should be used to invoke the command. By default, the forge
user will be used.
Directory: The directory in which to run your command from. This can be left empty.
Processes: This option determines how many instances of the process should be kept running.
Start Seconds: The total number of seconds the program must stay running in order to consider the start successful.
Stop Seconds: The number of seconds Supervisor will allow for the daemon to gracefully stop before forced termination.
Stop Signal: The signal used to kill the program when a stop is requested.
Manually Restarting Daemons
You may manually restart a daemon using sudo -S supervisorctl restart daemon-{id}:*
, where {id}
is the daemon’s ID. For example, if the daemon’s ID is 65654
you may restart it by running sudo -S supervisorctl restart daemon-65654:*
.
You may also run this command within your application’s deployment script to restart the daemon during a deployment.
Log Files
Forge automatically configures your daemon to write to its own log file. Logs can be found within the /home/forge/.forge/
directory. Log files are named daemon-*.log
.
If you are using Forge’s user isolation features, you should navigate to the .forge
directory within the /home/{username}
directory based on the user that the process belongs to in order to locate the daemon’s log files.
Circle Permissions
You may grant a circle member authority to create and manage daemons by granting the server:create-daemons
and server:delete-daemons
permissions.