使用Supervisor搭建Systemd Free的Mastodon实例

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是无能。

这次我尝试搭建了一个Mastodon实例。

https://eyes4you.org/
(Vultr的SMTP端口开放尚未收到支持团队的回复,因此实际上目前没有人可以注册。预计几天内可以注册。截至2023年8月20日晚上9点30分)

最初的问题

Mastodon是基于Systemd设计的,因此运行Mastodon的守护进程文件只为Systemd准备了。

环境:Devuan SysVinit
前提条件:已完成Mastodon的设置向导

这三个是mastodon-web, mastodon-sidekiq, mastodon-streaming。

因此,通过使用Supervisor,守护进程文件可以在Supervisor下运行,这是一个非常方便的软件。最初的设计可能是一个进程监控工具,随着Systemd的普及,它可能产生了不同的可用性。

http://supervisord.org/

首先,让我们安装Supervisor。

sudo apt install supervisor

由于会在/etc/supervisor中创建配置文件,因此这次我们随意创建一个名为mastodon.conf的文件,并写入以下语法。

[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

可能需要更改的部分已用红色字体标出。

请将每个守护进程更改为适当的目录等。

然后,使用supervisorctl start all应该会启动所有服务。
如果对Mastodon文件进行了更改,请不要忘记restart all

接下来,请配置Apache或Nginx以引用Mastodon的目录。

结束。

参考文献

Mastodon的安装指南这里很清楚
https://zenn.dev/hashito/articles/caa579a9aa8b4f
https://vpslife.server-memo.net/mastodon_install/

这里写的Supervisor语法无法运行,所以我尝试将其更改为现代版本(2023年...)。

Alternative Server Components

最后

我曾尝试将这个守护进程文件更改为SysVinit版本,但最终放弃了。
然后,当我查看Systemd Free的Artix的守护进程文件时,发现了Supervisor的字符串,因此有了这次的尝试。

考虑到有了Supervisor,基本上可以替换任何守护进程文件,这真是太方便了...。
而且,就像这次一样,三个守护进程文件只需一个就能全部完成,因此在创建管理多个进程的软件或服务时,可以轻松地通过Supervisor统一启动和停止,非常方便。

结束!

Related Posts