# Installing Supervisor

Supervisor is a process control system used to ensure that the [Laravel Queues](https://laravel.com/docs/5.5/queues) used by Elentra are running. You must install and configure Supervisor on any environment running Elentra, but doing the following:

1. Install the required Supervisor package:

   ```
   yum install supervisor
   systemctl enable supervisord
   systemctl start supervisord
   ```
2. Edit the main configuration file at `/etc/supervisord.conf` and make the following changes to allow control over Supervisor by non-root users.\
   \
   Modify the `[unix_http_server]` section\
   \
   Set the value of `chmod` to `0770` in order give access users who are in the same group and then add a new option called `chown` and set it to the user `nobody` and group `apache`. If Apache is not running as the group `apache`, please substitute this accordingly.

   ```
   [unix_http_server]
   file=/var/run/supervisor.sock   ; (the path to the socket file)
   chmod=0770                      ; sockef file mode (default 0700)
   chown=nobody:apache
   ```

   Modify the `[supervisorctl]` section\
   \
   Supervisor must be configured to communicate over a Unix socket.

   ```
   [supervisorctl]
   serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
   ```
3. Add the `staging` and `production` users to the `apache` group.

   ```
   usermod -G apache -a production
   usermod -G apache -a staging
   ```
4. Create a new file in the `/etc/supervisor.d` directory called `elentra.ini`, and use the following template snippet as a reference to create your own file.<br>

   Please make sure that you have the correct path in **`command`** and **`stdout_logfile`**, and that **`user`** is the correct system account that your existing cron jobs are run as.

   ```
   [program:staging]
   process_name=%(program_name)s_%(process_num)02d
   command=php /var/www/vhosts/staging.elentra.med.university.edu/current/www-root/core/library/vendor/elentrapackages/elentra-1x-api/artisan queue:work --queue=high,emails,default,low --env=staging
   autostart=true
   autorestart=true
   user=staging
   numprocs=1
   redirect_stderr=true
   stdout_logfile=/var/www/vhosts/staging.elentra.med.university.edu/storage/logs/worker.log

   [program:production]
   process_name=%(program_name)s_%(process_num)02d
   command=php /var/www/vhosts/elentra.med.university.edu/current/www-root/core/library/vendor/elentrapackages/elentra-1x-api/artisan queue:work --queue=high,emails,default,low --env=production
   autostart=true
   autorestart=true
   user=production
   numprocs=1
   redirect_stderr=true
   stdout_logfile=/var/www/vhosts/elentra.med.university.edu/storage/logs/worker.log

   [group:elentra]
   programs=staging,production
   ```
5. Restart Supervisor:

   ```
   systemctl restart supervisord
   ```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.elentra.org/technical/administrators/application-server/installing-supervisor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
