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.

User Isolation

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.