redashをsupervisorctlで起動するときに発生するエラーへの対応

1. Error: .ini file does not include supervisorctl section

/opt/redash/supervisordsupervisorctl start allを実行すると、Error: .ini file does not include supervisorctl sectionとエラーが発生する。

色々紛らわしいのだが、.iniは、supervisord.confと読み替えて差し支えない。
supervisorctlが定義されていないと言われるので、supervisord.confに追記する。今回は空行で追加した。

[supervisorctl]
[supervisord]
nodaemon=false
logfile=/opt/redash/logs/supervisord.log
pidfile=/opt/redash/supervisord/supervisord.pid
directory=/opt/redash/current

2. http://127.0.0.1:19001 refused connection

/opt/redash/supervisordsupervisorctl start allを実行すると、http://127.0.0.1:19001 refused connectionとエラーが発生する。

supervisordが起動していないことが原因。まずは起動してあげる。

# supervisord -c supervisord.conf
# supervisorctl start all

3. FATAL: role “root” does not exist

api_error.logOperationalError: (psycopg2.OperationalError) FATAL: role "root" does not existというエラーが発生している。

postgresqlに、rootロールがないというエラーなので、roleを作成してあげる。

su postgres
psql
postgres=# CREATE ROLE root LOGIN SUPERUSER PASSWORD 'root';
postgres=# \q

4. you have to set the C_FORCE_ROOT environment variable

celery_error.logに次のエラーが発生していた。
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).

対応するために、/opt/redash/current/redash/worker.pyを編集する。

+++ from celery import Celery,platforms
--- from celery import Celery
+++ platforms.C_FORCE_ROOT = True
celery = Celery('redash',
                broker=settings.CELERY_BROKER,
                include='redash.tasks')