Queue worker setup ================== This document explains how to run Laravel queue workers for Skinbase and suggested Supervisor / systemd configs included in `deploy/`. 1) Choose a queue driver ------------------------ Pick a driver in your `.env`, for example using the database driver (simple to run locally): ``` QUEUE_CONNECTION=database ``` Or use Redis for production: ``` QUEUE_CONNECTION=redis ``` 2) Database queue (if using database driver) ------------------------------------------- Create the jobs table and run migrations: ```bash php artisan queue:table php artisan migrate ``` 3) Supervisor (recommended for many setups) ------------------------------------------- We provide an example Supervisor config at `deploy/supervisor/skinbase-queue.conf`. To use it on a Debian/Ubuntu server: ```bash # copy the file to supervisor's config directory sudo cp deploy/supervisor/skinbase-queue.conf /etc/supervisor/conf.d/skinbase-queue.conf # make sure the logs dir exists sudo mkdir -p /var/log/skinbase sudo chown www-data:www-data /var/log/skinbase # tell supervisor to reload configs and start sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start skinbase-queue # check status sudo supervisorctl status skinbase-queue ``` Adjust the `command` and `user` in the conf to match your deployment (path to PHP, project root and user). 4) systemd alternative ---------------------- If you prefer systemd, an example unit is at `deploy/systemd/skinbase-queue.service`. ```bash sudo cp deploy/systemd/skinbase-queue.service /etc/systemd/system/skinbase-queue.service sudo systemctl daemon-reload sudo systemctl enable --now skinbase-queue.service sudo systemctl status skinbase-queue.service ``` Adjust `WorkingDirectory` and `User` in the unit to match your deployment. 5) Helpful artisan commands --------------------------- - Start a one-off worker (foreground): ```bash php artisan queue:work --sleep=3 --tries=3 ``` - Restart all workers gracefully (useful after deployments): ```bash php artisan queue:restart ``` - Inspect failed jobs: ```bash php artisan queue:failed php artisan queue:retry {id} php artisan queue:flush ``` 6) Logging & monitoring ----------------------- - Supervisor example logs to `/var/log/skinbase/queue.log` (see `deploy/supervisor/skinbase-queue.conf`). - Use `journalctl -u skinbase-queue` for systemd logs. 7) Notes and troubleshooting --------------------------- - Ensure `QUEUE_CONNECTION` in `.env` matches the driver you've configured. - If using `database` driver, the `jobs` and `failed_jobs` tables must exist. - The mailable used for contact submissions is queued; if the queue worker is not running mails will accumulate in the queue table (or Redis). Questions or prefer a different process manager? Tell me your target host and I can produce exact commands tailored to it.