Levantando una instancia de Mastodon sin Systemd usando Supervisor
Hola, soy un inútil.
Esta vez, he intentado levantar una instancia de Mastodon.
https://eyes4you.org/
(Todavía no he recibido noticias del soporte de Vultr sobre la apertura del puerto SMTP, y los correos no llegan, así que, en la práctica, nadie puede registrarse todavía. Debería ser posible registrarse en unos días. A partir del 20/08/2023 a las 9:30 PM)
Problema inicial
Dado que Mastodon está diseñado con Systemd como requisito previo, los archivos de demonio para ejecutar Mastodon solo están disponibles para Systemd.
Entorno: Devuan SysVinit
Prerrequisito: Haber completado el asistente de configuración de Mastodon
Estos son los tres: mastodon-web, mastodon-sidekiq, mastodon-streaming.
Por lo tanto, al usar Supervisor, los archivos de demonio pueden ejecutarse con Supervisor, lo que lo convierte en un software útil. Probablemente, su diseño original fue como una herramienta de monitoreo de procesos, y con la popularización de Systemd, surgió una diferente disponibilidad.
Primero, instalemos Supervisor.
sudo apt install supervisor
Dado que los archivos de configuración se crean en /etc/supervisor, crearemos un archivo llamado mastodon.conf esta vez y escribiremos la siguiente sintaxis.
[group:mastodon]
programs=web,sidekiq,streaming
[program:web]
command=/usr/local/bin/bundle exec puma -C config/puma.rb
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/puma.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=RAILS_ENV=production,PORT=3000,LD_PRELOAD=libjemalloc.so
stopasgroup=true
[program:sidekiq]
command=/usr/local/bin/bundle exec sidekiq -c 25
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/sidekiq.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=RAILS_ENV=production,DB_POOL=25,MALLOC_ARENA_MAX=2,LD_PRELOAD=libjemalloc.so
stopasgroup=true
[program:streaming]
command=/usr/bin/node ./streaming
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/streaming.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=NODE_ENV=production,PORT=4000,STREAMING_CLUSTER_NUM=1
stopasgroup=true
Las partes que pueden necesitar cambios están en rojo.
Cambie cada demonio a los directorios apropiados, etc.
Después de eso, todo debería iniciarse con supervisorctl start all.
No olvide ejecutar restart all si realiza cambios en los archivos de Mastodon.
Finalmente, configure Apache o Nginx para que apunten al directorio de Mastodon.
Fin.
Referencias
Aquí la instalación de Mastodon es fácil de entender
https://zenn.dev/hashito/articles/caa579a9aa8b4f
https://vpslife.server-memo.net/mastodon_install/
La sintaxis de Supervisor escrita aquí no funcionó tal cual, así que la cambié a una versión más moderna (¡es 2023...!).
Finalmente
Intenté cambiar este archivo de demonio para SysVinit, pero me di por vencido.
Fue entonces cuando, al echar un vistazo a los archivos de demonio de Artix (Systemd Free), encontré la cadena 'Supervisor', lo que me llevó a esta solución.
Considerando que Supervisor puede reemplazar básicamente cualquier archivo de demonio, ¡qué conveniente es...!
Además, como en este caso, los tres archivos de demonio se pueden gestionar completamente con uno solo, lo que facilita enormemente el inicio y la detención de múltiples procesos con Supervisor al crear software o servicios que gestionan muchos procesos.
¡Fin!